wireshark tcp data中文_漫话TCP/IP:网络层-IP数据报(3)

05de6ac16ddcee622bfc2b6ac6c0be83.png

序言

网络层主要由IP(InternetProtocol)和ICMP(Internet Control Message Protocol)两个协议组成。其中IP协议是TCP/IP协议族中最为核心的协议。而IP数据报是我们深入了解IP协议的基础,我们将在这篇文章详细介绍IP数据报的格式。

格式

IP数据报 = 首部 + 数据

a742f125a7b2255e7193839b7d4bd65f.png

首部

d902b9a7930d08f609a80ff2d7e3e9fe.png
  • 版本(Version):由4比特构成,表示标识IP首部的版本号。IPv4的版本号即为4,因此在这个字段上的值也是“4”。
Version Numbers​www.iana.org
  • 首部长度(IHL:Internet Header Length):由4比特构成,表明IP首部的大小,单位为4字节(32比特)。对于没有可选项的IP包,首部长度则设置为“5”。也就是说,当没有可选项时,IP首部的长度为20字节(4×5=20)。
  • 服务类型(TOS:Type Of Service):由8比特构成,用来表明服务质量。

1c23c989ae38ca246afa95b85470e8d5.png
这个值通常由应用指定。而且现在也鼓励这种结合应用的特性设定TOS的方法。然而在目前,几乎所有的网络都无视这些字段。这不仅仅是因为在符合质量要求的情况下按其要求发送本身的功能实现起来十分困难,还因为若不符合质量要求就可能会产生不公平的现象。因此,实现TOS控制变得极其复杂。这也导致TOS整个互联网几乎就没有被投入使用。
  • 总长度(Total Length):表示IP首部与数据部分合起来的总字节数。该字段长16比特。因此IP包的最大长度为65535(=2^16)字节。目前还不存在能够传输最大长度为65535字节的IP包的数据链路。不过,由于有IP分片处理,从IP的上一层的角度看,不论底层采用何种数据链路,都可以认为能够以IP的最大包长传输数据。
  • 标识(ID:Identification):由16比特构成,用于分片重组。同一个分片的标识值相同,不同分片的标识值不同。通常,每发送一个IP包,它的值也逐渐递增。此外,即使ID相同,如果目标地址、源地址或协议不同的话,也会被认为是不同的分片。
  • 标志(Flags):由3比特构成,表示包被分片的相关信息。每一位的具体含义请参考下表。

dbb38e9ec112dfbd7679c70e2675f50a.png
  • 片偏移(FO:Fragment Offset):由13比特构成,用来标识被分片的每一个分段相对于原始数据的位置。第一个分片对应的值为0。由于FO域占13位,因此最多可以表示8192(=2^13)个相对位置。单位为8字节,因此最大可表示原始数据8×8192=65536字节的位置。
  • 生存时间(TTL:Time To Live):由8比特构成,它最初的意思是以秒为单位记录当前包在网络上应该生存的期限。然而,在实际中它是指可以中转多少个路由器的意思。每经过一个路由器,TTL会减少1,直到变成0则丢弃该包。
  • 协议(Protocol):由8比特构成,表示IP首部的下一个首部隶属于哪个协议。
Protocol Numbers​www.iana.org
  • 首部校验和(Header Checksum):由16比特(2个字节)构成,也叫IP首部校验和。该字段只校验数据报的首部,不校验数据部分。它主要用来确保IP数据报不被破坏。校验和的计算过程,首先要将该校验和的所有位置设置为0,然后以16比特为单位划分IP首部,并用1补数计算所有16位字的和。最后将所得到这个和的1补数赋给首部校验和字段。
  • 源地址(Source Address):由32比特(4个字节)构成,表示发送端IP地址。
  • 目标地址(Destination Address):由32比特(4个字节)构成,表示接收端IP地址。
  • 可选项(Options):长度可变,通常只在进行实验或诊断时使用。
  • 填充(Padding):也称作填补物。在有可选项的情况下,首部长度可能不是32比特的整数倍。为此,通过向字段填充0,调整为32比特的整数倍。
  • 数据(Data):存入数据。将IP上层协议的首部也作为数据进行处理。

练习

Wireshark抓取IP包查看解析流程:

(1)按照如下案例搭建环境和安装对应的抓包工具:

表弟:TCP/IP:Tutorial​zhuanlan.zhihu.com
c352d9c31df699cc741416353b7c0e61.png

(2)运行如下抓包程序:

# tcpdump -i wlan0 ip host 10.95.45.202 -w /sdcard/capture.pcap                                                                                                                                                                                     
tcpdump: listening on wlan0, link-type EN10MB (Ethernet), capture size 262144 bytes
14 packets captured
14 packets received by filter

(3)按照我们Tutorial中的顺序分别运行server和client程序

(4)获取capture.pcap使用Wireshark打开查看

adb pull /sdcard/capture.pcap .

36e3f0def06b7d1e01722d61f8c55cf6.png
IP数据报首部
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值