Windows提供了一系列用于检测网络状态,监控计算机与其他主机之间会话的命令用户可以通过这些命令发现、诊断网络连接问题,发现和处理外部终端为非法访问计算机资源而创建的会话。

本文以以下3个命令为例,对命令的相关协议进行分析:(采用wireshark抓包)

1、ping

1.1抓包:




wireshark 抓包分析RTSP wiresharkicmp抓包分析_指定icmp数据包长度


wireshark 抓包分析RTSP wiresharkicmp抓包分析_icmp报文_02


1.2数据帧结构:

(观察第一个编号为 12333 的 Echo (ping) request 数据帧)


wireshark 抓包分析RTSP wiresharkicmp抓包分析_字段_03


如上图所示,可以看到这个数据帧的结构是:

Ethernet II

IP

ICMP

1.3观察 Ethernet II 数据帧的内容


wireshark 抓包分析RTSP wiresharkicmp抓包分析_字段_04


Ethernet II 数据帧的格式如下:

DA

SA

Type

Data

FCS

DA:

SA:

Type:

Data:

FCS:

1.4观察 IP 数据包的内容


wireshark 抓包分析RTSP wiresharkicmp抓包分析_指定icmp数据包长度_05


如上图所示,可以看到 IP 数据包的信息:

Version:

Header Length:

Time to live:

Protocol:

Source:

Destination: 36.152.44.96,目的 IP 地址。

1.5观察 ICMP 数据包内容


wireshark 抓包分析RTSP wiresharkicmp抓包分析_字段_06


ICMP 数据包的格式如下:


wireshark 抓包分析RTSP wiresharkicmp抓包分析_wireshark 抓包分析RTSP_07


Type:

一台主机向一个节点发送一个类型字段值为8的ICMP报文,如果途中没有异常(如果没有被路由丢弃,目标不回应ICMP或者传输失败),则目标返回类型字段值为0的ICMP报文,说明这台主机存在。

Code:

Checksum:

Identifier: 该字段有 2 个字节,用于匹配 Request/Reply 的标识符。

Seq Num: 该字段有 2 个字节,用于匹配 Request/Reply 的序列号。

Data:

2、tracert

2.1抓包


wireshark 抓包分析RTSP wiresharkicmp抓包分析_wireshark 抓包分析RTSP_08


wireshark 抓包分析RTSP wiresharkicmp抓包分析_指定icmp数据包长度_09


2.2 协议分析

由于tracrt命令的底层协议与ping的底层协议相同(都是ICMP),故不做具体分析。

3、nslookup

3.1抓包


wireshark 抓包分析RTSP wiresharkicmp抓包分析_字段_10


wireshark 抓包分析RTSP wiresharkicmp抓包分析_icmp端口_11


3.2数据帧结构


wireshark 抓包分析RTSP wiresharkicmp抓包分析_wireshark 抓包分析RTSP_12


如上图所示,这个数据帧的结构是:

(DNS为应用层协议,下层传输层采用UDP,再下层网络层是IP协议,然后是数据链路层的以太网帧.)

Ethernet II (已做分析)

IP (已做分析)

UDP

DNS

3.3 UDP数据帧分析


wireshark 抓包分析RTSP wiresharkicmp抓包分析_字段_13


可以看出格式如下:

SP:该字段占2个字节,源端口号为54064

DP:

Length:

Checksum:

3.4 DNS报文分析


wireshark 抓包分析RTSP wiresharkicmp抓包分析_字段_14


DNS报文结构为:


wireshark 抓包分析RTSP wiresharkicmp抓包分析_指定icmp数据包长度_15


第一个是Transaction ID为标识字段,2字节,用于辨别DNS应答报文是哪个请求报文的响应.图中报文标识数为:0x0002。

第二个是Flags标志字段,如图所示:


wireshark 抓包分析RTSP wiresharkicmp抓包分析_icmp端口_16


QR(1比特):查询/响应的标志位,1为响应,0为查询。

opcode(4比特):定义查询或响应的类型(若为0则表示是标准的,若为1则是反向的,若为2则是服务器状态请求)。

AA(1比特):授权回答的标志位。该位在响应报文中有效,1表示名字服务器是权限服务器(关于权限服务器以后再讨论)

TC(1比特):截断标志位。1表示响应已超过512字节并已被截断(依稀好像记得哪里提过这个截断和UDP有关,先记着)

RD(1比特):该位为1表示客户端希望得到递归回答(递归以后再讨论)

RA(1比特):只能在响应报文中置为1,表示可以得到递归响应。

zero(3比特):不说也知道都是0了,保留字段。

rcode(4比特):返回码,表示响应的差错状态,通常为0和3,各取值含义如下:

0:表示无差错, 1:表示格式差错 ,2:表示问题在域名服务器上,3; 表示域参照问题

4: 表示查询类型不支持 ,5: 表示在管理上被禁止 ,6 – 15: 表示保留

问题数、回答资源记录数、授权资源记录数、附加资源记录数:这四个字段都是两字节,分别对应下面的查询问题、回答、授权和附加信息部分的数量。在图中报文对应字段分别为1,0,0,0;

第七个是Queries为查询问题区域,其包含正在进行的查询信息。包含查询名(被查询主机名字的名字字段)、查询类型、查询类。图中报文查询名为:www.baidu.com,查询类型为:A(IPv4地址),查询类为:IN(Internet数据)。(观察报文发现图中报文仅有查询问题区域,故不做其他区域的分析)

总结与体会

通过此次实验,加深了对ping、tracert、nslookup等命令的理解,同时也让我更加熟练的掌握了相关命令的操作。通过对相关命令的底层协议进行分析,也加深了我对一系列网络管理和监控命令的工作原理的理解,总的来说,此次实验收获很多。