计算机网络 CH4

第四章 网络层

4.1 网络层概述

4.1.1 分组转发和路由选择

简单来说,可以这样总结:数据链路层解决的是在我的一个局域网内部数据传输的过程,而网络层着眼的是跨网络的数据传输alt text

比如说以图上的为例,路由器负责进行分组转发(转发表,会告诉你去往哪一个网络应该走哪一个端口)以及根据算法选择下一个路由器,二者一个相当于地图,一个相当于导航

4.1.2 网络层提供的服务

这里了解一下即可 alt text alt text alt text 简单理解一下:面向连接的相当于是先在两者之间建立了一条虚拟的链路,然后传输数据(有点像打电话,只不过我的连接是虚拟的);数据报服务则是由我的主机来保证数据连接,不需要建立链路 也就是说,这二者之间分别是对于主机和路由器的要求比较高;并且,虚电路服务如果再使用可靠传输的网络协议,就可使所发送的分组最终正确(无差错按序到达、不丢失、不重复)到达接收方;而数据报服务传送的分组可能误码、丢失、重复和失序。

数据报服务因为对于路由器的要求比较低,所以设计的成本较低,也更灵活。本章内容主要围绕网际层如何传播可靠的数据报展开

4.2 网际协议(IP)

4.2.1 异构网络互连

alt text

4.2.2 IPv4地址及其编址方法(重要!)

4.2.2.1 IPv4地址概述

alt text 也就是说,是给每一个接口分配一个唯一的标识符;(现在使用更多的是IPv6地址) 其是由一个专门的组织进行分配的;当前,IPv4地址已经全部分配完毕

4.2.2.2 IPv4地址的表示方法

alt text

原始的是一个32位的二进制数;然后将其每8位一组,用点隔开,然后转化为十进制数

4.2.2.3 IPv4地址的分类编址方法

alt text 这个的意思是,对于IP地址的划分,分为前半部分和后半部分;前半部分的网络号,在同一个网络中就一样;而后半部分的主机号则区分了不同的主机(或者路由器的接口) 这里的具体位数不定,不一定就是16位

一般地,一共有如下的几种网络编址的方法:alt text 它们的区别是,网络号占的位数不同;同时,对于每一类的地址,其开头的数字也不同,方便进行区分

多播地址D:一般只用作目的地址;E类是保留地址,不进行分配。

ABC都是单播地址,也就是一对一进行通信;只有他们可以分配给主机和路由器的接口。 对于以上的五类地址的总结: alt text 一个常用的判断方法; alt text

alt text

要注意!分配的时候,不仅仅是主机需要分配地址,我的路由器的接口也需要一个地址

alt text但是,直接进行分配的话,很容易带来大量的浪费;比如说,我一个十六位的主机号,可以分配约为216个地址,但是我很可能现实中只用了很少的几个主机;因此,在这种情况下,我们需要借用划分子网编址的方法,如图所示,比如说同样是网络号为145.13,我规定第三段为1代表子网2,第三段为2代表子网3,可以改进这个问题。

根据这个原理,我们就可以引入子网掩码的概念:alt text用一系列高位为1的二进制数字可以帮助区分有多少的主机号被用来作为子网号;进行计算的时候,用子网掩码和IP地址进行按位与计算。alt text

特别地,每一类都有自己的默认子网掩码;这也很好理解

4.2.2.5 IPv4地址的无分类编址方法

这个所谓的无分类方法,相当于我舍弃了前面的基本划分,直接使用一个若干位的地址掩码,来表示主机号占了多少位和网络号占了多少位。

介绍一下路由聚合的概念:比如说这里想要将一系列ip的信息告诉路由器R2,那么和将这些ip一条条告知相比,显然先找到它们的共同点会更划算,这就是路由聚合的概念alt text找到一个共同的前缀,形成一个聚合地址块 很自然想到,在选用前缀的时候应该选择最长的共同前缀,看下面这个例子alt text这就相当于,选择了共同的前缀之后,用掩码标记共同前缀的位数

4.2.3 IPv4地址的应用规划

