计算机网络——wirshark初体验
实验一
实验步骤
1.在 Wireshark
监视器中设置过滤条件。设置过滤条件为 icmp
,筛选ICMP
报文和IP
数据包
2. 在命令行输入ping baidu.com
同时开启wireshark
抓包
3. 抓包结果如下
实验结果
1.解释IP数据报的首部
数据链路层
内容 | 说明 |
Ethernet II | 以太网协议版本 II |
Source: Apple_de:1f:24 | 厂名:序号 |
(64:c7:53: de:1f:24) | 网卡地址 |
Type: IPv4 (0x0800) | 协议类型 |
网络层
内容 | 说明 |
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 请求帧和回应帧
请求帧如图
回应帧如图
- 请求类型是8,代码是0,表示请求
回应类型是0,代码是0,表示应答 - 回应和请求的
Identifier (BE)
均为11040 8235
,说明该回应是响应的该请求
3.改变ping的长度参数
- 长度大于一定数量才会分片,这里我指定长度为
2000
位. - 抓包数据如图
- IP分报片情况
- 首先来看看数据包(IP包),按道理来说,当长度大于一定的长度的时候,IP数据包会实行分片传输,但是这里观察到
Don't fragment: Not set
和More fragments: Not set
都是为零,而且所有捕抓到的报文都是如此。所以带着这个疑问我去询问了老师,老师给的答案是操作系统的不同可能会导致不同的结果。 - 虽然没有办法实验,但是按到理论上说,这里的
Don't fragment:
应该是为1的,表示可以分片。所以当ping
需要的数据包大于一定长度时,ip是会分片发送的。
实验二
实验步骤
1.在 Wireshark
监视器中设置过滤条件。设置过滤条件为 icmp
,筛选ICMP
报文和IP
数据包
2. 在命令行输入traceroute baidu.com
同时开启wireshark
抓包.
3. 抓包结果如图
实验结论
1. 解释ICMP 差错报文的结构
- 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工作原理
- tracert从源地址发出一个UDP探测包到目的地址,并将TTL设置为1;
- 当路径上的第一个路由器收到这个数据包时,将TTL减1;
- 当TTL变为0时,包被丢弃,路由器向源地址发回一个ICMP超时通知(ICMP Time Exceeded Message),内含发送IP包的源地址,IP包的所有内容及路由器的IP地址;
- 当源地址收到该ICMP包时,显示这一跳的路由信息;
- 这个重复的动作一直持续到某个数据包抵达目的地,并每次重复时设置TTL加1;
- 直至目标地址收到探测数据包,由于tracert通过UDP数据包向不常见端口发送数据包,因此会收到「ICMP port unreachable」消息,故可判断到达目的地。
- 当源地址收到ICMP Port Unreachable包时停止traceroute。
由于MAC系统的差别,我抓包并没有抓到Unreached post
信息,所以这里我就没法展示了(抱歉)
数据交互示意图