Windows提供了一系列用于检测网络状态,监控计算机与其他主机之间会话的命令用户可以通过这些命令发现、诊断网络连接问题,发现和处理外部终端为非法访问计算机资源而创建的会话。
本文以以下3个命令为例,对命令的相关协议进行分析:(采用wireshark抓包)
1、ping
1.1抓包:
![a4b2e7790b4ec79998dd56bbb1e6101d.png](https://img-blog.csdnimg.cn/img_convert/a4b2e7790b4ec79998dd56bbb1e6101d.png)
![fe8694a0498dc783fec6ce8cf5c14f02.png](https://img-blog.csdnimg.cn/img_convert/fe8694a0498dc783fec6ce8cf5c14f02.png)
1.2数据帧结构:
(观察第一个编号为 12333 的 Echo (ping) request 数据帧)
![1fc64d8f948f235ceea8e48e559d993d.png](https://img-blog.csdnimg.cn/img_convert/1fc64d8f948f235ceea8e48e559d993d.png)
如上图所示,可以看到这个数据帧的结构是:
Ethernet II |
---|
IP |
ICMP |
1.3观察 Ethernet II 数据帧的内容
![bd4530b6b913af2da226f18f03386c82.png](https://img-blog.csdnimg.cn/img_convert/bd4530b6b913af2da226f18f03386c82.png)
Ethernet II 数据帧的格式如下:
DA | SA | Type | Data | FCS |
---|
DA: 该字段有 6 个字节,表示目的 MAC 地址。如上图所示,目的 MAC 地址为 d0:76:e7:16:c0:a0。
SA: 该字段有 6 个字节,表示源 MAC 地址。如上图所示,源 MAC 地址为 64:5d:86:56:7d:5e。
Type: 该字段有 2 个字节,表示数据包的类型。如上图所示,类型的值为 0x0800,表示 Internet Protocol(IP)。
Data: 数据载荷。
FCS: 该字段有 4 个字节,表示帧校验序列,用于校验帧是否出错。该字段内容已被网络设备滤去,抓包软件已无法获取。
1.4观察 IP 数据包的内容
![9be157a276faa870fcbf3d3f8ca63378.png](https://img-blog.csdnimg.cn/img_convert/9be157a276faa870fcbf3d3f8ca63378.png)
如上图所示,可以看到 IP 数据包的信息:
Version: 4,表示 IPv4。
Header Length: 5, 表示 5 个以 32 bit 为单位的 word,即 20 bytes。
Time to live: 64, 生存时间。
Protocol: 1,表示 ICMP。
Source: 192.168.1.107,源 IP 地址。
Destination: 36.152.44.96,目的 IP 地址。
1.5观察 ICMP 数据包内容
![79679272fc6f71a5f4c248bfa2188051.png](https://img-blog.csdnimg.cn/img_convert/79679272fc6f71a5f4c248bfa2188051.png)
ICMP 数据包的格式如下:
![4ddaa368502dd2799514935e0c946392.png](https://img-blog.csdnimg.cn/img_convert/4ddaa368502dd2799514935e0c946392.png)
Type: 该字段有 1 个字节,表示特定类型的 ICMP 报文。
一台主机向一个节点发送一个类型字段值为8的ICMP报文,如果途中没有异常(如果没有被路由丢弃,目标不回应ICMP或者传输失败),则目标返回类型字段值为0的ICMP报文,说明这台主机存在。
Code: 该字段有 1 个字节,进一步细分 ICMP 的类型。如上图所示,Type 的值为 8,Code 的值为 0,表示回显请求。
Checksum: 该字段有 2 个字节,表示校验和。
Identifier: 该字段有 2 个字节,用于匹配 Request/Reply 的标识符。
Seq Num: 该字段有 2 个字节,用于匹配 Request/Reply 的序列号。
Data: 数据载荷。
2、tracert
2.1抓包
![ec95e3d8d0f44e166eeee2f6151c5da4.png](https://img-blog.csdnimg.cn/img_convert/ec95e3d8d0f44e166eeee2f6151c5da4.png)
![91878dafb6bf52e4a29ba279f84af98f.png](https://img-blog.csdnimg.cn/img_convert/91878dafb6bf52e4a29ba279f84af98f.png)
2.2 协议分析
由于tracrt命令的底层协议与ping的底层协议相同(都是ICMP),故不做具体分析。
3、nslookup
3.1抓包
![d0ae0d8231db31fecbd94ada909f0751.png](https://img-blog.csdnimg.cn/img_convert/d0ae0d8231db31fecbd94ada909f0751.png)
![56d5b4c9ecf9d7345d0f1a40c4b6f267.png](https://img-blog.csdnimg.cn/img_convert/56d5b4c9ecf9d7345d0f1a40c4b6f267.png)
3.2数据帧结构
![8efdef93ea88cb4842b4d82b824258cf.png](https://img-blog.csdnimg.cn/img_convert/8efdef93ea88cb4842b4d82b824258cf.png)
如上图所示,这个数据帧的结构是:
(DNS为应用层协议,下层传输层采用UDP,再下层网络层是IP协议,然后是数据链路层的以太网帧.)
Ethernet II (已做分析) |
---|
IP (已做分析) |
UDP |
DNS |
3.3 UDP数据帧分析
![a5b88290862bc3f72e627fe85a4ac889.png](https://img-blog.csdnimg.cn/img_convert/a5b88290862bc3f72e627fe85a4ac889.png)
可以看出格式如下:
SP:该字段占2个字节,源端口号为54064
DP: 该字段占2个字节,目的端口号为53
Length: 该字段占2个字节,长度,39bytes
Checksum: 该字段占2个字节,校验和
3.4 DNS报文分析
![31a21951349b6381a2a967c675d74e51.png](https://img-blog.csdnimg.cn/img_convert/31a21951349b6381a2a967c675d74e51.png)
DNS报文结构为:
![a1ecbb52cd6f78eeb43b86c89764a391.png](https://img-blog.csdnimg.cn/img_convert/a1ecbb52cd6f78eeb43b86c89764a391.png)
第一个是Transaction ID为标识字段,2字节,用于辨别DNS应答报文是哪个请求报文的响应.图中报文标识数为:0x0002。
第二个是Flags标志字段,如图所示:
![3dba138ed19e02672dba7b9553c575b4.png](https://img-blog.csdnimg.cn/img_convert/3dba138ed19e02672dba7b9553c575b4.png)
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等命令的理解,同时也让我更加熟练的掌握了相关命令的操作。通过对相关命令的底层协议进行分析,也加深了我对一系列网络管理和监控命令的工作原理的理解,总的来说,此次实验收获很多。