首先我们记住,在对于一个小网络分配ip地址的时候,不仅需要给主机分配ip地址,还要给路由器接口分配ip地址,同时保留网络地址和广播地址;alt text比如说这张图中就展示了这方面的内容,同时注意对于两个路由器之间的连接其实也需要分配一个网络(回忆做实验时候的内容—)

路由器的接口相当于一个对于这个子网接收信息的统一“收发口”

使用IPv4进行地址规划一共有两种不同方法: 1. 定长子网掩码划分,这个时候也就是每一个子网可分配的主机数量都是一样的,如下图所示alt text,相当于一共5个子网,因此划分了8位作为子网号

  1. 变长子网掩码划分,这是根据不同网络内需要分配的主机号来决定的,这时候需要注意的是子网号不能随机分配,而是要遵守下面的规范,同时对于子网地址的划分要从大到小进行分配,如图所示alt text先从需要块大小最大的/27子网开始分配,最后分配需要最小的/30子网。 依然看一个例题:alt text这个其实也很好理解

4.2.4 IPv4地址与MAC地址

alt text 在传递过程中。IP数据报一直保持不变(两端是起点和终点),而数据包的源MAC地址和目的MAC地址逐链路(或逐网络)改变这是一个帮助理解的例子alt text

4.2.5 地址解析协议(ARP)

ARP协议的作用就是获得给定ip地址对应的MAC地址,原理如下: 每一台主机都会相应保存一个ARP表,记录ip地址对应的mac地址;如果想要发送的目标的ip地址未知,就会发送广播arp请求,如下所示:alt text B正确收到并且会给A发送arp响应,之后A会将正确的对应关系保存到自己的arp表中。这里要注意,获得的arp表的内容需要周期性删除,原因如下:alt text

注意arp只能在局域网内部使用,不可以跨网络(也就是跨路由器)进行使用

4.2.6 IP数据报的发送和转发流程

alt text直接交付&间接交付:如果在同一个以太网中,不需要经过路由器转发,那么是直接交付;否则如果需要经过路由器转发,就是间接交付。

因此,发送IP数据报的过程如下: 1. 首先取出接收方的ip地址,取出前若干位,判断发送方和接收方的ip地址对应的网络是否相同。如果不同:就需要转发到默认网关:和当前局域网中主机相连的路由器接口的ip地址。之后,在路由器接收到数据之后,需要进行如下的处理:alt text 2. 将我的目标ip地址和路由器中对应表的地址掩码进行逻辑与运算,来决定下一跳前往的接口。

这里需要注意的一个知识点是,路由器隔离广播域,也就是说发送的一个广播无法通过路由器进行传播。这是因为否则随意转发广播的话会带来严重的广播风暴问题。

4.2.7 IPv4数据报的首部格式

首先理解一下整个计算机网络中数据传输的流程:从上到下的数据一层层进行封装,每一层会加上自己所在层的协议和规范的内容。比如说:alt text

这里相当于是说,首部的部分是实现协议内容的基础,而如下展示的就是首部的格式:(本节着重探讨固定部分)alt text 各个部分大概的功能:(具体看ppt) 1. 版本:也就是指示ipv4还是ipv6 2. 首部长度:告诉你首部的实际长度,最短为20字节(只有固定的)最大为60字节;这个字段的取值以4字节为单位,也就是最小的取值为5,最大为15 3. 可选字段:增加了更多的功能 4. 填充:填充全0,为了保证总的长度是4字节的整数倍 5. 区分服务:一般不使用(具体看ppt) 6. 总长度:指的是IPv4数据报的长度(首部长度+数据载荷长度);最大取值为二进制的16个比特1,即十进制的65535(很少传输这么长的IPv4数据报)这个的单位就是正常的字节单位,看下面这个例子alt text 7. 第二行的三个字段用来进行ipv4分段,原因如下:alt text 具体的三段的作用如下:alt text这里记忆一下MF和DF分别的意义

