(计算机网络)第4章:网络层

本篇博客将讲解我在计算机网络课程上学到的相关概念以及总结理解,今天将介绍网络层方面的知识,希望能帮助大家理解计算机网络中的一些概念

首先看一下我们第一章讲过的五层协议体系结构,想了解第一章的博客可以戳这里 ,本系列的博客也将按照这五层的顺序进行介绍

1. 虚电路服务和数据报服务的对比

对比的方面 虚电路服务 数据报服务
思路 可靠信息应当由网络来保证 可靠信息应当由用户主机来保证
连接的建立 必须有 不需要
终点地址 仅在连接建立阶段使用,每个分组使用短的虚电信号 每个分组都有终点的完整地址
分组的转发 属于同一条虚电路的分组均按照同一路由进行转发 每个分组独立选择路由进行转发
当结点出故障时 所有通过出故障的结点的虚电路均不能工作 出故障的结点可能会丢失分组,一些路由可能会发生变化
分组的顺序 总是按照发送顺序到达终点 到达终点时不一定按发送顺序
端到端的差错处理和流量控制 可以由网络负责,也可以由用户主机负责 由用户主机负责

2. 分类的IP地址

IP地址的编址方法

  • 分类的 IP 地址。这是最基本的编址方法,在1981年就通过了相应的标准协议。
  • 子网的划分。这是对最基本的编址方法的改进,其标准在1985年通过。
  • 构成超网。这是比较新的无分类编址方法。1993年提出后很快就得到推广应用。

分类IP地址

  • 将IP地址划分为若干个固定类。
  • 每一类地址都由两个固定长度的字段组成,其中一个字段是网络号 net-id,它标志主机(或路由器)所连接到的网络,而另一个字段则是主机号 host-id,它标志该主机(或路由器)。
  • 主机号在它前面的网络号所指明的网络范围内必须是唯一的。
  • 由此可见,一个 IP 地址在整个互联网范围内是唯一的。

这种两级的IP地址结构如下:

各类 IP 地址的网络号字段和主机号字段

八位一字节

IP地址指派的范围

3. IP 地址与硬件地址,地址解析协议 ARP

IP 地址与硬件地址的对比

从层次的角度看,

  • 硬件地址(或物理地址)是数据链路层和物理层使用的地址。

  • IP 地址是网络层和以上各层使用的地址,是一种逻辑地址(称 IP 地址是逻辑地址是因为 IP 地址是用软件实现的)。

  • IP 地址放在 IP 数据报的首部,而硬件地址则放在 MAC 帧的首部

地址协议ARP

作用:已经知道了一个机器(主机或路由器)的IP地址,找出其相应的硬件地址

每一个主机或路由器都设有一个 ARP 高速缓存 (ARP cache),里面有所在的局域网上的各主机和路由器的 IP 地址到硬件地址的映射表。

< IP address;MAC address;TTL >

TTL (Time To Live):地址映射有效时间 。

具体流程:

当主机 A 欲向本局域网上的某个主机 B 发送 IP 数据报时,就先在其 ARP 高速缓存中查看有无主机 B 的 IP 地址。

  • 如有,就可查出其对应的硬件地址,再将此硬件地址写入 MAC 帧,然后通过局域网将该 MAC 帧发往此硬件地址。
  • 如没有, ARP 进程在本局域网上广播发送一个 ARP 请求分组。收到 ARP 响应分组后,将得到的 IP 地址到硬件地址的映射写入 ARP 高速缓存。

发送请求与响应

使用ARP的四种情况

  • 发送方是主机,要把 IP 数据报发送到本网络上的另一个主机。这时用 ARP 找到目的主机的硬件地址。
  • 发送方是主机,要把 IP 数据报发送到另一个网络上的一个主机。这时用 ARP 找到本网络上的一个路由器的硬件地址。剩下的工作由这个路由器来完成。
  • 发送方是路由器 ,要把 IP 数据报转发到本网络上的一个主机。这时用 ARP 找到目的主机的硬件地址。
  • 发送方是路由器 ,要把 IP 数据报转发到另一个网络上的一个主机。这时用 ARP 找到本网络上另一个路由器的硬件地址。剩下的工作由这个路由器来完成。

4. IP数据报的格式

一个 IP 数据报由首部和数据两部分组成,其中首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的。 而在首部的固定部分的后面是一些可选字段,其长度是可变的。

首部不可变部分

