正文
一、引言
链路层的上层协议是网络层,IP 协议是网络层协议中的最核心协议。ICMP/IGMP,TCP/UDP 都是通过 IP 数据包传输的。IP 协议提供非可靠的(unreliable)、无连接的(connectionless)。
二、IP 数据包
-
IP 版本号(Version):IP 协议版本号,长度 4bit;目前常有 IPv4 的该域值是(0100);
-
首部长度(Head Length):表明 IP 数据包的首部长度,长度 4bit,单位是 32bit(4 字节,图 1 中的一行),首部长度最大 15*4=60 字节,没有选填的选项,首部长度为 20 字节,该值为(0101);
-
服务类型(Differentiated Services Field):表明该 IP 数据包选择何种优先级服务传输,长度 8bit,其中前 3bit,后 1bit 没有用的,一般为 0(000XXXX0);有用的 4bit 部分(XXXX)表示服务类型,每一位表示一种类型,分别是
最小延迟
、
最大吞吐量
、
最高可靠性
、
最小代价
,这
4bit 每次最多只有一位为 1,若全为 0,表示普通的传输服务;
-
标识域(Identification):唯一地标识主机发送的每一份 IP 数据包。通常每发送一份数据包它的值就会加 1;长度 16bit;
-
协议类型(Protocol): 指明上层协议类型,长度 8bit,
常用协议值 0x01-ICMP,0x02-IGMP,0x06-TCP,0x11-UDP
。
-
标志域(Flags):在 IP 数据包分片使用,长度 3bit。
-
片偏移(fragment offset):在 IP 数据包分片使用,长度 13bit。
-
生存时间(Time to Live,TTL):IP 数据包可以经过的最大路由跳转数,长度 8bit,初值一般为 0x40,IP 数据包每经过一次路由,该值 - 1,当 TTL 为 0 的时候,IP 数据包被丢弃,并发送一个 ICMP 包给该 IP 数据包的主机。
-
首部校验和(Header checknum):校验首部,长度 16bit,与以太帧的 CRC 校验不同,这个只校验 IP 数据包的首部。如果校验未通过,直接丢弃该数据包,不发送 ICMP,由上层协议来控制。
-
源 IP 地址(Source IP):告诉 IP 数据包,从哪来。长度 32bit。
-
目标 IP 地址(Destination IP):告诉 IP 数据包,要到哪去。长度 32bit。