IP数据报格式
![]() 版本字段长度为4,用来表明建立数据报的IP版本,目前的IP版本是IPv4,IPv6正在发展中。IPv4的字段为0100。
首部长度(报头长度)指的是首部占32 bit字的数目,包括任何选项。由于它是一个4比特字段,因此首部最长为60个字节。15x32/8=60字节.IP首部始终是32 bit的整数倍.IP数据报报头的最小长度为20个字(不含填充字段和IP选项字段的IP报头是最常见的IP报头,为20个字节) 服务类型TOS,服务类型字段长度为8比特,用于指定数据报所要求的服务质量(TOS)。 总长度字段是指整个I P数据报的长度,以字节为单位.由于该字段长1 6比特,所以I P数据报最长可达6 5 5 3 5字节.总长度字段是I P首部中必要的内容。数据长度=总长-报头长度。
标识符长16比特,每个数据报都必须由惟一的标识符来标识,以便使接收主机能重装被分段的数据报。 标志位长度为3比特。 用于分段控制:第0位为预留位, (请注意:2007/8/15 注:感谢网友daerba的回复,现将RFC791关于此段的描述贴于此:
Flags: 3 bits
Various Control Flags. Bit 0: reserved, must be zero Bit 1: (DF) 0 = May Fragment, 1 = Don't Fragment. Bit 2: (MF) 0 = Last Fragment, 1 = More Fragments. 0 1 2 +---+---+---+ | | D | M | | 0 | F | F | +---+---+---+ 也就是:第1位为0时为可分段、为1时为不可分段.非常抱歉,呵呵,不过我也是对着资料写的,为了避免引起误导,特此说明,有时间会再验证还有没有出入。
第2位为段是否结束位,当该位的值为0时,表示该段是原数据报的最后一段,值为1时,表示后面还有更多的分段。
当网络设备要发送的数据报长度比所在网络的最大传输单元MTU大,并且标志位的第1位设置为不能分段(0)时,网络设备会向发送方返回一个因特网控制消息协议ICMP错误消息,并丢弃该数据报。除了最后一个分段外,其余分段的第2位均设置为1。 本文出自 51CTO.COM技术博客段偏移13比特长度,用于指定分段在原始数据报中的位置,以8个字节为单位进行计数,表示该段数据在原始数据报数据区中的偏移量。 生存时间TTL长度为8比特,用于指定数据报允许保留在网络上的时间。 协议字段长度为8比特,用于指定数据报数据区中携带的消息是由哪种高级协议建立的。ICMP为1,TCP为6,UDP为17。 协议号分配RFC790. 报头校验和16比特,仅用于IP报头校验和。 源IP地址及目的IP地址,长度为32比特,用于指定发送者和所期望的接收者的IP地址。在数据包通过网络传输的过程中基值不会发生变化。 选项,填充字段用于确保将选项字段填充为最少32个比特位,以保证IP报头以32位结束。 分段:分段是将一个大的IP数据报分解成几个较小的数据报段的过程。当IP模块需要通过一个具有较小MTU的网络传送较大的数据包时,就必须将其分段。 |



sdb001
博客统计信息
热门文章
最新评论
友情链接