IP协议负责路由(寻路)的功能,实现点对点的通信。
比如上图,A机器到达B机器有很多走法,网络层负责了选择哪条路走的功能。
一.IP Header
- 4位版本号:指明地址使用的是IPV4还是IPV6。
- 4位首部长度、16位总长度:用来解包。
- 8位协议号:用来分用。
- TTL(Time to live):规定IP包的最大生命,以传输次数为单位,每经过一条TTL减1,为0说明IP包可以丢掉。
- 源IP地址和目的IP地址:用来计算MAC地址,指定IPSegment的传输来源和目标
- 首部校验和:与TCP协议中校验和类似,用来检验数据是否完整
- 其余部分:用来做切片。
二. IP地址的划分——CIDR划分方案
-
IP地址标识了唯一台设备,通过与子网掩码(对比IP地址,子网掩码连续全1的是网络地址,后面的是主机地址) 做运算,IP地址可以分为主机号和网络号。假设某设备是属于某个局域网的。那么在这个局域网内各设备拥有相同的网络号,和不同的主机号
-
IP地址是一个32位的十进制整数,范围从0.0.0.0到255.255.255.255下图为IP地址的转换方式
-
IP地址标识了唯一台设备,将其转换为二进制与子网掩码做与运算,可以得到网络地址,与子网掩码的取反,做与运算可以得到主机地址步骤如下:
①ip地址和子网掩码转换二进制
②ip & 子网掩码 = 网络号
③ip & 子网掩码取反 = 主机号
将网络地址部分不变,主机地址(后面为0)变为全1,结果就是广播地址。网络地址到广播地址就是其子网的地址范围
-
特殊的网络号
① 将IP地址中的主机地址全部设为0, 就成为了网络号, 代表这个局域网;
②将IP地址中的主机地址全部设为1, 就成为了广播地址, 用于给同一个链路中相互连接的所有主机发送数据包;
③127.*的IP地址用于本机环回(loop back)测试,通常是127.0.0.1 -
私网IP与公网IP
公网IP可以表示互联网唯一主机,私网IP可以重复。如果一个组织内部组建局域网,IP地址只用于局域网内的通信,而不直接连到Internet上,理论上 使用任意的IP地址都可以,但是RFC 1918规定了用于组建局域网的私有IP地址。
三. 路由功能
- IP协议栈拥有:目标IP地址(最终目标地址)——从传输层得知,路由表——平时积累(底层类似于Map模型)。就可以计算出在局域网内下一跳传输的IP地址。
- 但链路层传输需要下一跳的MAC地址。所以网络协议栈中保存了ARP表来实现IP地址到MAC地址的转换。
- 然后数据链路层进行封装,在广播域中将帧信息发送给广播域(在局域网)的所有设备。接收到的设备(可能有路由器,和电脑等)根据MAC地址判定是否接受该数据。
下图为消息传送的过程