这里注意一下,由于片偏移是整数,并且以8字节作为单位,也就是说我的偏移量必须是8的倍数才可以。具体看下面的这个例子:alt text

  1. 生存时间:如图所示alt text其可以防止被错误的路由引导在环路中反复兜圈,一个例子如下所示:alt text

  2. 协议:就是根据封装的协议不同会有不同的值

  3. 首部检验和:计算方法和验证的过程如下:alt textalt text具体的计算规则如下:alt text 相当于,就是正常的加法,但是最高位如果进位的话,最后结果+1;以及,最后计算完之后的结果要总体取反。

  4. 剩下的是各32位的源ip地址和目的ip地址

4.3 静态路由配置

静态路由配置是指用户或网络运维人员使用路由器的相关命令给路由器人工配置路由表(一般用于较小的路由表,由人工进行配置) 一般地情况如下:alt text 直连是路由器自行得出的,人工配置是人为指定的。

以及介绍默认路由的概念:相当于在写一系列if分支后面的default分支,也就是与前面的都不匹配的情况就被归为这个分支,其优先级最低(路由器采用最长前缀匹配的策略)

alt text特定主机路由是给某一台具体的主机进行配置,由于其为/32(表明32位进行匹配),其拥有的优先级自然也最高。 alt text

4.4 因特网的路由选择协议(重要!)

这部分主要介绍更大规模使用的动态路由选择alt text 因特网采用分层的路由选择协议:alt text

4.4.3 路由信息协议(RIP)

alt text相关的基础概念如下

“RIP认为好的路由就是“距离短”的路由,也就是所通过路由器数量最少的路由。” 也就是说,其不考虑带宽等等的因素,认为经过路由器数量最少的路径就是“好的”。特别地,当到达同一目的网络有多条RIP距离相等的路由时,可以进行等价负载均衡,也就是将通信量均衡地分布到多条等价的路径上。

RIP具有如下的三个重要特点:alt text 其基本的工作进程如下:alt text

进行路由表更新的时候,有下面的几个原则:alt textalt textalt textalt text否则,如果还是原来的更好,那么就不更新。 alt text以及一些有用的时间参数:这个的原理是一段时间内如果还没有收到对你的更新,大概率是这时候已经变得不可达了。

4.4.3.4 RIP存在的问题

alt text比方说,R1和N1之间的链路出现故障,但是这时候如果R2的报文先到,R1会误以为可以通过R2到达N1(但实际上,R2的这个路径是要通过R1到达的),然后二者之间就会这样传来传去,要等最终到达16之后才会收敛。

下面的部分很重要,考试会考!(关于RIP在哪一个层)alt text

4.4.4 开放最短路径优先协议(OSPF)

之前的RIP适用于比较小的网络,这里介绍的OSPF可以在较大的网络中使用,alt text 和RIP不同的是,其寻找的“最短”路径根据的是链路状态,并且采用最短路径算法 其中,需要注意的是链路状态(Link State,LS)是指本路由器都和哪些路由器相邻,以及相应链路的“代价(cost)”。这个代价在不同的系统中定义不同,下面是一个例子alt text 路由表之间互相发送“问候”分组:alt text

理解链路更新分组以及可靠的洪泛法alt text alt text 最终,所有的链路状态数据库都是一样的,都会掌握全局的信息;之后,根据这个全局的图,构建一张加权向量图,然后利用DIJKSTRA算法进行最短路径计算,得到最短的路径。

alt text一个改进是,为了减少洪泛,选择把信息都给DR/BDR,然后让他们来转发和交换信息

alt text以及对于一个大的网络划分不同的area,使得洪泛只能在area中进行,进一步减少了洪泛的大小

通过边界路由器,在不同的area之间交换信息alt text

4.4.5 边界网关协议(BGP)

首先recall一下as系统(自治系统)的概念:指的是若干个遵循统一IP网络策略的网络的集合;这里面介绍的是在这样的不同的as之间如何进行路由选择alt text,也就是外部的协议

使用BGP协议,需要综合考虑很多因素,最终也是只要权衡之后选择出一个较好的策略就可以了alt text

在不同的AS之间进行交流的时候,需要选择边界上的路由器进行互相之间的交流,具体的一些内容如下:alt text

