计算机网络——wirshark初体验

实验一

实验步骤

1.在 Wireshark 监视器中设置过滤条件。设置过滤条件为 icmp,筛选ICMP报文和IP数据包

wireshark数据包切片 wireshark显示分片_wireshark数据包切片


2. 在命令行输入ping baidu.com 同时开启wireshark抓包

wireshark数据包切片 wireshark显示分片_网络_02


3. 抓包结果如下

wireshark数据包切片 wireshark显示分片_网络_03

实验结果

1.解释IP数据报的首部

数据链路层

wireshark数据包切片 wireshark显示分片_服务器_04

内容

说明

Ethernet II

以太网协议版本 II

Source: Apple_de:1f:24

厂名:序号

(64:c7:53: de:1f:24)

网卡地址

Type: IPv4 (0x0800)

协议类型

网络层

wireshark数据包切片 wireshark显示分片_IP_05

内容

说明

Src: 10.22.35.213,

源地址

Dst: 220.181.38.251

目的地址

Version: 4

互联网协议版本

… 0101 = Header Length: 20 bytes (5)

帧头部长度

Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT)

差分服务字段(服务类型)

Total Length: 84

帧的总长度

Identification: 0x4117 (16663)

标识字段

Flags: 0x00

标记字段

Fragment Offset: 0

分段偏移量

Time to Live: 64

生存期 ITL

Protocol: ICMP (1)

上层协议

Header Checksum: 0x9383 [validation disabled]

头部数据的校验和

[Header checksum status: Unverified]

头部数据的校验和状态

Source Address: 10.22.35.213

源IP 地址

Destination Address: 220.181.38.251

目的IP 地址

2.对比 ICMP Echo 请求帧和回应帧

请求帧如图

wireshark数据包切片 wireshark显示分片_服务器_06


回应帧如图

wireshark数据包切片 wireshark显示分片_服务器_07

  1. 请求类型是8,代码是0,表示请求
    回应类型是0,代码是0,表示应答
  2. 回应和请求的Identifier (BE) 均为11040 8235,说明该回应是响应的该请求
3.改变ping的长度参数
  1. 长度大于一定数量才会分片,这里我指定长度为2000位.
  2. wireshark数据包切片 wireshark显示分片_服务器_08

  3. 抓包数据如图
  4. wireshark数据包切片 wireshark显示分片_计算机网络_09

  5. IP分报片情况

wireshark数据包切片 wireshark显示分片_wireshark数据包切片_10

  • 首先来看看数据包(IP包),按道理来说,当长度大于一定的长度的时候,IP数据包会实行分片传输,但是这里观察到Don't fragment: Not set More fragments: Not set都是为零,而且所有捕抓到的报文都是如此。所以带着这个疑问我去询问了老师,老师给的答案是操作系统的不同可能会导致不同的结果。
  • 虽然没有办法实验,但是按到理论上说,这里的Don't fragment:应该是为1的,表示可以分片。所以当ping需要的数据包大于一定长度时,ip是会分片发送的。

实验二

实验步骤

1.在 Wireshark 监视器中设置过滤条件。设置过滤条件为 icmp,筛选ICMP报文和IP数据包

wireshark数据包切片 wireshark显示分片_wireshark数据包切片


2. 在命令行输入traceroute baidu.com 同时开启wireshark抓包.

wireshark数据包切片 wireshark显示分片_IP_12


3. 抓包结果如图

wireshark数据包切片 wireshark显示分片_IP_13

实验结论

1. 解释ICMP 差错报文的结构
  1. ICMP差错报文的首部和IP数据报的首部类似,具体可以参考IP数据报首部. 这里我重点介绍ICMP的内容
Internet Control Message Protocol
    Type: 11 (Time-to-live exceeded)          //ICMP超时报文的type值是11,Time-to-live exceeded是生存时间超时
    Code: 0 (Time to live exceeded in transit)   //code的值有可能是1有可能是0,Time to live exceeded in transit表示路由器收到的ICMP数据报文的TTL值为0
    Checksum: 0xf4ff [correct]               //表示校验和是正确的
    [Checksum Status: Good]                //校验和状态是好的
    Unused: 00000000                         //未使用(全0)
    Internet Protocol Version 4, Src: 10.22.35.213, Dst: 220.181.38.251 //收到的IP数据报的一部分,包括IP首部以及数据报数据的前8个字节
2.描述 tracert 工作原理,结合 ICMP 报文记录画出数据交互示意图

tracert工作原理

  1. tracert从源地址发出一个UDP探测包到目的地址,并将TTL设置为1;
  2. 当路径上的第一个路由器收到这个数据包时,将TTL减1;
  3. 当TTL变为0时,包被丢弃,路由器向源地址发回一个ICMP超时通知(ICMP Time Exceeded Message),内含发送IP包的源地址,IP包的所有内容及路由器的IP地址;
  4. 当源地址收到该ICMP包时,显示这一跳的路由信息;
  5. 这个重复的动作一直持续到某个数据包抵达目的地,并每次重复时设置TTL加1;
  6. 直至目标地址收到探测数据包,由于tracert通过UDP数据包向不常见端口发送数据包,因此会收到「ICMP port unreachable」消息,故可判断到达目的地。
  7. 当源地址收到ICMP Port Unreachable包时停止traceroute。

由于MAC系统的差别,我抓包并没有抓到Unreached post信息,所以这里我就没法展示了(抱歉)

数据交互示意图

wireshark数据包切片 wireshark显示分片_计算机网络_14