IP首部
1. 引言
IP是TCP/IP协议族中最为核心的协议。所有的TCP、UDP、ICMP及IGMP数据都以IP数据报格式传输,但是IP提供不可靠、无连接的数据报传送服务。
不可靠的意思是它不能保证IP数据报嫩成功地到达目的地。IP仅提供最好的传输服务。如果发生某种错误时,如某个路由器暂时用完了缓冲区,IP有一个简单的错误处理算法:丢弃该数据报,然后发送ICMP消息报给信源端。任何要求的可靠性必须由上层来提供(如TCP)。
无连接的意思是IP并不维护任何关于后续数据报的状态信息。每个数据报的处理是相互独立的。这也说明,IP数据报可以不按发送顺序接收。如果一信源向相同的信宿发送两个连续的数据报(先是A,然后是B),每个数据报都是独立地进行路由选择,可能选择不同的路线,因此B可能在A达到之前先到达。
2. IP首部
IP数据报的格式如下,普通IP首部长为20个字节,除非含有选项字段:
上图中,最高位在左边,记为0bit;最低位在右边,记为31bit。
4个字节的32bit值以下面的次序传输:首先0~7bit,其次8~15bit,然后16~23bit,最后是24~31bit。这种传输次序称作big endian字节序。
由于TCP/IP首部中所有的二进制整数在网络中传输时都要求以这种次序,因此它又称为忘了字节序。以其他形式存储二进制整数的机器,如little endian格式,则必须在传输数据之前把首部转换成网络字节序。
(1)4位版本:目前的协议版本号是4.
(2)4位首部长度:首部占32bit字的数目,包括任何选项,由于它是一个4比特字段,因此首部最长为60个字节。
(3)8位服务类型(TOS):包括一个3bit的优先权子字段,4bit的TOS子字段,1bit未用位但必须置0。4bit的TOS分别代表:最小时延、最大吞吐量、最高可靠性和最小费用,4bit中同时只能置其中1bit为1,。如果所有4bit均为0,那就意味着是一般服务。
(4)16位总长度:指整个IP数据报的长度,以字节为单位。利用首部长度字段和总长度字段,就可以知道IP数据报中数据内容的起始位置和长度。由于该字段长16比特,所以IP数据包最长可达65535字节,当数据报被分片时,该字段的值也随着变化。
(5)16位标识:唯一标识主机发送的每一份数据报,通常每发送一份报文它的值就会加1。
(6)3位标志
(7)13位片偏移
(8)8位生存时间:TTL设置了数据报可以经过的最多路由器数,它指定了数据报的生存时间。TTL的初始值由源主机设置(通常为32或64),一旦经过一个处理它的路由器,它的值就减去1.当该字段的值为0时,数据报就被丢弃,并发送ICMP报文通知源主机。
(9)8位协议:识别是哪个协议向IP传送数据。
(10)16位首部检验和:根据IP首部的计算的检验和码。不对首部后面的数据进行计算,ICMP、IGMP、UDP和TCP在它们各自的首部中均含有同时覆盖首部和数据检验和码。如果检验和错误,IP就丢弃收到的数据报,但不生成差错报文,由上层去发现丢弃的数据报并进行重传。
(11)32位源IP地址
(12)32位目的IP地址
(13)选项:可变长的可选信息,选项字段都是以32bit作为界限,在必要的时候插入值位0的填充字节。这样就保证IP首部始终是32bit的整数倍(这是首部长度字段所要求的)。
(14)数据