一、引言
链路层的上层协议是网络层,IP 协议是网络层协议中的最核心协议。ICMP/IGMP,TCP/UDP 都是通过 IP 数据包传输的。IP 协议提供非可靠的(unreliable)、无连接的(connectionless)。
-
非可靠的:IP 协议不能保证数据能成功的到达目的地(传输层协议保证)。当 IP 数据包在传输的过程中,发生错误,路由器的处理是丢掉该数据包,然后发送 ICMP 给该 IP 数据包的源;
-
无连接的:表示 IP 协议不维护后续数据包的状态,每个 IP 数据包都是独立的,即 IP 数据包可以不按照顺序发送接收。
二、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。
-
其他:可选。
三、子网
我们不是把 IP 地址看成由单纯的一个网络号和一个主机号组成,而是把主机号再分成一个子网号和一个主机号。子网对外部路由器来说隐藏了内部网络组织(一个校园或公司内部)的细节。
子网掩码是一个 32bit 的值,其中值为 1 的 bit 留给网络号和子网号,为 0 的 bit 留给主机号。0 或 1 需要连续的。
四、特殊 IP 地址
IP 类型 | 含义 |
---|---|
127.x.x.x | 常见的是 127.0.0.1,环回地址,该地址是指电脑本身,会把发送给该 ip 的数据返回给当前主机。该 IP 被认为是一个网络接口。它是一个 A 类地址,没有进行子网划分 |
(10.x.x.x),(172.16.x.x -172.31.x.x),(192.168.x.x) | 局域网 IP 地址,私有地址 |
0.0.0.0 | IP 地址收容所,所有不认识的 IP 地址,都丢这;已经不是真正意义上的 ip 地址了。 |
255.255.255.255 | 受限制的广播地址,对本机来说,这个地址指本网段内(同一个广播域)的所有主机。在任何情况下,路由器都会禁止转发目的地址为受限的广播地址的数据包,这样的数据包仅会出现在本地网络中。 |
xxx.255[.255] | 网络号不全为 1,主机号全为 1,该网络的广播地址 |
224.0.0.0-239.255.255.255 | 这是一组组播地址,需要注意它与广播地址的区别,其中 224.0.0.1 特指所有的主机,224.0.0.2 特指所有的路由器,224.0.0.5 指所有的 OSPF 路由器地址,224.0.0.13 指 PIMV2 路由器的地址。 |
五、IP 数据包抓包
都看到这里了,要不要长按二维码关注一下微信公众号林湾村龙猫。