首先,执行 ipconfig 确认自己电脑的 ip 地址
可以得到我的电脑的 ip 地址为 192.168.43.15,网关地址为 192.168.43.1
打开 [wireshark]抓包工具,ping 网关,看看会发生什么
[命令行]中,我们发送了 4 个具有 32B 的数据,从抓包工具中,我们可以看出该命令采用的是 icmp 协议
该帧序号为 1,发生在第 0.00s,源地址为 192.168.43.15(本机), 目标地址为 192.168.43.1(网关), 协议为 ICMP 协议, 长度为 74B,信息:Echo (ping) request id=0x0001, seq=11/2816, ttl=128 (reply in 2)
从图中可以看出,该层一共 40B,其中控制信息 8B,数据信息 32B,
第一个控制信息
Type 字段占 1B,表示类型,8 代表请求类型,0 代表回复类型
Code 字段占 1B,暂不清楚作用。
Checksum 字段,占 2B,用来校验该层数据是否正确,该帧中 Checksum Status 为 good,表示该帧未发生错误,为正常帧。
标识符字段,占 2B,该帧为 0x0001(0x0100 是什么?)
sequence 序列号字段,占 2B,该帧为 0x000b(0x0b00 是什么?)
接下来为 32B 的数据字段,字段内容为 a-w 23B,接着 a-i 9B,共 32B
总结:ICMP 层,全称 Internet Control Message Protocol, 网络控制信息协议, 共 40B,包括 8B 的头部和 32B 的内容部分,8B = Type 字段 (1B) + Code 字段 (1B) + Checksum 字段 (2B) + Identifier 标识符字段 (2B) + Sequence 序列号字段 (2B),32B = a-w 23B + a-i 9B。
IP 层共 20B,作用是表明该帧的源 IP 和目标 IP,
该字节的前 4 位表示 IP 版本,后 4 位表示 IP 层的长度
在该帧中,前 4 位 0x0100 表示 IP 版本为 IP 4 版本,后 4 位 0x0101 表示该 IP 层头部长度为 20B(数字 * 4,1 个单位表示 4B,5 个单位表示 20B)
该字段占 1B,不清楚作用
Total Length 字段占 2B,表示 IP 层的总长度 (IP 头 + IP 内容部),该帧中,为 60,表示 60B,由 20BIP 头部和 40BIP 数据部分组成
标识符字段,占 2B
共 2B,其中 flag 占前 3 位,offset 偏移占 13 位
TTL 字段,占 1B
内容部分采用协议,占 1B,该帧中,0x01 表示内容部分为 ICMP 协议
Header Checksum,占 2B
源 IP 地址,占 4B
目的地 IP,占 4B
总结,IP 层头部共 20B,20B = Version(0.5B) + Header Length(0.5B) + 不同服务器属性 (1B) + 总长度 (2B) + 标识符 (2B) +
Flag(3 位) + 偏移 (13 位) + TTL (1B) + Procotol(1B) + Header Checksum(2B) + Source IP(4B) + destination IP(4B)
数据链路层共 14B
目的 MAC 地址,占 6B
源 MAC 地址,占 6B
网络层协议,Type 字段,占 2B,其中 0x0800 表示 IPv4 协议
总结,数据链路层共 14B,其中 14B = 目的地 MAC(6B) + 源 MAC(6B) + 网络层协议 (2B)
这个帧基本和上一个一样,我这里记录一下不一样的地方。
共同点:基本都一样,比如帧长度都是 74B = 14B(数据链路层) + 20B(网络层) + 40B(ICMP 层)
不同点
ICMP层
ICMP 层的 type 字段不一样,该 type 为 0,之前请求的为 8
好文推荐
欢迎关注 系统安全运维