4.网络层协议
一、网络层简介和IPv4地址
1. 网络协议中IP所在层次
网际协议 IP 是 TCP/IP 体系中两个最主要的协议之一。与 IP 协议配套使用的还有三个协议:
地址解析协议 ARP(Address Resolution Protocol)
网际控制报文协议 ICMP (Internet Control Message Protocol)
网际组管理协议 IGMP (Internet Group Management Protocol)
ARP是将网络层的IP地址解析为链路层的MAC地址。
ICMP用于控制消息和错误报告,用于网络故障排除和监测。
IGMP用于多播通信中的组管理,用于加入和离开多播组。
2. IPv4协议的主要特点
无连接、不可靠的分组传送服务协议(尽力而为)
不维护分组发送后任何状态信息
不保证可靠性(完整和按序)
点-点的网络层通信协议
- 两个主机间通信有多条路径
为传输层屏蔽了物理网络的差异
掩盖了各种不同物理网和协议差异性(实现异构互联)
为上面的传输层提供了统一的接口
IP分组统一不同类型的(链路层)帧
3. IPv4地址的发展历程
IP 地址由互联网名字和数字分配机构ICANN (Internet Corporation for Assigned Names and Numbers)进行分配。
标准分类的 IP 地址:最基本的编址方法,在 1981 年就通过了相应的标准协议。
划分子网:对最基本的编址方法的改进,其标准 [RFC 950] 在 1985 年通过。
构成超网:比较新的无分类编址方法。 1993 年提出后很快就得到推广应用。
4. IPv4地址模型:网络号&主机号
对于C类地址,高三位是网络号、最后一位是主机号。例如:
IPv4地址为:192.22.12.3 网络号为:192.22.12 主机号为:3
网络号标志了主机(或路由器)所连接到的网络
主机号标志了该主机(或路由器)
不同类地址的网络号和主机号所占的字节数不同!
5. 标准分类的IPv4地址
- 长度为32位
网络类别 | 网络标识 | 二/十进制 | 网络地址长度 | 主机地址长度 | 最大网络数 | 最大主机数 | 适用范围 |
---|---|---|---|---|---|---|---|
A | 0 | 0xxxxxxx/1-126 | 1字节 | 3字节 | 126 | 16777214 | 大型网络 |
B | 10 | 10xxxxxx/128-191 | 2字节 | 2字节 | 16383 | 65534 | 中型网络 |
C | 110 | 110xxxxx/192-223 | 3字节 | 1字节 | 2097151 | 254 | 小型网络 |
D | 1110 | 1110xxxx/224-239 | 多播传送 | ||||
E | 1110 | 11110xxx/240-247 | 保留 |
6. 特殊的IP地址
网络号 | 主机号 | 源地址使用 | 目的地址使用 | 含义 |
---|---|---|---|---|
0 | 0 | √ | × | 在本网络上的本主机(见DHCP协议) |
0 | host-id | √ | × | 在本网络上某台主机的host-id |
全1 | 全1 | × | √ | 只在本网络上进行广播(各路由器均不转发) |
net-id | 全1 | × | √ | 对net-id上所有主机进行广播 |
127 | 非全0也非全1的任何数 | √ | √ | 用作测试本地软件换回测试之用 |
7. IP地址特点小结
IP地址是一种分等级的地址结构,分两个等级的好处是:
IP 地址管理机构在分配 IP 地址时只分配网络号,而剩下的主机号则由得到该网络号的单位自行分配。这样就方便了 IP 地址的管理
路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号),这样就可以使路由表中的项目数大幅度减少,从而减小了路由表所占的存储空间
实际上 IP 地址是标志一个主机(或路由器)和一条链路的接口
当一个主机同时连接到两个网络上时,该主机就必须同时具有两个相应的 IP 地址,其网络号 net-id 必须是不同的。这种主机称为多归属主机 (multihomed host)
由于一个路由器至少应当连接到两个网络(这样它才能将 IP 数据报从一个网络转发到另一个网络),因此一个路由器至少应当有两个不同的 IP 地址
用转发器或网桥连接起来的若干个局域网仍为一个网络,因此这些局域网都具有同样的网络号 net-id
所有分配到网络号 net-id 的网络,无论是范围很小的局域网,还是覆盖很大地理范围的广域网,都是平等的
8. IP地址&硬件地址
硬件地址(或物理地址)是数据链路层和物理层使用的地址
IP 地址是网络层和以上各层使用的地址,是一种逻辑地址(称 IP 地址是逻辑地址是因为 IP 地址是用软件实现的)
二、划分子网
1. 划分子网的三级地址结构
从两级IP地址到三级IP地址
在ARPANET的早期,IP地址的设计确实不够合理
IP 地址空间的利用率有时很低:少数大型网络(如A类网络)用不了那么多主机号
给每一个物理网络分配一个网络号会使路由表变得太大因而使网络性能变坏
两级的 IP 地址不够灵活
2. 三级IP地址
- 从 1985 年起在 IP 地址中又增加了一个“子网号字段”,使两级的 IP 地址变成为三级的 IP 地址:这种做法叫做划分子网 (subnetting)
子网就是把原来主机地址的一部分划分为了子网
子网划分纯属本网络内部事,该网络以外看不到这种划分
从外部看,该网络的网络号仍然唯一
外面分组进入本单位内网,由路由器根据子网号进行选路,最后找到内部主机(通过和子网掩码作与运算)
3. 子网掩码
通过IP地址与子网掩码的与运算,可以得到子网地址
例如:
- B类IP地址 131.128.21.1 and 子网掩码:255.255.240.0 = 子网地址:131.128.16.0
4. 子网规划示例
B类网络(156.26.0.0)要进行子网划分,有210个子网需求
由于28-2=254,够用,故子网掩码为:255.255.255.0
根据以上方案,网络可用IP地址为:
子网1: 156.26.1.1 ~ 156.26.1.254
子网2: 156.26.2.1 ~ 156.26.2.254
子网3: 156.26.3.1 ~ 156.26.3.254
...
子网254:156.26.254.1 ~ 156.26.254.254
5. 全0全1的子网号
虽然根据已成为互联网标准协议的 RFC 950 文档,子网号不能为全 1 或全 0
但随着无分类域间路由选择 CIDR 的广泛使用,现在全 1 和全 0 的子网号也可以使用了,但一定要谨慎使用,确认你的路由器所用的路由选择软件是否支持全 0 或全 1 的子网号这种较新的用法
三、CIDR
1. 类别域间路由CIDR(Classless Inter-Domain Routing)
CIDR 消除了传统的 A 类、B 类和 C 类地址以及划分子网的概念,因而可以更加有效地分配 IPv4 的地址空间
CIDR使用各种长度的“网络前缀”(network-prefix)来代替分类地址中的网络号和子网号
IP 地址从三级编址(使用子网掩码)又回到了两级编址
CIDR 使用“斜线记法”(slash notation),它又称为 CIDR 记法,即在 IP 地址面加上一个斜线“/”,然后写上网络前缀所占的位数
2. CIDR地址块
CIDR把网络前缀都相同的连续的IP地址组成“CIDR地址块”。比如:128.14.32.0/20(128.14.0010 0000.0000 0000)表示的地址块有212个地址。
该地址块的起始地址为128.14.32.0。
在不需要指出地址块的起始地址时,也可将这样的地址块简称为“/20 地址块”
全 0 和全 1 的主机号地址一般不使用
3. 路由聚合
一个 CIDR 地址块可以表示很多地址,这种地址的聚合常称为路由聚合,它使得路由表中的一个项目可以表示很多个(例如上千个)原来传统分类地址的路由
路由聚合有利于减少路由器之间的路由选择信息的交换,从而提高了整个互联网的性能
路由聚合也称为构成超网 (supernetting)
CIDR虽然不使用子网了,但仍然使用“掩码“一词(但不叫子网掩码)
对于 /20 地址块,它的掩码是 20 个连续的 1。斜线记法中的数字就是掩码中1的个数
4. 路由聚合示例
这样进行路由聚合后,互联网中的路由器到主路由器只需1个表项,即200.24.16.0/20
5. 最长前缀匹配
使用 CIDR 时,路由表中的每个项目由“网络前缀”和“下一跳地址”组成。在查找路由表时可能会得到不止一个匹配结果
应当从匹配结果中选择具有最长网络前缀的路由:最长前缀匹配 (longest-prefix matching)
网络前缀越长,其地址块就越小,因而路由就越具体 (more specific)
最长前缀匹配又称为最长匹配或最佳匹配
例子:
某路由器R收到目地址为D=202.0.71.132=202.0.0100 0111.132的IP数据报,R路由表中有两个表项D匹配:
R1:202.0.68.0/22 =202.0.0100 01_ . _ _ _ _ _ _ _
R2: 202.0.71.128/25=202.0.01000111.1 _ _ _ _ _ _ _
按照最长前缀匹配原则,应选择R2表项转发该IP数据报
四、NAT
1. NAT(Network Address Translation) 的基本概念
解决IP地址短缺,有效快速补救办法(将私有IP转为共有IP)
四类应用领域:
ISP、ADSL、有线电视地址分配
移动无线接入地址分配
需要严格控制访问的内部网络
与防护墙结合的应用
2. NAT的工作原理
一对一(静态NAT)
多对多(动态NAT)
要记下A、B、C类的私有IP范围:
类别 | 网络号 | 总数 |
---|---|---|
A | 10 | 1 |
B | 172.16-172.31 | 16 |
C | 192.168.0-192.168.255 | 256 |
3. NAT的评价
违反IP地址结构模型设计原则(地址结构基础是每个IP均标识一个网络接入)
- NAT需要额外增加一个端口信息,并通过NAT转换表完成标识一个网络接入
由无连接变成有连接(维持专用/公用IP、端口号映射关系,互联网变脆弱)
破坏TCP/IP分层结构原则(修改分组头)
给P2P应用实现带来困难(破坏文件/语音共享机制)
高层协议安全性有影响
五、路由
路由选择算法
路由是指在计算机网络中确定数据包传输路径的过程。
路由选择的主要参数
跳数(hop count),跳数越少,路径越好
带宽(bandwidth),链路传输速率
延时(delay),从源结点到达目的节点的时间开销
负载(load),路由器单位时间通信量
可靠性(reliability),传输过程的误码率
开销(overhead),传输过程的耗费
路由选择算法的分类
采用表驱动的路由选择算法
查表决定”下一跳路由“
路由算法分类:
静态路由选择(非自适应)
动态路由选择(自适应,自动更新路由表)
路由表
路由表:由路由选择算法创建、维护
标准路由选择算法
路由表二元组(N,R)
N:目标网络地址,R:网络N的下一跳路由器地址
子网路由的三元组(M,N,R),其中M表示目标网络的子网掩码
IP路由汇聚
减少路由表项数量的重要手段
基于CIDR,网络前缀越长,主机地址数越少,寻址目的主机越容易
路由表项由(“网络前缀”、“下一跳地址”)组成
最短前缀匹配:路由选择具有最长网络前缀的路由
路由信息协议RIP
RIP是一种基于距离向量的内部网关协议(IGP),用于在小型到中型规模的网络中进行路由选择
向量距离路由算法
算法思想:
周期性向相邻路由器告知本地路由器可以到达的网络,以及到达该网络的距离(跳数)
路由向量(V,D)中,V-该路由器到达的目的网络地址;D-代表距离(跳数)
按照最短路径原则,刷新路由表
OSPF协议
链路状态协议、也是内部网关协议(IGP)
OSPF使用链路状态数据库来计算最短路径,并基于此选择最佳路由
OSPF协议支持分层设计,适用于大型复杂网络,具有较快的收敛速度和更好的可扩展性
OSPF通过交换链路状态信息来更新路由表,并使用不同的区域(Area)划分网络,以减少路由信息的传播范围
BGP协议
BGP是一种外部网关协议(EGP),用于在互联网中实现自治系统(AS)之间的路由选择
BGP是互联网中最常用的路由协议,用于交换不同自治系统之间的路由信息
BGP协议具有高度的可扩展性和强大的策略控制能力,使得网络管理员可以精确地控制路由流量
BGP协议使用路径矢量和属性来选择最佳路由,同时具备冗余路径和负载平衡的能力
六、互联网控制报文协议ICMP(Internet Control Message Protocol)
1. ICMP的作用和特点
不能独立于IP单独存在(IP辅助协议),解决IP不可靠问题
要封装成IP分组(长度≤576B),再传送给数据链路层
用于IP分组转发过程中检测错误,由路由器向源主机报告差错原因
不能纠正差错(只能报告)
传输层(高层)要得到可靠传输,需要采用其他机制来保证
2. ICMP报文类型和格式
其他部分的32bits取决于ICMP报文的类型。
3. ICMP差错报文
路由重定向报文
超时报文
参数出错报文
4. ICMP查询报文
时间戳请求和应答
回应请求和应答
地址掩码请求与应答
路由查询与通告
5. ICMP报文的封装
ICMP报文作为IP分组数据转发(被封装在IP分组的数据段中)
包含ICMP报文的IP分组头的协议类型字段值设为:1
七、地址解析协议ARP(Address Resolution Protocol)
1. IP地址与物理地址的映射
IP逻辑地址:实现不同物理网设备(主机、路由器等)地址统一
分组数据包最终在物理网络上传输(使用物理地址MAC)
地址映射方法:
静态映射(人工维护地址映射表)不足:
映射表不能及时反映网络设备变化(新添加了主机或路由器)
IP地址不变情况下更换网卡,重新映射(设备物理地址变化)
主机物理位置发生变化(IP地址变),但物理地址不变(IP变了)
动态映射(ARP)
2. ARP地址解析协议
正向地址解析协议(ARP):从已知IP地址解析对应的物理地址(MAC)的映射关系过程,从IP地址到物理地址
反向地址解析(RARP):从已知的物理地址解析对应的IP地址,从 IP地址到物理地址
3. ARP分组格式与封装
ARP分组中个字段意义
硬件类型:16位,物理网络类型(1-以太网)
协议类型:16位,网络协议类型(08000x-IPv4协议)
硬件地址长度:8位,物理地址长度(6-以太网地址)
协议地址长度:8位,网络层地址长度(4-IPv4协议)
操作:16位,1-ARP请求分组;2-ARP应答分组
源(目的)结点MAC地址:6B,以太网源(目的)结点物理地址
源(目的)结点IP地址:4B,源(目的)结点IP地址
补充数据段:18B,ARP分组长度达到46B(最小帧64B要求)
ARP分组的封装
4. 地址解析过程
- 假设有两台设备,设备A和设备B,它们在同一个局域网内。
- 设备A想要发送数据给设备B,但它只知道设备B的IP地址,不知道设备B的MAC地址。
- 设备A首先检查自己的ARP缓存,查看是否有设备B的IP地址对应的MAC地址。如果有,设备A可以直接使用该MAC地址进行通信。
- 如果设备A的ARP缓存中没有设备B的MAC地址,设备A将发送一个ARP请求广播到局域网上的所有设备。
- ARP请求中包含了设备A的MAC地址和IP地址,以及设备A想要解析的目标设备B的IP地址。
- 其他设备在收到ARP请求后,会检查请求中的目标IP地址是否与自己的IP地址匹配。
- 设备B收到ARP请求后,发现目标IP地址与自己的IP地址匹配,于是设备B将发送一个ARP响应给设备A。
- ARP响应中包含了设备B的MAC地址,设备A收到ARP响应后,将设备B的IP地址与MAC地址关联,并将其存储在自己的ARP缓存中。
- 现在设备A知道了设备B的MAC地址,可以使用该MAC地址发送数据包给设备B。
注:第三步中要使用本地ARP高速缓存
5. ARP欺骗与防范
ARP协议的缺陷
ARP高速缓存根据所接收的ARP协议包,随时进行动态更新
ARP协议无需连接,任意主机在无ARP请求时,也可以做出应答
ARP协议没有认证机制,只要接收的协议包有效,主机无条件根据协议包内容刷新本机ARP缓存,并不检查该协议包的合法性
ARP欺骗过程
很好理解,就是欺骗者C可以截取A和B的通信内容,并加以篡改。
ARP欺骗的防范
静态绑定(常用方法):静态绑定IP和MAC,解决内网PC欺骗
在网关做相同绑定(双重绑定)
ARP防护软件:常用工具Antiarp(以一定频率广播正确ARP信息)
使用具有ARP防护功能路由器