TcpIp ip
ip header
IP数据报由首部和数据两部分组成,首部又分为定长部分和变长部分。
简要说明
版本(VER):4位,表示数据报的IP协议版本,
当前的IP协议版本号为4,即IPv4;
下一代网络协议IPv6,版本号为6.
首部长度(HLEN):4位,表示以字长(4字节)为单位的数据报首部长度。
服务类型(SERVICE TYPE): 8位,规定本数据报的处理方式。
前三位是优先级,0-7,0表示最低,7最高(最重要),但目前的IPv4没有使用优先级。
后4位是TOS,表示本数据报在传输过程中所希望得到的服务,
D--最小延迟(minimize delay);T--最大吞吐率(maximize throughout);
R--最高可靠性(maximize reliability);C--最低成本(minimize cost)。
值得注意的有2点:
- 服务类型代表用户的希望,并不具有强制性,目前许多设备TCP/IP中不支持服务类型特性。
- 在D、T、R、C这4个参数中只能设置其中一个。
数据报总长度: 在IP数据报封装到以太网帧中进行传输时很有用.
标识(IDENTIFICATION):16位每个IP数据报都有一个本地唯一的标识符,它由信源机赋予IP数据报。每次自动加1.
标志(FLAGS):3位,表示该IP数据报是否允许分片以及是否最后一片。
片偏移(FRAGMENTATION OFFSET):表示本片数据在他所属原始数据报数据区的偏移量。
生存时间(time to live,TTL): 8位,
协议(PROTOCOL):8位,指明被IP数据报封装的协议:
ICMP=1,IGMP=2,TCP=6,EGP=8,UDP=17,OSPF=89.
首部校验和(HEADER CHECKSUM):16位,保证首部数据完整性。
源IP地址(SOURCE ADDRESS):32位(IPv4中),发送方源地址。
目的地址(DESTINATION ADDRESS): 32位(IPv4中),最总接收方IP地址。
IP选项(IP OPTIONS):变长字段,传输数据报时的附加功能。
详细说明
首部长度(报头长度)指的是首部占32 bit字的数目,包括任何选项。由于它是一个4比特字段,因此首部最长为60个字节。15x32/8=60字节.
IP首部始终是32 bit的整数倍.IP数据报报头的最小长度为20个字(不含填充字段和IP选项字段的IP报头是最常见的IP报头,为20个字节)
总长度字段是指整个IP数据报的长度,以字节为单位.由于该字段长16比特,
所以IP数据报最长可达65535字节(64KB).总长度字段是IP首部中必要的内容。数据长度=总长-报头长度。
标识符长16比特。标志位长度为3比特,用于分段控制:
第0位为预留位,第1位表示可否分段。当该位的值为0时,表示数据报不可分段,值为1时,表示数据报可被分段。
第2位为段是否结束位,当该位的值为0时,表示该段是原数据报的最后一段,值为1时,表示后面不有更多的分段。
当网络设备要发送的数据报长度比所在网络的最大传输单元(MTU,Max Transfer United)大,
并且标志位的第1位设置为不能分段(0)时,网络设备会向发送方返回一个因特网控制消息协议ICMP错误消息,
并丢弃该数据报。除了最后一个分段外,其余分段的第2位均设置为1。
段偏移13比特长度,用于指定分段在原始数据报中的位置,以8个字节为单位.
生存时间TTL长度为8比特,用于指定数据报允许保留在网络上的时间。
协议字段长度为8比特,用于指定数据报数据区中携带的消息是由哪种高级协议建立的。
ICMP为1,TCP为6,UDP为17。 协议号分配RFC790.
报头校验和16比特,仅用于IP报头校验和。
源IP地址及目的IP地址。
选项,填充字段用于确保将选项字段填充为最少32个比特位,以保证IP报头以32位结束。
分段:分段是将一个大的IP数据报分解成几个较小的数据报段的过程。
当IP模块需要通过一个具有较小MTU的网络传送较大的数据包时,就必须将其分段。