LwIP之IP协议

I P是TCP/IP协议族中最为核心的协议,所有的TCP、UDP、ICMP及IGMP数据都以IP数据报格式传输。

IP提供不可靠、无连接的数据报传送服务。不可靠的意思是它不能保证I P数据报能成功地到达目的地。IP仅提供最好的传输服务。如果发生某种错误时,如某个路由器暂时用完了缓冲区, IP有一个简单的错误处理算法:丢弃该数据报,然后发送ICMP消息报给信源端。任何要求的可靠性必须由上层来提供(如TCP)。无连接的意思是IP并不维护任何关于后续数据报的状态信息。每个数据报的处理是相互独立的。这也说明,IP数据报可以不按发送顺序接收。如果一信源向相同的信宿发送两个连续的数据报(先是A,然后是B),每个数据报都是独立地进行路由选择,可能选择不同的路线,因此B可能在A到达之前先到达。

 

IP首部

LwIP之IP协议

版本号,对于IPv4来说该值为4,对于IPv6该值为6。

首部长度指的是首部占32bit字的数目,包括选项。由于它是一个4比特字段,因此首部最长为60个字节。

服务类型主要用于描述当前IP数据报急需的服务类型,如最小延时、最大吞吐量、最高可靠性、最小费用等。路由器在转发数据报时,可以根据这个字段的值来为数据报选择最合理的路由路径。

总长度描述了整个IP数据报的字节数。理论上可达65535字节,但以太网数据帧最长为1500字节,当数据报很大的时候,需要分为几个分片进行发送。如果数据报小于46字节时,底层会自动填充字节以满足长度要求。

标识字段用于标识IP数据报,每发送一个IP报文,该值加1。

标志字段,第一位保留;第二位是不分片位,该位为1表示转发过程中不允许分片;第三位表示更多分片位,该位为1表示不是最后一个分片,为0表示是最后一个分片。

片偏移表示当前分片所携带的数据在整个数据报中的相对位置。

生存时间表示IP数据报最多可能被转发的次数。

协议字段用于描述IP数据报来自于哪个上层协议,如1表示ICMP、2表示IGMP、6表示TCP、17表示UDP。

校验和字段,只针对IP首部进行校验。

源IP地址和目的IP地址不用多讲。

选项字段,是数据报中的一个可变长的可选信息。选项信息有:安全和处理限制、记录路径、时间戳、宽松的源站选路、严格的源站选路。这些选项很少被使用,并非所有的主机和路由器都支持这些选项。