完成《计网》网络层

main
InkSoul 2023-07-26 20:56:54 +08:00
parent 4671fbaa7c
commit ea6e70a5f4
67 changed files with 427 additions and 0 deletions

View File

@ -0,0 +1,427 @@
---
title: "《计网》网络层"
date: 2023-07-26T11:37:50+08:00
---
## 网络层概述
* 网络层主要任务是实现网络互联,进而实现数据包在各网络之间的传输
* 需要解决以下问题
* 网络层向运输层传输需要提供怎么样的服务
* 网络层寻址问题
* 路由选择问题
* 主要功能
* 异构网络互联
* 异构网络:数据链路层和物理层均不同网络
* 网络层的任务之一就是使异构网络实现互联
* 网络互联通常是指用路由器进行网络互联和路由选择
* 使用中继系统连接网络
* 物理层中继系统
* 转发器,集线器
* 数据链路层中继系统
* 网桥,交换机
* 网络层中继系统
* 路由器
* 网络层以上的中继系统
* 网络
* 路由选择与分组转发
* 路由选择【确定路径】
* 分组转发【一个分组到达后的动作】
* 拥塞控制
* 拥塞
* 在通信子网中,因出现过量的分组而引起网络性能下降的现象
* 此时所有节点都来不及接受分组,而要丢弃大量分组
* 判断拥塞
* 观察网络吞吐量与网络负载的关系
* 随着通信子网负载的增加,吞吐量反而降低,即可能发生拥塞
* 轻度拥塞->拥塞->死锁
* 拥塞控制的方法
* 开环控制【静态】:事先考虑可能发生拥塞的情况,一旦系统启动,就不能修改
* 闭环控制【动态】:采用检测网络监视哪里发生了拥塞,动态调整网络系统运行
## SDN的基本概念
* 软件定义网络SDN采用集中式的控制层面和分布式的数据层面来控制网络
* 北向接口SDN提供的编程接口
* 南向接口SDN控制器和转发设备建立双向会话的接口使用南向接口协议如openflow
* 东西向接口SDN控制器集群内部控制器之间的通信接口
## 网络层设备
### 冲突域和广播域
* 域 = 冲突或广播在其中发生并传播的区域
* 冲突域 = 连接到同一物理介质上的所有节点的集合这些节点之间存在介质争用的现象【OSI第一层概念】
* 广播域 = 接收同样广播消息的节点集合【OSI中第二层概念】
* 局域网LAN特指使用路由器分割的网络即广播域
### 路由器的组成和功能
* 路由器是一种具有多个输入/输出端口的专用计算机
* 路由器主要实现物理层,数据链路层,网络层的功能
* 路由器是网络层设备
* 路由器的任务
* 连接异构网络并完成路由转发
* 路由器的功能
* 分组转发,处理通过路由器的数据流
* 路由计算,通过和其他路由器进行路由协议的交互,完成路由表的计算
* 路由器的组成
* ![](../../images/《计网》网络层/路由器的组成.jpg)
* 路由选择部分
* 路由选择处理机 + 路由选择协议 + 路由表
* 控制部分,核心是路由选择处理机
* 任务是根据所选定的选择协议构造出路由表
* 同时不断更新路由信息和维护路由表
* 分组转发部分
* 组成部分
* 交换结构(本身是一个网络) + 一组输入端口 + 一组输出端口
* 三种交换方式
* 通过交换器进行交换
* 通过总线进行交互
* 通过互联网络进行交互
### 路由表与路由转发
* 路由表根据路由选择算法得出,主要用途为路由选择
* 路由表的组成 = 目的网络的IP地址 + 子网掩码 + 下一跳IP地址 + 接口
* 路由表总是用软件实现,转发表可以用软件也可以用邮件实现
* 路由表不等于转发表,分组的实际转发是靠直接查找转发表,而不是直接查找路由表
* 路由表中默认路由的目的地址和子网掩码都是0.0.0.0
* ![](../../images/《计网》网络层/路由表.jpg)
## IP地址的基本知识
### IP地址的定义
![](../../images/《计网》网络层/IP地址定义.png)
* MAC的作用则是实现直连的两个设备之间通信而IP负责在没有直连的两个网络之间进行通信传输
* 源IP地址和目标IP地址在传输过程中是不会变化的没有使用NAT网络情况下只有源MAC地址和目标MAC一直在变化
* IPV4地址最大值由32位正整数来表示IP地址在计算机是以二进制的方式处理的
* IP地址最大值 = $2^{32} = 43$亿左右
* IP地址并不是根据主机台数来配置的而是以网卡像服务器、路由器等设备都是有2个以上的网卡也就是会有2个以上的IP地址
### 分类编制的IPV4地址
#### 分类
![](../../images/《计网》网络层/分类编制的IPV4地址.jpg)
* ABC类地址主要由网络号和主机号组成
* 网络号标志主机/路由器所连接到的网络
* 主机号标志主机/路由器
* 环回测试网络
* 127.x.x.x是环回自检地址不指派
* 最小的环回地址127.0.0.1
* 最大的环回地址127.255.255.254
* 最大可用网络数
* A类最大可用网络数 = $2^{网络号} - 2$
* BC类最大可用网络数 = $2^{网络号}$
* 网络号为0不指派
* 网络号为127不指派
* 最大可用主机数
* 最大可用主机数 = $2^{主机号} - 2$
* 主机号全为1的地址是广播地址【255.255.255.255只能作为目的地址使用】
* 主机号全为0的地址是网络本身【0.0.0.0只能作为源地址使用】
* DE地址
* D类和E类地址没有主机号
* 不可用于主机IP
* D类常用于多播
* E类是预留的分类暂时未使用
* IP分类的优点
* 简单明了、选路(基于网络地址)简单
* IP分类的缺点
* 同一网络下没有地址层次,缺少地址层次的灵活性
* C类地址254个太少了B类地址65534个又太多了不能很好地与显示网络匹配
* 可用CIDR解决
* 例题
* ![](../../images/《计网》网络层/例题分类编制的IPV4地址.jpg)
* 一般不适用的IP地址
* ![](../../images/《计网》网络层/一般不使用的IP地址.jpg)
### 划分子网的IP地址
![](../../images/《计网》网络层/划分子网的IPV4地址.jpg)
![](../../images/《计网》网络层/划分子网的IPV4地址2.jpg)
* 划分子网原因
* 两级IP地址分类的地址空间流动率有时很低用子网划分的方法来改善这个问题
* 划分子网点的好处
* 增加子网的数量->减少广播域的大小->减少了主机的数量->提高了IP地址的利用率
* 不增加网络的数量
* 子网划分
* 将主机地址分为两个部分【子网网络地址和子网主机地址】的过程
* 未做子网划分的ip地址网络地址+主机地址
* 做子网划分后的ip地址网络地址 + (子网网络地址+子网主机地址)
* 如何得到网络地址
* 将子网掩码和ip地址按位计算AND就可以得到网络号
* 默认子网掩码
* A类255.0.0.0
* B类255.255.0.0
* C类255.255.255.0
* 如何进行子网划分
* 假设对C类地址进行子网划分
* 网络地址218.75.230.0使用子网掩码255.255.255.192对其进行子网划分
* C类地址中前24位是网络号最后8位是主机号
* 根据子网掩码可知从8位主机号中借用2位作为子网号
* 由于子网网络地址被划分成2位那么子网地址就有4个分别是00、01、10、11
* 划分后的4个子网如下图
* ![](../../images/《计网》网络层/例题划分子网的IPV4地址.jpg)
### 无分类编制的IPV4地址【CIDR】
* 引入原因
* CIDR消除了传统的A类B类和C类地址以及划分子网的概念
* 作用
* 一种归并技术,可以把小的网络汇聚成大的超网
* 可以更加有效地分配IPV4的地址空间并且可以在新的IPV6使用之前允许因特网的规模继续增长
* 细节
* ![](../../images/《计网》网络层/无分类编制的IPV4地址.jpg)
* 路由聚合
* 为了减少路由表的消耗,用路由聚合来聚合网络地址
* 网络前缀越长,地址块越小,路由越具体
* 最长前缀匹配:有多条路由可选的时候,选择网络前缀最长的那条
* ![](../../images/《计网》网络层/路由聚合.jpg)
* 例题
* ![](../..images/《计网》网络层/例题无分类编制的IPV4地址.jpg)
* 答案为C
### IPV4的应用规划
* 定长的子网掩码
* 使用同一个子网掩码来划分子网
* 子网划分方式不灵活,只能划分出$2^n$个子网
* 每个子网所分配的IP地址数量相同容易造成IP地址浪费
* ![](../../images/《计网》网络层/定长的子网掩码.jpg)
* 变长的子网掩码
* 使用不同的子网掩码来划分子网
* 子网划分方式灵活,可以按需分配
* 每个子网所分配的IP地址数量可以不同尽可能减少对IP地址的浪费
* ![](../../images/《计网》网络层/变长的子网掩码1.jpg)
* ![](../../images/《计网》网络层/变长的子网掩码2.jpg)
### IP数据报的发送和转发过程
* 主机发送IP数据报
* 判断目的主机是否与自己在同一网络
* 在同一网络则直接交付
* 不在同一网络,数据间接交付,传输给主机所在的网络的默认网关(路由器),由默认网关帮忙转发
* 路由器转发IP数据报
* 检查IP数据报首部是否出错
* 出错直接丢弃该IP数据报并通告源主机
* 没有出错,直接进行转发
* 根据IP数据报的目的地址在路由表中查找匹配的条目
* ![](../../images/《计网》网络层/路由器转发IP数据报.jpg)
* 若找到匹配的条目,则转发给条目中指示的下一跳
* 若找不到则丢弃该IP数据报并通告源主机
### 静态路由配置及其可能产生的路由环路问题
* 静态路由配置
* ![](../../images/《计网》网络层/静态路由配置.jpg)
* 特定主机路由(默认路由)
* ![](../../images/《计网》网络层/特定主机路由.jpg)
* 静态路由配置错误导致路由环路
* ![](../../images/《计网》网络层/静态路由配置错误导致路由环路.jpg)
* 为了防止IP数据报在路由环路中永久兜圈在IP数据报首部设有生存时间TTL字段
* IP数据报进入路由器后TTL字段的值减1
* 若TTL的值不等于0则被路由器转发否则被丢弃
* 聚合不存在的网络而导致的路由环路
* ![](../../images/《计网》网络层/聚合不存在的网络而导致的路由环路.jpg)
* 用黑洞路由条目配置解决
* 网络故障而导致的路由环路
* ![](../../images/《计网》网络层/网络故障而导致的路由环路.jpg)
* 用黑洞路由条目配置解决该问题
* 如果故障消失了,会暂时把黑洞路由条目设置为失效
### IPV6
![](../../images/《计网》网络层/IPV61.jpg)
![](../../images/《计网》网络层/IPV62.jpg)
![](../../images/《计网》网络层/IPV61.jpg)
* IPV6地址的标识方法
* IPV6地址长度是128位是以每16位作为一组
* 每组用冒号[:]隔开
* 如果出现连续的0时还可以就爱那个这些0省略并用两个冒号隔开
* 一个IP地址中只允许出现一次两个连续的信号
* IPV6地址的结构
* 单播地址,用于一对一的通信
* 组播地址,用于一对多的通信
* 任播地址,用于通信最近的节点,最近的节点由协议决定
* IPV6的亮点
* IPV6可自动配置【即插即用】
* IPV6首部长度采用固定的值40字节去掉了校验
* IPV6安全性提高了
* IPV6相比IPV4的改进
* 取消了首部校验和字段
* 因为在数据链路层和传输层都会校验因此IPV6直接取消了IP的校验
* 取消了分片/重新组装相关字段
* 分片与重组时耗时的过程IPV6不允许在中间路由器进行分片与重组
* 取消选项字段
* 选项字段不再是标准IP首部的一部分了
* 但它并没有消失
* 而是可能出现在IPV6首部中的下一个首部指出的位置上
* 删除该选项字段使得IPV6的首部成为固定长度的40字节
### IPV4首部
![](../../images/《计网》网络层/IPV4首部.jpg)
* 首部内容
* 首部长度总长度片偏移的基本单位分别为4B,1B,8B
* ![](../../images/《计网》网络层/首部内容.jpg)
* IPV4分片
* 以太网MTU【最大传输单元】不超过1500
* DF=1时分组的长度又超过MTU时丢弃该分组并用ICMP差错报文向源主机报告
* MF = 1表示接受到的分片不是最后一个分片
* 所有片中的有效数据核载都是8的倍数【偏移值的单位是8B】
* 在目的主机中对分片后的数据报重组
* ![](../../images/《计网》网络层/IPV4分片1.jpg)
* ![](../../images/《计网》网络层/IPV4分片2.jpg)
* 例题
* ![](../../images/《计网》网络层/IPV4分片例题.jpg)
## 路由选择协议概述
* 静态路由选择/动态路由选择
* ![](../../images/《计网》网络层/路由选择.jpg)
* 路由协议的主要特点
* 自适应-动态路由选择,能较好地适应网络状态的变化
* 分布式-路由器之间交换路由信息
* 分层次-将整个因特网划分为许多较小的自治系统
* 分层次的路由选择协议
* ![](../../images/《计网》网络层/分层次的路由选择协议.jpg)
* 路由选择协议
* ![](../../images/《计网》网络层/路由选择协议汇总.jpg)
### 三种路由协议比较
||RIP|OSPF|BGP|
|---|---|---|---|
|类型|内部|内部|外部|
|路由算法|距离-向量|链路状态|路径-向量|
|传递协议|UDP应用层协议|IP网络层协议|TCP|应用层协议|
|路径选择|跳数最少|代价最低|较好,非最佳|
|交换节点|和本节点相邻的路由器|网络中的所有路由器|和本节点相邻的路由器|
|交换内容|当前本路由器知道的全部信息即自己的路由表RIP不知道全网的拓扑结构|与本路由相邻的所有路由器的链路状态,任何一个路由器都知道自己所在区域的拓扑结构|首次,整个路由表<br>非首次,有变化的部分|
### 路由信息协议RIP的工作原理
* RIP基本概念
* ![](../../images/《计网》网络层/RIP基本概念.jpg)
* RIP工作原理
* ![](../../images/《计网》网络层/RIP工作原理.jpg)
* RIP基本工作过程
* ![](../../images/《计网》网络层/RIP基本工作过程.jpg)
* RIP路由条目更新规则
* ![](../../images/《计网》网络层/RIP路由条目更新规则.jpg)
* RIP坏消息传播得慢
* ![](../../images/《计网》网络层/RIP坏消息传的慢的问题.jpg)
### 开放最短路径优先OSPF的基本工作原理
* OSPF基本概念
* ![](../../images/《计网》网络层/OSPF基本概念.jpg)
* 区域边界路由器:主干区域内,用于连接主干区域和其他下层区域的路由器
* 主要在主干区域中的路由器都叫做主干路由器
* 主干路由器可以兼做区域边界路由器
* 自治系统有4类路由器区域内部路由器主干路由器区域边界路由器自治域边界路由器
* 链路的代价
* ![](../../images/《计网》网络层/链路的代价.jpg)
* 交互问候分组
* ![](../../images/《计网》网络层/交互问候分组.jpg)
* 计算最短路径的过程
* ![](../../images/《计网》网络层/计算最短路径的过程.jpg)
* 五种分组类型
* ![](../../images/《计网》网络层/五种分组类型.jpg)
* OSPF的基本工作过程
* ![](../../images/《计网》网络层/OSPF的基本工作过程.jpg)
* DR和BDR
* ![](../../images/《计网》网络层/DR和BDR.jpg)
* 区域
* ![](../../images/《计网》网络层/区域.jpg)
* 总结
* ![](../../images/《计网》网络层/内容总结.jpg)
### 边界网关协议BGP的工作原理
* BGP交换的网络可达性信息要到达某个网络所要结果的一系列自治系统/路径
* ![](../../images/《计网》网络层/边界网关协议BGP的工作原理.jpg)
## IP协议相关技术
### ICMP【互联网控制报文协议】
* 概述
* ![](../../images/《计网》网络层/ICMP概述.jpg)
* 五种差错报文
* ![](../../images/《计网》网络层/五种差错报文1.jpg)
* ![](../../images/《计网》网络层/五种差错报文2.jpg)
* ![](../../images/《计网》网络层/五种差错报文3.jpg)
* ![](../../images/《计网》网络层/五种差错报文4.jpg)
* ![](../../images/《计网》网络层/五种差错报文5.jpg)
* 不应该发送差错报文的情况
* ![](../../images/《计网》网络层/不应该发送差错报文的情况.jpg)
* ICMP询问方式
* ![](../../images/《计网》网络层/ICMP询问方式.jpg)
* ICMP应用
* ![](../../images/《计网》网络层/ICMP应用1.jpg)
* ![](../../images/《计网》网络层/ICMP应用2.jpg)
* ![](../../images/《计网》网络层/ICMP应用3.jpg)
* ![](../../images/《计网》网络层/ICMP应用4.jpg)
### ARP协议【IP地址到MAC地址的映射】
* ARP主要内容
* ARP广播只在子网中传播
* 硬件地址只具有本地意义每当路由器将IP数据报转发到一个具体的网络时都需要重新封装源硬件地址和目的硬件地址
* 路由器在收到分组后,剥离该分组的数据链路层协议头,然后在分组被转发之前,给分组加上一个新的链路层协议头
* ARP请求是广播发送【不知道目标设备在哪里】
* ARP响应式单播发送
* ARP过程
* 目的主机在本局域网
* 先在ARP高速缓存中查看有无目的IP地址与MAC地址的映射
* 有则把硬件地址写入MAC帧然后通过局域网把该MAC帧发往此硬件地址
* 无则通过广播ARP请求分组在获得目的主句的ARP响应分组后将目的主机的IP地址与硬件地址写入ARP告诉缓存
* 目的主机不在本局域网
* 将IP分组发送给本局域网的路由器先通过上述方式获得路由器的IP地址和硬件地址的映射关系
### DHCP协议【动态主机配置协议】
* DHCP主要内容
* ![](../../images/《计网》网络层/DHCP主要内容.jpg)
* DHCP过程
* ![](../../images/《计网》网络层/DHCP过程.jpg)
* ![](../../images/《计网》网络层/DHCP过程1.jpg)
### 虚拟专用网VPN和网络地址转换NAT
* 公有地址,私有地址
* ![](../../images/《计网》网络层/公有地址,私有地址.jpg)
* 虚拟专用网VPN
* ![](../../images/《计网》网络层/虚拟专用网VPN.jpg)
* 网络地址转换NAT
* ![](../../images/《计网》网络层/网络地址转换NAT.jpg)
* NAT的表项需要由管理员来添加
* NAT转换流程
* ![](../../images/《计网》网络层/NAT转换流程.jpg)
* 上图有两个客户端192.168.1.10和192.168.1.11
* 与服务器183.232.231.172进行通信并且这两个客户端的本地端口都是1025
* 此时两个私有IP都转换IP为公有地址120.229.175.121,但以不同的端口号作为区分
* 于是生成一个NAPT路由器的转换表
* 该表可以正确地转换地址跟端口的组合令客户端A、B能同时与服务器之间进行通信
* 这种转换表在NAT路由器上自动生成
* 例如在TCP的情况下建立TCP连接首次握手时的SYN包一经发出就会生成这个表
* 后又随着收到关闭连接时发出FIN包的确认应答从表中被删除

Binary file not shown.

After

Width:  |  Height:  |  Size: 414 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 463 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 594 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 319 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 199 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 182 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 332 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 351 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 312 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 446 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 293 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 298 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 355 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 380 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 391 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 257 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 204 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 288 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 287 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 275 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 250 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 238 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 265 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 274 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 401 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 479 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 299 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 489 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 243 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 382 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 368 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 399 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 552 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 335 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 436 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 338 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 389 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 284 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 309 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 219 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 338 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 287 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 247 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 294 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 577 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 302 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 311 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 398 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 668 KiB