关于上面的一系列路由器协议,记忆一下分别封装在什么地方;alt text 从实现功能(路由选择)的角度看,这三个路由选择协议都属于网络层; 从数据包按网络体系结构逐层封装的角度看,RIP和BGP属于应用层,OSPF属于网络层。

4.4.6 路由器的基本工作原理

alt text总结下来就是这张图,转发表结构的优化对于提升路由器的效率至关重要

4.5 网际控制报文协议

主机或路由器使用ICMP来发送差错报告报文和询问报文。 1. 差错报告报文:一共有五种不同的类型(看ppt即可),注意一下:alt text 2. 询问报文:一共就分为两种类型alt text

ICMP的典型应用为ping(查看两个主机或者路由器之间的连通性)以及traceroute(查看IP数据报从原主机到达目的主机要经过哪些路由器)

跟踪路由时候,原理是利用了ICMP差错报告报文:其依次向目的主机发送一系列TTL为123…的ICMP回送请求,那么如果没有到达目的主机,会返回差错报告报文;而到达最后地址时,会返回ICMP回送报文,这样就知道了路径上的所有路由器。

4.6 虚拟专用网和网络地址转换

这个东西的目的是,要想实现距离很远的两个专用网之间进行通信,建立一个安全的连接 所谓的虚拟专用网,指的是一类信息只希望在当前网络内部传输的网络,在现实中规定了一系列ip地址用来给这个网络使用,如下所示:alt text这相当于,由于这个网络的信息只会在当前网络内部进行传播,所以即使这个网络中和别的网络复用相同的ip地址,也不会有冲突。

alt textvpn通信的原理如下所示:相当于,在一开始北京主机发出的时候,源地址就是10.0.0.3,目的地址就是10.2.0.3;但是经过边际的路由器之后,会对其进行加密,把这些信息全部封装起来;然后路由器会改写,把源地址改写成自己端口ip的地址,目的地址改成R2端口地址;最后,R2会对信息进行解密,这时候就又知道了这个信息来源于10.0.0.3,要发给10.2.0.3。

以及了解一下所谓的内联网vpn和外联网vpn:就是通过是否在同一个机构内部来进行区分。

4.6.2 网络地址转换(NAT)

依旧是因为IPv4地址快被用完了

最基本的一种地址转换方法:路由器维护一张表,记录内部IP地址和自己的全球IP的地址之间的一个对应关系;然后每次有数据发出去或者从外部接收数据的时候,进行一次地址转换,相当于是建立了一一映射的关系 alt text

但是很显然,这样的方法下,NAT路由器有几个IP地址,专用网只可以分配相同数量的主机;因此,为了改善这样的问题,采用的另一个方法是将端口加入进来,作为一个新的维度进行区分,如下所示,称为NAPT方法 alt text

以及对于NAT类技术的一个注意点,就是外网不能首先发起通信,因为这个时候内网映射还没有建立,就会不知道我的信息应该发给谁。(这也是一种缺陷)

4.7 IP多播

在因特网上进行的多播,称为IP多播;这是一种一对多的通信技术 alt text比如,没有多播就会像左边这样,需要发60份;否则实现IP多播和硬件多播,可以只用发一个 alt text

4.7.3 在局域网上进行硬件多播

这个的本质是把多播ip地址转换为多播mac地址进行使用;由于D类IP地址以及多播MAC地址规范的不同,这里相当于是要实现一个28位到23位的映射alt text;而这里使用的方法是直接将IP地址的低23位写入MAC地址,这就导致二者之间的关系是多对一的。 因此,在下层根据mac地址接受下来的信息,其IP不一定是匹配的;这个时候就需要在网际层使用软件过滤,来主动不保留和自己不匹配的信息。一个例子如下:alt text

4.7.4 在因特网上进行IP多播需要的两种协议

  1. 比如说路由器接收到别的地方转发来的信息,我怎么知道自己连接的主机里面有没有这个分组的信息? 这个时候需要网际组管理协议IGMPalt text 其实这个协议相当于只能告诉你当前局域网上有没有这个分组的,不能提供其他信息
  2. 多播路由选择协议:这个实际上就是根据之前的IGMP,来维护一个记录需要转发到哪些路由器的树

