Windows提供了一系列用于检测网络状态,监控计算机与其他主机之间会话的命令用户可以通过这些命令发现、诊断网络连接问题,发现和处理外部终端为非法访问计算机资源而创建的会话。
本文以以下3个命令为例,对命令的相关协议进行分析:(采用wireshark抓包)
1、ping
1.1抓包:
1.2数据帧结构:
(观察第一个编号为 12333 的 Echo (ping) request 数据帧)
如上图所示,可以看到这个数据帧的结构是:
Ethernet II |
IP |
ICMP |
1.3观察 Ethernet II 数据帧的内容
Ethernet II 数据帧的格式如下:
DA | SA | Type | Data | FCS |
DA:
SA:
Type:
Data:
FCS:
1.4观察 IP 数据包的内容
如上图所示,可以看到 IP 数据包的信息:
Version:
Header Length:
Time to live:
Protocol:
Source:
Destination: 36.152.44.96,目的 IP 地址。
1.5观察 ICMP 数据包内容
ICMP 数据包的格式如下:
Type:
一台主机向一个节点发送一个类型字段值为8的ICMP报文,如果途中没有异常(如果没有被路由丢弃,目标不回应ICMP或者传输失败),则目标返回类型字段值为0的ICMP报文,说明这台主机存在。
Code:
Checksum:
Identifier: 该字段有 2 个字节,用于匹配 Request/Reply 的标识符。
Seq Num: 该字段有 2 个字节,用于匹配 Request/Reply 的序列号。
Data:
2、tracert
2.1抓包
2.2 协议分析
由于tracrt命令的底层协议与ping的底层协议相同(都是ICMP),故不做具体分析。
3、nslookup
3.1抓包
3.2数据帧结构
如上图所示,这个数据帧的结构是:
(DNS为应用层协议,下层传输层采用UDP,再下层网络层是IP协议,然后是数据链路层的以太网帧.)
Ethernet II (已做分析) |
IP (已做分析) |
UDP |
DNS |
3.3 UDP数据帧分析
可以看出格式如下:
SP:该字段占2个字节,源端口号为54064
DP:
Length:
Checksum:
3.4 DNS报文分析
DNS报文结构为:
第一个是Transaction ID为标识字段,2字节,用于辨别DNS应答报文是哪个请求报文的响应.图中报文标识数为:0x0002。
第二个是Flags标志字段,如图所示:
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等命令的理解,同时也让我更加熟练的掌握了相关命令的操作。通过对相关命令的底层协议进行分析,也加深了我对一系列网络管理和监控命令的工作原理的理解,总的来说,此次实验收获很多。