网络层
学习参考资料:
- 湖南科技大学—计算机网络
- 谢希仁 计算机网络(第7版)
文章目录
1. 概述
数据链路层是实现设备之间通信的非常重要的一层,但是数据链路层的工作只能让通信在同一种网络中进行,如果需要跨越网络,就需要上升到第三层——网络层。
网络层的主要任务是实现网络互连
,进而实现数据包在各网络之间的传输
。
要实现网络层任务,需要解决以下主要问题:
- 网络层向运输层提供怎样的服务(
可靠传输
还是不可靠传输
) - 网络层寻址问题
- 路由选择问题
1.1 IP协议及配套协议
直接交付:同一网络中不同主机之间通信。
间接交付:不同网络中不同主机之间通信。
2. 两种服务
2.1 面向连接的虚电路服务
2.2 无连接的数据报服务
2.3 对比
网络层向上只提供简单灵活的、无连接的、尽最大努力交付
的数据报服务。
网络层不提供服务质量的承诺
。即所传送的分组可能出错、丢失、重复和失序(不按序到达终点),也不保证分组传送的时限。
如果主机(即端系统)中的进程之间的通信需要可靠,那么就由网络的主机中的运输层负责可靠交付(包括差错处理、流量控制等)
。
3. IPv4地址
3.1 概述
3.2 点分十进制记法
3.3 分类编址的IPv4地址
3.3.1 A类地址
3.3.2 B类地址
3.3.3 C类地址
3.3.4 特殊IP地址
3.4 划分子网的IPv4地址
给定一个分类的IP地址和其相应的子网掩码,就知道子网划分的细节:
- 划分出的子网数量
- 每个子网可分配的IP地址数量
- 每个子网的网络地址和广播地址
- 每个子网可分配的最小和最大地址
3.5 无分类编址的IPv4地址
路由聚合
(构造超网)的方法是找共同前缀
。网络前缀越长,地址块越小,路由越具体。若路由器查表转发分组时发现有多条路由可选,则选择网络前缀最长的那条,这称为最长前缀匹配
,因为这样的路由更具体。
3.6 IPv4地址的应用规划
4. IP数据报的发送和转发过程
判断目的主机是否与自己在同一个网络:
- 源主机的IP地址与其子网掩码相与
- 目的主机的IP地址与其子网掩码相与
- 两者结果相同则处在同一个网络,反之不在同一个网络
4.1 路由器分组转发算法
5. IPv4数据报的格式
一个 IP 数据报由首部
和数据
两部分组成。
5.1 首部格式
首部分为两部分:第一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的;第二部分是可选字段,其长度是可变的。
- 版本:占4比特,指 IP 协议的版本,通信双方使用的IP协议的版本必须一致。目前广泛使用的 IP 协议版本号为 4 (即 IPv4)。
- 首部长度:占4比特,表示IP数据报首部的长度,该字段的取值以4字节为单位。最小十进制取值为5,表示IP数据报首部只有20字节固定部分;最大十进制取值为15,表示IP数据报首部包含20字节固定部分和最大40字节可变部分。
- 可选字段:长度从1个字节到40个字节不等,用来支持排错、测量及安全等措施。
- 填充字段:确保首部长度为4字节的整数倍,使用全0进行填充。
- 区分服务:占8比特,用来获得更好的服务。一般情况下不使用该字段。
- 总长度:占16比特,表示IP数据报的总长度(首部+数据)。最大取值为十进制的65535,以字节为单位。
标识、标志和片偏移这三个字段共同用于IP数据报分片,当IPv4数据报长度超过MTU时,无法封装,需要进行分片。以太网规定MTU值为1500字节。
- 标识:占16比特,属于同一个数据报的各分片数据报应该具有相同的标识。IP软件维持一个计数器,每产生一个数据报,计数器值加1,并将此值赋给标识字段。
- 标志:占3比特。
MF位:1表示后面还有分片;0表示这是最后一个分片。DF位:1表示不允许分片;0表示允许分片。
- 片偏移:占13比特,指出分片数据报的数据部分偏移其在原数据报的位置有多少个单位。以8个字节为单位。
- 生存时间TTL:占8比特,指示数据报在网络中可通过的路由器数的最大值。
- 协议:占8比特,指明IPv4数据报的数据部分是何种协议数据单元。
协议名称 | 协议字段值 |
---|---|
ICMP | 1 |
IGMP | 2 |
TCP | 6 |
UDP | 17 |
IPv6 | 41 |
OSPF | 89 |
- 首部检验和:占16比特,用来检测首部在传输过程中是否出现差错。不采用CRC检验码而采用简单的计算方法。
- 源IP地址和目的地址:各占32比特,用来填写发送该IP数据报的源主机的IP地址和接收该IP数据报的目的主机的IP地址。
5.2 网际控制报文协议ICMP
为了更有效地转发 IP 数据报和提高交付成功的机会,在网际层使用了网际控制报文协议 ICMP (Internet Control Message Protocol)。ICMP报文被封装在IP数据报中发送。
ICMP 是互联网的标准协议。ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告。
ICMP差错报告报文共有5种:
- 终点不可达
- 源点抑制
- 时间超过
- 参数问题
- 改变路由(重定向)
不发送ICMP差错报告报文的情况:
- 对 ICMP 差错报告报文不再发送 ICMP 差错报告报文。
- 对第一个分片的数据报片的所有后续数据报片都不发送ICMP 差错报告报文。
- 对具有多播地址的数据报都不发送 ICMP 差错报告报文。
- 对具有特殊地址(如127.0.0.0 或 0.0.0.0)的数据报不发送 ICMP 差错报告报文。
5.2.1 ICMP询问报文的类型
5.2.2 ICMP的应用举例
6. 路由选择协议
6.1 基本概念
- 静态路由选择策略:即非自适应路由选择,例如人工配置的路由等。其特点是简单和开销较小,但不能及时适应网络状态的变化,一般在小规模网络中使用。
- 动态路由选择策略:即自适应路由选择,路由器通过路由选择协议自动获取路由信息。其特点是能较好地适应网络状态的变化,但实现起来较为复杂,开销也比较大,适用于大规模网络。
自治系统 AS :在单一的技术管理下的一组路由器,而这些路由器使用一种 AS 内部的路由选择协议和共同的度量以确定分组在该 AS 内的路由,同时还使用一种 AS 之间的路由选择协议用以确定分组在 AS之间的路由。(尽管一个 AS 使用了多种内部路由选择协议和度量,但重要的是一个 AS 对其他 AS 表现出的是一个单一的和一致的路由选择策略。)
常见的路由选择协议如下:
6.2 内部网关协议RIP
RIP 不能在两个网络之间同时使用多条路由。RIP 选择一个具有最少路由器的路由(即最短路由),哪怕还存在另一条高速(低时延)但路由器较多的路由。
RIP 协议的三个特点:
- 仅和相邻路由器交换信息。
- 交换的信息是当前本路由器所知道的全部信息,即自己的路由表。
- 按固定的时间间隔交换路由信息,例如间隔30秒。当网络拓扑发生变化时,路由器也及时向相邻路由器通告拓扑变化后的路由信息。
6.2.1 工作原理
“收敛”就是在自治系统中所有的结点都得到正确的路由选择信息的过程。
距离向量算法:
6.2.2 优缺点
优点:
- 实现简单,开销较小。
缺点:
- RIP 限制了网络的规模,它能使用的最大距离为 15(16 表示不可达)。
- 路由器之间交换的路由信息是路由器中的完整路由表,因而随着网络规模的扩大,开销也就增加。
- “坏消息传播得慢”,网络出故障的传播时间往往需要较长的时间(例如数分钟),使更新过程的收敛时间过长。
6.3 内部网关协议OSPF
6.3.1 工作原理
- OSPF 不用 UDP 而是直接用 IP 数据报传送。
- OSPF 构成的数据报很短。这样做可减少路由信息的通信量。
- 数据报很短的另一好处是可以不必将长的数据报分片传送。
- 分片传送的数据报只要丢失一个,就无法组装成原来的数据报,整个数据报必须重传。
- 向本自治系统中所有路由器发送信息,这里使用的方法是洪泛法。
- 发送的信息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。
- 只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送此信息。
- 由于各路由器之间频繁地交换链路状态信息,因此所有的路由器最终都能建立一个链路状态数据库。
- 这个数据库实际上就是全网的拓扑结构图,它在全网范围内是一致的(这称为链路状态数据库的同步)。
- OSPF 的链路状态数据库能较快地进行更新,使各个路由器能及时更新其路由表。
- OSPF 的更新过程收敛得快是其重要优点。
6.3.2 划分区域
- 为了使 OSPF 能够用于规模很大的网络,OSPF 将一个自治系统再划分为若干个更小的范围,叫做区域。
- 每一个区域都有一个 32 位的区域标识符(用点分十进制表示)。
- 区域也不能太大,在一个区域内的路由器最好不超过 200 个。
- 划分区域的好处就是将利用洪泛法交换链路状态信息的范围局限于每一个区域而不是整个的自治系统,这就
减少了整个网络上的通信量
。 - 在一个区域内部的路由器只知道本区域的完整网络拓扑,而不知道其他区域的网络拓扑的情况。
- OSPF 使用层次结构的区域划分。在上层的区域叫做主干区域 (backbone area)。
- 主干区域的标识符规定为0.0.0.0。主干区域的作用是用来连通其他在下层的区域。
6.3.3 Dijkstra最短路径算法
6.4 外部网关协议BGP
BGP 是不同自治系统的路由器之间交换路由信息的协议。
- 自治系统之间的路由选择必须考虑有关策略。
- 边界网关协议 BGP 只是寻找一条能够到达目的网络且
比较好的路由
(不能兜圈子),而并非要寻找一条最佳路由
。
6.4.1 工作原理
一般说来,两个 BGP 发言人都是通过一个共享网络连接在一起的,而 BGP 发言人往往就是 BGP 边界路由器,但也可以不是 BGP 边界路由器。
- BGP适用于多级结构的因特网
6.4.2 报文类型
- 打开 (OPEN) 报文:用来与相邻的另一个BGP发言人建立关系。
- 更新 (UPDATE) 报文:用来发送某一路由的信息,以及列出要撤消的多条路由。
- 保活 (KEEPALIVE) 报文:用来确认打开报文和周期性地证实邻站关系。
- 通知 (NOTIFICATION) 报文,用来发送检测到的差错。
6.4.3 特点
- BGP 协议交换路由信息的结点数量级是自治系统数的量级,这要比这些自治系统中的网络数少很多。
- 每一个自治系统中 BGP 发言人(或边界路由器)的数目是很少的。这样就使得自治系统之间的路由选择不致过分复杂。
- BGP 支持 CIDR,因此 BGP 的路由表也就应当包括目的网络前缀、下一跳路由器,以及到达该目的网络所要经过的各个自治系统序列。
- 在 BGP 刚刚运行时,BGP 的邻站是交换整个的 BGP 路由表。但以后只需要在发生变化时更新有变化的部分。这样做对节省网络带宽和减少路由器的处理开销都有好处。
7. 路由器的构成
- 路由器是一种具有多个输入端口和多个输出端口的专用计算机,其任务是
转发分组
。也就是说,将路由器某个输入端口收到的分组,按照分组要去的目的地(即目的网络),把该分组从路由器的某个合适的输出端口转发给下一跳路由器。 - 下一跳路由器也按照这种方法处理分组,直到该分组到达终点为止。
路由器的转发分组正是网络层的主要工作。
7.1 结构
整个的路由器结构可划分为两大部分:路由选择部分和分组转发部分。
路由选择部分:
- 控制部分,其核心构件是路由选择处理机。
- 路由选择处理机的任务是根据所选定的路由选择协议构造出路由表,同时经常或定期地和相邻路由器交换路由信息而不断地更新和维护路由表。
分组转发部分:
- 交换结构 (switching fabric):又称为交换组织,其作用是根据转发表 (forwarding table) 对分组进行处理。
- 输入端口和输出端口(端口就是硬件接口)。
输入端口对线路上收到的分组的处理
输出端口将交换结构传送来的分组发送到线路:
路由器中的输入或输出队列产生溢出是造成分组丢失的重要原因。
8. 虚拟专用网VPN和网络地址转换NAT
8.1 虚拟专用网VPN
- 由于 IP 地址的紧缺,一个机构能够申请到的IP地址数往往远小于本机构所拥有的主机数。
- 考虑到互联网并不很安全,一个机构内也并不需要把所有的主机接入到外部的互联网。
- 假定在一个机构内部的计算机通信也是采用 TCP/IP 协议,那么从原则上讲,对于这些仅在
机构内部
使用的计算机就可以由本机构自行分配其 IP 地址
。
专用地址只能用作本地地址而不能用作全球地址
。在互联网中的所有路由器,对目的地址是专用地址的数据报一律不进行转发。采用这样的专用 IP 地址的互连网络称为专用互联网或本地互联网,或专用网。因为这些专用地址仅在本机构内部使用。专用IP地址也叫做可重用地址 (reusable address)。
- 利用公用的互联网作为本机构各专用网之间的通信载体,这样的专用网又称为虚拟专用网VPN (Virtual Private Network)。
- “专用网”是因为这种网络是为本机构的主机用于机构内部的通信,而不是用于和网络外非本机构的主机通信。
- “虚拟”表示“好像是”,但实际上并不是,因为现在并没有真正使用通信专线,而VPN只是在效果上和真正的专用网一样。
8.2 网络地址转换NAT
虽然因特网采用了无分类编址方式来减缓IPv4地址空间耗尽的速度,但由于因特网用户数目的激增,特别是大量小型办公室网络和家庭网络接入因特网的需求不断增加,IPv4地址空间即将面临耗尽的危险仍然没有被解除。
1994年提出了一种网络地址转换NAT的方法再次缓解了IPv4地址空间即将耗尽的问题。
NAT能使在专用网上使用专用地址的主机与互联网上的主机通信,且不用加密。
需要在专用网连接到互联网的路由器上安装 NAT 软件。装有 NAT 软件的路由器叫做 NAT路由器,它至少有一个有效的外部全球IP地址。
所有使用本地地址的主机在和外界通信时,都要在 NAT 路由器上将其本地地址转换成全球 IP 地址,才能和互联网连接。
8.2.1 转换过程
当 NAT 路由器具有 n 个全球 IP 地址时,专用网内最多可以同时有 n 台主机接入到互联网。这样就可以使专用网内较多数量的主机,轮流使用 NAT 路由器有限数量的全球 IP 地址。
通过 NAT 路由器的通信必须由专用网内的主机发起。专用网内部的主机不能充当服务器用,因为互联网上的客户无法请求专用网内的服务器提供服务。
8.2.2 网络地址与端口号转换NAPT
为了更加有效地利用 NAT 路由器上的全球IP地址,现在常用的 NAT 转换表把运输层的端口号也利用上。这样,就可以使多个拥有本地地址的主机,共用一个 NAT 路由器上的全球 IP 地址,因而可以同时和互联网上的不同主机进行通信。
使用端口号的 NAT 叫做网络地址与端口号转换NAPT (Network Address and Port Translation),而不使用端口号的 NAT 就叫做传统的 NAT (traditional NAT)。