如上图,图中圈起来的部分就是首部的固定长度部分,各部分解析如下:

  • 版本------占 4 位,指 IP 协议的版本。 目前的 IP 协议版本号为 4 (即 IPv4)。

  • 首部长度------占 4 位,可表示的最大数值 是 15 个单位(一个单位为 4 字节), 因此 IP 的首部长度的最大值是 60 字节。

  • 区分服务------占 8 位,用来获得更好的服务。 在旧标准中叫做服务类型,但实际上一直未被使用过。 1998 年这个字段改名为区分服务(往往用于优先级) 。 只有在使用区分服务(DiffServ)时,这个字段才起作用。 在一般的情况下都不使用这个字段

  • 总长度------占 16 位,指首部和数据之和的长度, 单位为字节,因此数据报的最大长度为 65535 字节。 总长度必须不超过最大传送单元MTU

  • 标识 ------占 16 位, 它是一个计数器,用来产生 IP 数据报的标识

  • 标志 ------占 3 位,目前只有前两位有意义。 标志字段的最低位是 MF (More Fragment)。 MF=1 表示后面"还有分片"。MF=0 表示最后一个分片。 标志字段中间的一位是 DF (Don't Fragment) 。 只有当 DF=0 时才允许分片。

  • 片偏移 ------占13 位,指出较长的分组在分片后 某片在原分组中的相对位置。 片偏移以 8 个字节为偏移单位

  • 生存时间------占8 位,记为 TTL (Time To Live), 指示数据报在网络中可通过的路由器数的最大值。 每经过一个路由器,-1。到0后,丢弃

  • 协议------占8 位,指出此数据报携带的数据使用何种协议, 以便目的主机的 IP 层将数据部分上交给那个处理过程 TCP是6,UDP是17

  • 首部检验和------占16 位,只检验数据报的首部, 不检验数据部分。

首部可变部分

IP 首部的可变部分就是一个选项字段,用来支持排错、测量以及安全等措施,内容很丰富。 选项字段的长度可变,从 0 个字节到 40 个字节不等,取决于所选择的项目。实际上这些选项很少被使用。

5. IP 层转发分组的流程

路由器分组转发算法

  1. 从数据报的首部提取目的主机的 IP 地址 D, 得出目的网络地址为 N。
  2. 若网络 N 与此路由器直接相连,则把数据报直接交付目的主机 D;否则是间接交付,执行 (3)。
  3. 若路由表中有目的地址为 D 的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行 (4)。
  4. 若路由表中有到达网络 N 的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行 (5)。
  5. 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行 (6)。
  6. 报告转发分组出错。

6. 划分子网

子网掩码

从一个 IP 数据报的首部并无法判断源主机或目的主机所连接的网络是否进行了子网划分。 而使用子网掩码 (subnet mask) 可以找出 IP 地址中的子网部分。

规则

  • 子网掩码长度 = 32 位
  • 子网掩码左边部分的一连串 1,对应于网络号和子网号
  • 子网掩码右边部分的一连串 0,对应于主机号

默认子网掩码

划分子网

子网划分方法:

  1. 固定长度子网: 所划分的所有子网的子网掩码都是相同的。
  2. 变长子网

例题

已知 IP 地址是 141.14.72.24,子网掩码是 255.255.192.0。试求网络地址。

使用子网时分组的转发

在划分子网情况下路由器转发分组的算法

  1. 从收到的分组的首部提取目的 IP 地址 D。
  2. 先用各网络的子网掩码和 D 逐位相"与",看是否和相应的网络地址匹配。若匹配,则将分组直接交付。否则就是间接交付,执行(3)。
  3. 若路由表中有目的地址为 D 的特定主机路由,则将分组传送给指明的下一跳路由器;否则,执行 (4)。
  4. 对路由表中的每一行,将子网掩码和 D 逐位相"与"。若结果与该行的目的网络地址匹配,则将分组传送给该行指明的下一跳路由器;否则,执行 (5)。
  5. 若路由表中有一个默认路由,则将分组传送给路由表中所指明的默认路由器;否则,执行 (6)。
  6. 报告转发分组出错。

例题

已知互联网和路由器 R1 中的路由表。主机 H1 向 H2 发送分组。试讨论 R1 收到 H1 向 H2 发送的分组后查找路由表的过程。

  • 首先H1检查主机 128.30.33.138 是否连接在本网络上 如果是,则直接交付;否则,就送交路由器 R1,并逐项查找路由表。
  • 将本子网的子网掩码 255.255.255.128与分组的 IP 地址 128.30.33.138 逐比特相与得出128.30.33.128
  • 然后逐项查找路由表找到下一跳是接口1

7. 无分类域间路由 CIDR

最主要特点

消除了传统的 A 类、B 类和 C 类地址以及划分子网的概念,因而可以更加有效地分配 IPv4 的地址空间。 CIDR使用各种长度的 "网络前缀"(network-prefix) 来代替分类地址中的网络号和子网号。(让net-id长度也可变) IP 地址从三级编址(使用子网掩码)又回到了两级编址。

无分类的两级编址

无分类的两级编址的记法是:

IP地址 ::= {<网络前缀>, <主机号>}

CIDR 使用"斜线记法"(slash notation),它又称为 CIDR 记法,即在 IP 地址后面加上一个斜线"/",然后写上网络前缀所占的位数(这个数值对应于三级编址中子网掩码中 1 的个数)。例如: 220.78.168.0/24

CIDR 地址块

CIDR 把网络前缀都相同的连续的 IP 地址组成"CIDR 地址块"。

128.14.32.0/20 表示的地址块共有 2^12 个host-id(因为斜线后面的 20 是网络前缀的位数,所以这个地址的主机号是 12 位)。

路由聚合

一个 CIDR 地址块可以表示很多地址,这种地址的聚合常称为路由聚合,也称为构成超网

CIDR 虽然不使用子网了,但仍然使用"掩码"这一名词(但不叫子网掩码)。 对于 /20 地址块,它的掩码是 20 个连续的 1。 斜线记法中的数字就是掩码中1的个数。

最长前缀匹配

使用 CIDR 时,路由表中的每个项目由"网络前缀"和"下一跳地址"组成。在查找路由表时可能会得到不止一个匹配结果。

最长前缀匹配就是从匹配结果中选择具有最长网络前缀的路由,因为网络前缀越长,其地址块就越小,因而路由就越具体。

8. 网际控制报文协议(ICMP)

为了更有效地转发 IP 数据报和提高交付成功的机会,在网际层使用了网际控制报文协议 ICMP

ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告 。 但 ICMP 不是高层协议(看起来好像是高层协议,因为 ICMP 报文是装在 IP 数据报中,作为其中的数据部分),而是 IP 层的协议。

ICMP报文格式

报文种类

  1. ICMP 差错报告报文 一共有四种:终点不可达 ,时间超过 ,参数问题 ,改变路由(重定向)(Redirect)

  2. ICMP 询问报文 有两种: 回送请求和回答报文,时间戳请求和回答报文

ICMP应用举例

  • PING 用来测试两个主机之间的连通性。
  • Traceroute用来跟踪一个分组从源点到终点的路径。

9. 路由选择协议

静态和动态路由选择

  • 静态路由选择策略------即非自适应路由选择,其特点是简单和开销较小,但不能及时适应网络状态的变化。 (需要人为参与)

  • 动态路由选择策略------即自适应路由选择,其特点是能较好地适应网络状态的变化,但实现起来较为复杂,开销也比较大。 (设计不好路由表会特别大)

内部网关协议 IGP (Interior Gateway Protocol)

在一个自治系统内部使用的路由选择协议。 目前这类路由选择协议使用得最多,如 RIP 和 OSPF 协议。

RIP

内部网关协议 IGP 中最先得到广泛使用的协议。 RIP 是一种分布式的、基于距离向量 的路由选择协议。 RIP 协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录

更新流程

RIP优点:

实现简单,开销较小。

RIP缺点:

RIP 限制了网络的规模,它能使用的最大距离为 15(16 表示不可达)。 路由器之间交换的路由信息是路由器中的完整路由表,因而随着网络规模的扩大,开销也就增加。 "坏消息传播得慢",使更新过程的收敛时间过长。

外部网关协议 EGP (External Gateway Protocol)

若源站和目的站处在不同的自治系统中,当数据报传到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统中。这样的协议就是外部网关协议 EGP。 在外部网关协议中目前使用最多的是 BGP-4。

外部网关协议 BGP

力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要寻找一条最佳路由。

特点

  • 和谁交换------相邻BGP发言人之间互相交换信息。BGP 协议交换路由信息的结点数量级是自治系统数的量级,这要比这些自治系统中的网络数少很多。
  • 交换什么------交换发言人的路由表。BGP 支持 CIDR,因此 BGP 的路由表也就应当包括目的网络前缀、下一跳路由器,以及到达该目的网络所要经过的各个自治系统序列。
  • 交换频率------在 BGP 刚刚运行时,BGP 的邻站是交换整个的 BGP 路由表。但以后只需要在发生变化时更新有变化的部分。这样做对节省网络带宽和减少路由器的处理开销都有好处。

内部与外部的关系

路由器的构成

路由器的主要作用

  1. 连通不同的网络。
  2. 选择信息传送的线路。

路由器结构

转发和路由选择的区别

  • "转发"(forwarding) 就是路由器根据转发表将用户的 IP 数据报从合适的端口转发出去。
  • "路由选择"(routing) 则是按照分布式算法,根据从各相邻路由器得到的关于网络拓扑的变化情况,动态地改变所选择的路由。
  • 路由表是根据路由选择算法得出的。而转发表是从路由表得出的。

10. IPv6(IPv6和IPv4的对比)

IP 是互联网的核心协议。互联网经过几十年的飞速发展,IPv4 的 32 位地址已经耗尽。解决 IP 地址耗尽的根本措施就是采用具有更大地址空间的新版本的 IP,即 IPv6。

主要变化如下:

  • 更大的地址空间。IPv6 将地址从 IPv4 的 32 位 增大到了 128 位。
  • 扩展的地址层次结构。
  • 灵活的首部格式。 IPv6 定义了许多可选的扩展首部。
  • 改进的选项。 IPv6 允许数据报包含有选项的控制信息,其选项放在有效载荷中。
  • 允许协议继续扩充。
  • 支持即插即用(即自动配置)。因此 IPv6 不需要使用 DHCP。
  • 支持资源的预分配。 IPv6 支持实时视像等要求,保证一定的带宽和时延的应用。
  • IPv6 首部改为 8 字节对齐。首部长度必须是 8 字节的整数倍。原来的 IPv4 首部是 4 字节对齐。

11. 虚拟专用网 VPN和网络地址转换 NAT

虚拟专用网(VPN)

利用公用的互联网作为本机构各专用网之间的通信载体,这样的专用网又称为虚拟专用网VPN

  • "专用网"是因为这种网络是为本机构的主机用于机构内部的通信,而不是用于和网络外非本机构的主机通信。
  • "虚拟"表示"好像是",但实际上并不是,因为现在并没有真正使用通信专线,而VPN只是在效果上和真正的专用网一样。

网络地址转换(NAT)

在专用网上使用专用地址的主机如何与互联网上的主机通信?

解决方案:

  1. 再申请一些全球 IP 地址。但这在很多情况下是不容易做到的。
  2. 采用网络地址转换 NAT。这是目前使用得最多的方法。

需要在专用网连接到互联网的路由器上安装 NAT 软件。装有 NAT 软件的路由器叫做 NAT路由器,它至少有一个有效的外部全球IP地址(可以有多个)。所有使用本地地址的主机在和外界通信时,都要在 NAT 路由器上将其本地地址转换成全球 IP 地址,才能和互联网连接。

转换过程

  • 内部主机 A 用本地地址 IP(A) 和互联网上主机 B 通信所发送的数据报必须经过 NAT 路由器。
  • NAT 路由器将数据报的源地址 IP(A) 转换成全球地址 IP(G) ,并把转换结果记录到NAT地址转换表中,目的地址 IP(B) 保持不变,然后发送到互联网。
  • NAT 路由器收到主机 B 发回的数据报时,知道数据报中的源地址是 IP(B) 而目的地址是 IP(G) 。
  • 根据 NAT 转换表,NAT 路由器将目的地址 IP(G) 转换为 IP(A) ,转发给最终的内部主机 A。

在内部主机与外部主机通信时,在NAT路由器上发生了两次地址转换:

  1. 离开专用网时:替换源地址,将内部地址替换为全球地址;
  2. 进入专用网时:替换目的地址,将全球地址替换为内部地址;
相关推荐
独行soc35 分钟前
#渗透测试#SRC漏洞挖掘#深入挖掘XSS漏洞02之测试流程
web安全·面试·渗透测试·xss·漏洞挖掘·1024程序员节
理想不理想v1 小时前
‌Vue 3相比Vue 2的主要改进‌?
前端·javascript·vue.js·面试
sszmvb12342 小时前
测试开发 | 电商业务性能测试: Jmeter 参数化功能实现注册登录的数据驱动
jmeter·面试·职场和发展
测试杂货铺2 小时前
外包干了2年,快要废了。。
自动化测试·软件测试·python·功能测试·测试工具·面试·职场和发展
王佑辉2 小时前
【redis】redis缓存和数据库保证一致性的方案
redis·面试
真忒修斯之船2 小时前
大模型分布式训练并行技术(三)流水线并行
面试·llm·aigc
ZL不懂前端2 小时前
Content Security Policy (CSP)
前端·javascript·面试
阿尔帕兹3 小时前
构建 HTTP 服务端与 Docker 镜像:从开发到测试
网络协议·http·docker
测试界萧萧3 小时前
外包干了4年,技术退步太明显了。。。。。
自动化测试·软件测试·功能测试·程序人生·面试·职场和发展
百事老饼干3 小时前
Java[面试题]-真实面试
java·开发语言·面试