4.7.5 网际组管理协议

4.7.5.1 网际组管理协议IGMP的三种报文类型

alt text

分为三个部分来介绍IGMP的工作原理: 1. 加入多播组alt text 假设说这里的的主机A和B都属于同一个多播组,想要将自己的信息添加到路由器中,这时候假设主机B优先发送了一个IGMP成员报告(应该是广播的形式?)然后这时候CD因为发现MAC就不同,在mac层就会丢弃;A接收之后,发现同组的B已经发送过了,此时A就决定自己不必发送成员报告了;R1接收到之后,决定将这个新的多播组列表添加进去。 2. 监视多播组的成员变化 这里首先记忆一个特殊的IP目的地址:224.0.0.1,这个地址使得当前网络中所有参加多播的主机和路由器的网际层都会接受该多播数据报alt text这个部分的原理是,路由器每隔一段时间(125s)会发送一个查询报文,然后对于各个多播分组中的成员,会对于这个进行相应,发送一个应答报文;之后125s会将没有进行反馈的多播组进行删除;并且,每一个多播组只要有一台主机响应了,别的就可以不用重复发送反馈报文了(因为IGMP只关心现在还有没有) 3. 退出多播组alt text 相当于是,有一台主机退出了某一个多播组,然后会发送一个特殊的、只有路由器可以接收到的报文;之后路由器得知其退出了,会发送一个特殊的成员查询报文,来查询当前的多播组是否还有remaining的成员,然后再决定这个多播ip要不要被删除。

4.7.6 多播路由选择协议

不重要(也没考过),先跳过了

4.8 移动IP技术(这块也不是重点)

移动IP(Mobile IP)是因特网工程任务组IETF开发的一种技术[RFC 3344],该技术使得移动主机在各网络之间漫游时,仍然能够保持其原来的IP地址不变。(这里的移动主机指的多是笔记本电脑类的设备)用一个通俗易懂的解释来揭露这个背后的原理如下: alt textalt text 总的来说,发送给我去“出差”主机的信息,需要先转发给原ip,然后通过ip隧道把这个信息转回去;而我出差的主机发送信息,那么就直接通过外地代理路由器发送即可

容易想到,这样可能会带来所谓的“三角形路由问题”:alt text,也就是需要先转发到外面的原先网络,再发送回来,这样效率就很低;解决方法如下(了解即可,也不重要)alt text

4.9 IPv6

  1. IPv6引进的主要变化 诞生背景:主要就是IPv4地址已经基本分配完了,如今在使用NAT技术进行续命;但是最终要解决这个问题肯定要用下一代地址。但是到目前为止,IPv6还处于草案阶段。 IPv6的长度变成了128bit,理论上是用不完的
  2. 数据报格式alt text 关于具体的的格式,去浏览ppt即可(内容很多很碎)

4.9.4 IPv6地址

每一个地址为128bit,这里面我们采用冒号十六进制记法:相当于每次16bit分成一组,一共8组,如下所示:2001:0db8:4004:0010:0000:0000:6543:0ffd 其中,不区分大小写

对于简写,有两种方法:alt text 冒号段开头的连续的0不写;而一段连续的0000,可以用::来表示;但是连续0压缩在一个地址中只能使用一次,否则会有歧义alt text 任播是指,只要我目的的这一组里面有一个接收就可以了。 这里还有几个分类,看ppt

4.9.5 从IPv4向IPv6过渡

这里的“过渡”是指,新部署的IPv6系统必须能够向后兼容,也就是IPv6系统必须能够接收和转发IPv4数据报,并且能够为IPv4数据报选择路由。

  1. 双协议栈:简而言之,就是装配有两个协议alt textalt text
  2. 隧道技术:就是把一个IPv6数据包看成一整段数据,将其外面再封装一下,封装成IPv4数据报,然后发送alt text 注意在中间的转化段,首尾ip地址是路由器
alt text

最后一部分是关于SDP的,但是不重要


计算机网络 CH4
https://zrwrz.github.io/2025/11/12/计算机网络-ch4/
作者
zrw
发布于
2025年11月12日
许可协议