IP协议
一、什么是IP协议
IP协议是TCP/IP协议中的协议,它为TCP、UDP、ICMP等协议提供传输的通路。
IP层的主要目的是提供子网的互联,形成较大的网络,使不同的子网之间能够传输数据。
二、IP层的主要作用
1 | 数据传送:将数据从一个主机传输到另一个主机 |
---|
2 | 寻址:根据子网划分和IP地址,发现正确的目的主机地址 |
3 | 路由选择:选择数据在互联网上的传送路径 |
4 | 数据报文的分段:当传送的数据大于MTU时,将数据进行分段发送和接收并组装 |
三、IP数据报格式

四、字段及描述
字段 | 描述 |
---|
版本 | IP协议的版本号,长度为4位,规定网络所实现的IP版本,例:IPv4值为4,IPv6值为6 |
首部长度 | IP字段出去数据的整个头部的数据长度,以32位的字为单元计算 |
服务类型 | 该字段为8位,其中包含3位的优先权(已忽略),4位的T服务类型子字段和1位的保留位(必须置0) |
总长度 | 该字段长16位,表示以字节为单位的数据报文长度,长度包含IP的头部和数据部分 |
标识和片偏移 | IP每发一份数据报文都会填写一个标识用来标识该数据包,发送完后此值加1 |
标志 | 最低位MF(More Fragment):置1,MF=1,表示还有分片,MF=0,表示为若干数据报分片中最后一个。中间位置DF(Don’t Fragment)置0,表示允许分片,DF=1,表示不允许分片,最高位目前无意义 |
生存时间 | 数据报文最多可以经过的路由器数量 |
协议类型 | 该字段长8位,标识IP上承载的高级协议 |
校验和 | 使用循环冗余校验生成的16位长度数值,保证IP帧的完整性 |
IP选项 | 长32b,标识IP的数据段时正常数据或是网络控制数据 |
源地址和目的地址 | 源地址表示发送数据的主机或者设备的IP地址,目的地址为接收数据的主机IP地址 |
五、相关说明
1、IP首部的长度以字为增量变化,最短的IP头是20字节(不包括数据和选项)。因此,该值最小为5。因为该字段为4位,所以IP的首部最长为60个字节;
2、服务类型选项含义;
字段 | 优先权 | D | T | R | F | 保留 |
---|
长度 | 3位 | 1位 | 1位 | 1位 | 1位 | 1位 |
含义 | 优先级 | 延迟 | 吞吐量 | 可靠性 | 费用 | 未用 |
优先权字段3位:值为0~7(0为正常值,7为网络控制,但此字段目前已被忽略)。允许传输站点的应用程序设定向IP层发送数据报文的优先权。该字段与D、T、R、F相结合,确定应采取哪种路由方式。
D:置1,请求低时延 T:置1,请求高吞吐量 R:置1,高可靠性 F:请求低费用
3、利用头部长度和总长度字段可以计算IP数据报文中数据内容的起始地址和长度,由于该字段长16位,所以IP数据报文最大可达到65535个字节的长度。
4、在IP进行分片的时候,将标识复制到IP的头部表示数据报文的来源,加上分片数据在原数据中的偏移地址,便于之后进行组装。利用字段总长度和片片偏移可以重新组装IP的数据报文。总长度指出原始包的总长度,片偏移指出该包位于正在组装的IP报文的偏移量,偏移量从头部开始计算。
5、TTL(Time To Live),指定数据报文的生存时间,源主机发送数据时设置TTL(一般为32或64),经过一个路由器TTL的值减1。当TTL为0的时候,路由器丢弃此包,并发送一个ICMP报文通知源主机。TTL的出现是为了防止数据包由于出现错误而在路由器之间不断循环。
6、根据协议类型,TCP/IP协议栈决定将数据发送给哪一层的的协议做相应的处理。
值 | 协议类型 | 值 | 协议类型 |
---|
1 | ICMP | 2 | IGMP |
6 | TCP | 17 | UDP |
7、发送端发送数据时计算CRC16校验值,填入此校验和字段。接收端计算IP的检验值与此字段比对,若不同,则表示此帧出现错误,并丢弃该报文。在经过路由器时会修改TTL值,因此每次需要重新计算CRC16,并更新到校验值字段。
8、IP选项
IP选项主要定义 |
---|
安全和处理限制 |
路径记录:记录所经历路由器的IP地址 |
宽松源站路由:指定数据报文必须经历的IP地址,可以经过没有指定的IP地址 |
严格的源站路由:指定数据报文必须经历的IP地址,不能经过没有指定的IP地址 |