一、前言
IP协议是TCP/IP协议的核心,所有TCP、UDP、ICMP、IGMP数据都通过IP数据报传输。
IP提供的是尽力而为、无连接的数据交付。即:不保证数据一定到达,不保证数据一定有序,每个数据报看作一个独立的数据处理,每个数据报可以独立路由。
所有的可靠性都需要由IP上层的协议来实现,如TCP。
当一个IP数据报被分片时,每个分片是一个独立的IP数据报。
二、重要字段
头部
典型的头部大小可变。大多数情况下,没有IP选项,头部长度为20字节。
版本协议字段:4位。表示IP协议版本号(IPv4为4,IPv6为6)
总长度:16位。表示整个数据报的长度,单位为字节。最长长度为2^16-1=65535字节。当IP数据报被分片时,该字段表示所在分片的长度。
标识:为了避免由于分片导致混淆,主机通常在发送数据报时将一个内部计数器加1,并赋给这个字段。
生存期(TTL):代表IP数据报可经过的路由器数量的上限。设定一个初始值,数据报在每经过一个路由器减1,减到0时数据报被丢弃。
协议:表示有效荷载部分的数据类型。UDP为17,TCP为6。
头部校验和:仅覆盖IPv4的头部,不检查有效荷载的数据的正确性。因此需要上层的协议实现其内部的校验方法。TTL减1时,或者经过NAT时,头部校验和将被改变。因此IP数据报的校验和将在每一跳改变。
源IP、目的IP:都是32位。
有效荷载
来自上一层协议的内容。
三、IP分片
IP数据报超出MTU时会被分片;IPv4的分片可以发生在源主机和路径上的任一路由器上;
当一个IP数据报被分片,直到到达最终目的才会被重组。原因:IP数据报是尽力而为的交付,每个数据报独立路由,中间的路由器根本没有能力重组数据。