TCP/IP详解--网络层&IP首部格式

1、IP协议概述

IP是TCP/IP协议族中最核心的协议,不管是TCP、UDP、ICMP数据最终都是以IP数据报格式传输。

IP提供不可靠、无连接、无状态的数据报传输服务

不可靠:它不保证数据报能成功的到达目的地(如果发生某些错误,比如路由器用完了缓冲区,IP处理方法就是丢弃,然后发送ICMP差错报文给信源端。所有的可靠性都由上层来保证)

无状态:IP并不维护后续数据报的状态信息,每个数据报处理时都相互独立、没有上下文关系。因此缺点是无法处理乱序和重复的IP数据报。(IP数据报头部的标识字段是唯一标识一个IP数据报的,但它是用来处理IP分片和重组的,而不是用来指示接收顺序的

无连接:指IP通信双方不长时间维持对方的任何信息,这样,上层协议每次发送数据的时候,都必须明确指定对方的IP地址。

 

2、IP首部格式

TCP/IP详解--网络层&IP首部格式

4位版本号:指定IP协议的版本。IPv4来说其值是4;

4为头部长度:标识改IP头部有多少个32bit字(4字节),因为4位最大能表示15,所以IP头部最长是60字节;

8位服务类型:包括3位优先级字段、1位保留字段和4位TOS字段。4为TOS分别表示:最小时延、最大吞吐量、最高可靠性和最小费用。其中最多有一个能置为1。

16位总长度:指整个IP数据报的长度,以字节为单位,因此IP数据报的最大长度为65535(2^16-1)字节。但是由于MTU限制,长度超过MTU的数据报将会分片传输,所以实际传输的IP数据报长度远远没有达到最大值。以下3个字段描述了如何分片;

16为标识:唯一标识主机发送的每一个数据报,其初始值是系统随机生成:每发送一个数据报,其值加1.该值在分片时被复制到每一个分片中,因此同一个数据报的所有分片都有相同的标识值。

3位标志:第1位保留,第2位表示“禁止分片”,如果设置了该位,IP模板将不对数据报分片,超过MTU的数据将会丢弃并返回一个ICMP差错报文。第3位表示“更多分片”,除了最后一个分片外,其他的分片都要置1。

13位分片偏移:是分片相对原始IP数据报开始处的偏移(仅指数据部分)。实际偏移值是该值左移3位得到的。所以出最后一个分片,其他分片的数据部分长度必须是8的整数倍。

8位生存时间(TTL):设置了数据可以经过的最多的路由器数(一般是64),每经过一次路由器,该值减1,如果该值减为0依旧没有到达目的主机,就丢弃改数据报,发送ICMP差错报文(目标不可达)

8位协议:用于区分上层协议。其中ICMP为1,TCP为6,UDP为17等等。

16位首部校验和:由发送端填充,接收端对其使用CRC算法检验IP数据报头部在传输过程中是否损坏(只检查头部,不管数据部分)

32位源端IP地址和32位目的IP地址:用来指定发送端和接收端的。

 

任选项(一般没有)包括一下内容

安全和处理限制、记录路径(每个路由器都记录它的IP地址)、时间戳、宽松的源站选路、严格的源站选路

 

3、IP路由选择

路由表:

(1)目的IP地址:可以是完整的主机地址,也可以是网络地址,由标志字段指定

(2)下一站(下一跳)路由的IP地址

(3)标志。

关于IP分片和路由转发部分会单独详细在讨论