IP数据报格式及分片

IP数据报格式及分片


IP数据报首部结构体

  1. 版本

    4位版本号:指定IP协议的版本,对于IPv4来说,为4

  2. 首部长度

    4位头部长度:IP头部的长度,单位是4bit,最小为5(因为固定部分为20字节,所以最小是5),也就是说首部长度是4x5=20到4x15=60之间

  3. 服务类型

    8位服务类型(Type Of Service):3位优先权字段(已被弃用),4位TOS字段,和1位保留字段(必须置为0)。

    • bit 0~2:优先级
    • bit 3:延迟,0=Normal Delay,1=Low Delay
    • bit 4:吞吐量,0=Normal Throughput,1=High Throughput
    • bit 5:可靠性,0=Normal Relibility,1=High Relibility
    • bit 6~7:Reserved for Future Use. 6:开销(路由代价) 7:仍未保留
  4. 总长度

    报文的总长度,单位为字节,一个IP报文的最大长度为65535Bytes

  5. 标识

    每产生一个报文就加1,通常与标记字段和分片字段一起用于数据包的分段。当IP报文长度超过传输网络的MTU(最大传输单元)时,必须分片。此时这个标识字段的值被复制到所有数据分片的标识字段中,以便这些分片在达到最终目的地时可以重新组合起来。

  6. 标志

    共3位,分别为R(Reserved)、DF(Don’t Fragment)、MF(More Fragment),目前只有后两位有效,DF=1表示不允许分片,DF=0表示分片;MF=1表示后面还有分片,MF=0表示这是最后一片。

  7. 片偏移

    本分片在原先数据报文中相对首位的偏移量,13位,以8B为偏移单位,实际偏移的字节数是这个值*8得到的。因此,除了最后一个报文外,其他报文的长度必须是8的整数倍(否则报文就不连续了)。

    • 若MTU=1500,一个大小为3000字节的数据经过该接口,会被分为3段,第一段总长度为1480+20,第二段也为1480,第三段为40,那么第一段的分段偏移为0,第二段分段偏移为1480/8=185,第三段为185+185=370
  8. 生存时间

    Time to Live,标识分组在网络中的寿命,以确保分组不会永远在网络中循环。路由在转发分组之前,先把TTL-1,为0时则丢弃该分组。推荐的初始值由分配数字RFC指定,当前值为64,发送ICMP回显应答时经常把TTL设为最大值255.这个字段主要是用来防止出现路由循环。

  9. 协议

    标识IP分组携带的数据使用的是哪种协议,以便目的主机的IP层能知道要将数据报上交到哪个进程(与端口号类似,这里采用的是协议号)

    • 1:Internet Control Message Protocol(ICMP)
    • 2:Internet Group Management Protocol(IGMP)
    • 4:IP in IP(encapsulation)
    • 6:Transmission Control Protocol(TCP)
    • 17:User Datagram Protocol(UDP)
    • 45:Inter-Domain Routing Protocol(IDRP)
    • 46:Resource Reservation Protocol(RSVP)
    • 47:Generic Routing Encapsulation(GRE)
    • 54:NBMA Next Hop Resolution Protocol(NHRP)
    • 88:Cisco Internet Gateway Routing Protocol(IGRP)
    • 89:Open Shortest Path First(OSPF)
  10. 首部校验和

    16位首部的校验和,检查首部的完整性(只校验首部,不校验数据部分)。使用CRC进行校验,来鉴别头部是否损坏,也就是二进制的和。

  11. 源地址和目的地址

    发送方IP地址&接收方IP地址

  12. 可选字段和填充

    可选字段:包括源点产生的信息和其他路由器加入的信息,可选字段,主要用于测试,长度可变

    填充:通过在可选字段后面添加0来补足32位,确保报头长度是32的倍数

IP数据报分片

1、最大传输单元MTU

MTU全称是maximum transmission unit,是指链路层数据帧可封装数据的上限,以太网的MTU是1500B

2、IP数据报的标识

回顾下IP数据报格式中的标识字段:唯一的标识主机发送的报文。如果IP报文在数据链路层被分片了,那么每一个分片里面的id都是相同的。

3、IP数据报的标识字段

回顾一下IP数据报中的标志字段:

只有2位有意义.

中间位DF(Don’t Fragment):DF=1,禁止分片;DF=0,允许分片

最低位MF(More Fragment):MF=1,后面“还有分片”;MF=0,代表最后一片/没有分片

4、IP数据报的片偏移

片偏移:指出较长分组分片后,某片在原分组中的相对位置,以8B为单位。除了最后一个分片,每个分片长度一定是8B的整数倍。

5、分片示例

以太网帧中的数据长度规定最小46B,最大1500B,ARP数据包的长度不够46B,要在后面补填充位;最大值1500称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU。

如果一个数据报从以太网路由到拨号链路上,数据报长度大于拨号链路的MTU,则需要对数据报进行fragmentation;不同的数据链路层标准的MTU是不同的;

下面以1420B为最大值进行分片:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值