IP协议详解(IP分片和重组)

一、什么是ip协议

我们常说的TCP-IP协议其实是两种协议,TCP协议和IP协议。TCP协议位于OSI模型中的传输层,IP是Internet Protocol(网际互连协议)的缩写,IP协议位于OSI模型中的网络层。

二、ip协议的功能

首先我们需要了解IP协议的协议格式和内容:
IP协议详解(IP分片和重组)

  • 4位版本号:通常为4,表示IPV4;
  • 3位标志位:用于IP的分片和重组
  • TTL:Time-to-live设置了数据报可以经过的最多路由器数,它指定了数据报文的生存时间,每经过一个路由器,这个值就会减一,当该字段的值为 0时,数据报就被丢弃;
  • 32位源IP地址
  • 32位目的IP地址

IP协议的选路功能
每一个路由器中都会维护一张路由表,这张路由表中包含目的ip地址、网关(下一站路由器的IP地址)、标志位等信息。路由器在接收到Ip数据报文后,首先寻找能够和IP报文中目的地址完全匹配的地址,如果有则把数据包发送给对应的IP;如果没有,则寻找和目的网络好相同的网络地址,然后把报文转发给改网络地址指定的下一站路由来处理,如果依然没有匹配的网络号,则路由器会查找标为“默认”的表目,并将数据转发给符合默认表中的地址。如果默认表中也没有匹配的地址,路由器会返回一个差错。
1)搜索匹配的主机地址;

2)搜索匹配的网络地址;

3)搜索默认表项(默认表项在路由表中被指定为一个网络表项,其网络号为0);

4)如果上面三项都失败,则返回一个差错。

IP协议的分片重组功能
每一种物理网络都会规定链路层数据帧的最大长度,称为链路层MTU。如果链路层的数据长度加上头部长度大于MTU,那么IP层会将数据分成多片传输。IP协议的首部有3个标志位(3个bit位)用来区分数据是否分片:

  • 预留位 最高位表示预留位,一般为0
  • DF位 (Don’t Fragment)该位位0表示分片,该为为1表示不分片
  • MF位 (More Fragments)更多片段位

如果IP层的数据需要进行分片,系统会将DF位置0,如果有更多的IP数据,则将MF位置1。接收端可以根据13位的偏移字段对分片的数据进行重组。

三、wireshark分析IP层数据

IP协议详解(IP分片和重组)

四、wireshark分析ip分片和重组

我们通过udp发送4702个字节长度的数据到网络,抓取到的数据如图:
IP协议详解(IP分片和重组)

可以看到DF位为0,表示数据报文分片。分片的数据在蓝色字体部分可以看到。可以看出4702个字节的数据被分成了4帧,长度分别是1480、1480、1480、270。1155、1156、1157、1158表示帧序号。数据长度的总和为4710,比udp数据的总长度多了8个字节是因为udp的头部占了8个byte。