网络协议层
IP地址:用于在网络中唯一标识主机
1、IP地址分类
1、按照接收者分为四类:单播地址(unicast address)、多播或组播地址(multicast address、广播地址(broadcast address)、任播(anycast)
- 单播(unicast)地址:连接接收者是某一个单一的主机
组播(multicast)地址:连接接收方是一组注册过的多个主机,细分为两类
- 任意源组播(ASM any-source):接收者主机加入组播组后可接收到任意源发送到该组的数据。为了提高安全性,可以在路由器上配置针对组播源的过滤策略,允许或禁止来自某些组播源的报文通过。最终从接收者角度看,数据是经过筛选的。
- 特定源组播(SSM source-specific):接收者主机在加入组播组时,可以指定只接收哪些源的数据。加入组播组后,主机只会收到指定源发送到该组的数据。SSM模型对组地址不再要求全网唯一,只需要每个组播源保持唯一。
广播(broadcast)地址:连接发送给同一网络中的所有主机(无差别的接受)
- 任播(anycast addresses):任播地址是多个设备共同拥有的,源设备发送数据包给任播地址时,路由器会将其发送给其中的一台设备,通常是距离最近的一个
2、子网络:网络的进一步细分
子网地址:将网络进一步细分,是将主机编码部分的若干位分配到网络部分作为子网地址
子网掩码(Subnet Masks):用于给边界路由器指出子网编号与主机编号的分界位置(主要实现方法是:通过IP地址的二进制表示与掩码的二进制表示做按位与运算(&)得到的结果为子网络的网络编号)IPv4和IPv6都用”/n”来表示掩码,”n”为掩码的位数
变长子网掩码(VLSM variable-length subnet masks):同一个网络编号使用不同长度的掩码来使得不同的子网络连接不同数量的主机量
子网络的广播地址(Broadcast Address):子网络编号+标识主机编号的位数都为1的组合就是该子网的广播地址
3、IP路由:主机收到IP数据包,先检查IP地址是否是自己的接口IP或者自己所在网络的组播或广播地址,如果是则直接交给IP包中封装的上层协议,如果不是自己的接口IP,则分为两种情况,如果主机IP层设置作为路由器则转发出去,否则数据包将被丢弃
路由表(Forwarding Table):缓存在本地的转发表
路由条目包含的信息:
目的网络ID(Destination):32位(或者128位)目的IP & 掩码的结果,目的网络编码
掩码(Mask):子网掩码,用于与目的IP做”&”运算得到目的网络的地址
下一跳(Next-hop):数据包即将到达的下一个路由器
接口(Interface):将数据包发送到下一跳的出站接口IP地址- IP路由行为(IP Forwarding Actions):最长前缀匹配算法
D^m(j)=d(j),D是目标IP,m(j)为掩码,j为掩码的长度,d(j)为目标网络ID,选择匹配的掩码最长的那一条目路由(j值最大的)
4、IP分片和重组
1、IP分片
- IPv4允许在原发送主机和中间任何经过的路由器处被分片
- IPv6只允许在原发送方主机处被分片
2、IP重组
- IPv4和IPv6都只能在到达目的地处被重组,原因在于:同一IP的碎片可以选择不同的路径到达目的地,这样可以提高传输效率
- 一个IP数据报的任何一个分片首先到达时,IP层就会启动一个重组计时器(为了防止接收方缓存被用尽),重组计时器的超时时间一般位30s或60s,收到任何一个分片时即使器就开始计时,且收到新的分片也不会被重置,当重组计时器超时数据报还没有被重组完成,则会丢弃掉所有收到的碎片并发送ICMPv4超时消息告知发送方
2、IPv4:32位(网络编号+主机编号)唯一标识网络中的主机(通常使用十进制表示:128.42.5.24)
1、IPv4分类地址:按照网络编号与主机编号的长度划分为5类
- A类地址: 单播地址 网络编号占用前1个字节,主机编号占用后三个字节,且最高位为0(范围为0.0.0.0~127.255.255.255)
- B类地址: 单播地址 网络编号占用前2个字节,主机编号占用后两个字节,且最高两位为10(范围为128.0.0.0~191.255.255.255)
- C类地址: 单播地址 网络编号占用前3个字节,主机编号占用后一个字节,且最高三位为110(范围为192.0.0.0~223.255.255.255)
- D类地址: 组播地址 最高四位为1110,剩下位没有限制(范围为224.0.0.0~239.255.255.255)
- E类地址: 预留地址,最高四位为1111,剩下位没限制(用于以后的网络维护管理协会使用)
由于网络发展迅速导致分类地址总单播地址的数量严重不足,因此有了无类域间路由
2、无类域间路由(CIDR Classless Inter-Domain Routing):是一种ISP分配新地址的方法,通过8~30位可变掩码来区分网络编号部分和主机编号部分,而不单纯像A、B、C那样直接用8,16,24固定掩码长度
3、聚合路由(Aggregation):将多个分散的IP通过掩码聚合成一个主干IP,用来减少路由表的个数
4、特殊用途的IPv4地址
- 用于内网的IP(不会出现在公共网络上的IP) 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16
- 网络主机回环地址 127.0.0.0/8(eg 本地主机回环127.0.0.1)
- 用于IPv6转换为IPv4的中继地址 192.88.99.0/24(任意源地址)
- IPv4多播地址240.0.0.0/4
- 本地广播地址(受限制的)