计算机网络 第四章 网络层
@
本章最重要的内容是:
(1)虚拟互连网络和两种服务、两个层面的概念
(2)IP地址与MAC地址的关系。
(3)传统分类的IP地址和无分类域间路由选择CIDR(后者是重点)。
(4)路由选择协议的工作原理。
1 网络层提供的两种服务
在计算机网络领域,网络层应该向运输层提供怎样的服务(“面向连接”还是“无连接”)曾引起了长期的争论。争论焦点的实质就是:在计算机通信中,可靠交付应当由谁来负责?是网络还是端系统?
- 其中一种观点是让网络负责可靠传输
这种观点认为,应借助于电信网的成功经验,让网络负责可靠交付计算机网络应模仿电信网络,使用面向连接的通信方式。通信之前先建立虚电路(VirtualCircuit),以保证双方通信所需
的一切网络资源。如果再使用可靠传输的网络协议,就可使所发送的分组无差错按序到达终点,不丢失、不重复。
- 另一种观点:网络提供数据报服务
互联网的先驱者提出了一种崭新的网络设计思路。网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。
网络在发送分组时不需要先建立连接。每一个分组(即IP数据报)独立发送,与其前后的分组无关(不进行编号)。
网络层不提供服务质量的承诺。即所传送的分组可能出错、丢失、重复和失序(不按序到达终点),当然也不保证分组传送的时限。
- 尽最大努力交付
由于传输网络不提供端到端的可靠传输服务,这就使网络中的路由器可以做得比较简单,而且价格低廉(与电信网的交换机相比较)。
如果主机(即端系统)中的进程之间的通信需要是可靠的,那么就由网络的主机中的运输层负责可靠交付(包括差错处理、流量控制等)
采用这种设计思路的好处是:网络的造价大大降低,运行方式灵活,能够适应多种应用。
互连网能够发展到今日的规模,充分证明了当初采用这种设计思路的正确性。
对比的方面 | 虚电路服务 | 数据报服务 |
---|---|---|
思路 | 可靠通信应当由网络来保证 | 可靠通信应当由用户主机来保证 |
连接的建立 | 必须有 | 不需要 |
终点地址 | 仅在连接建立阶段使用,每个分组使用短的虚电路号 | 每个分组都有终点的完整地址,即IP地址 |
分组的转发 | 属于同一条虚电路的分组均按照同一路由进行转发 | 每个分组独立查找转发表进行转发 |
当节点出故障时 | 所有通过出故障的节点的虚电路均不能工作 | 出故障的节点可能会丢失分组,一些路由可能会发生变化 |
分组的顺序 | 总是按发送顺序到达终点 | 到达终点的顺序不一定按发送的顺序 |
端到端的差错处理和流量控制 | 可以由网络负责,也可以由用户主机负责 | 由用户主机负责 |
2.网际协议IP
网际协议IP是TCP/IP体系中两个最主要的协议之一。与IP协议配套使用的还有三个协议:
- 地址解析协议 ARP(Address Resolution Protocol)
- 网际控制报文协议ICMP(Internet ControlMessage Protocol)
- 网际组管理协议IGMP(Internet Group Management Protocol)
2.1虚拟互联网络
如何将异构的网络互相连接起来?
从一般的概念来讲,将网络互相连接起来要使用一些中间设备。根据中间设备所在的层次,可以有以下四种不同的中间设备:
- 物理层使用的中间设备叫作转发器(repeater)。
- 数据链路层使用的中间设备叫作网桥或桥接器(bridge),以及交换机(switch)。
- 网络层使用的中间设备叫作路由器(router)。
- 在网络层以上使用的中间设备叫作网关(gateway)。用网关连接两个不兼容的系统需要在高层进行协议的转换。
虚拟互联网络的意义:
- 所谓虚拟互连网络也就是逻辑互连网络,它的意思就是互连起来的各种物理网络的异构性本来是客观存在的,但是我们利用IP协议就可以使这些性能各异的网络从用户看起来好像是一个统一的网络。
- 使用IP协议的虚拟互连网络可简称为IP网。
- 使用虚拟互连网络的好处是:当互联网上的主机进行通信时,就好像在一个网络上通信一样,而看不见互连的各具体的网络异构细节。
- 如果在这种覆盖全球的 IP网的上层使用 TCP 协议,那么就是现在的互联网(Internet)。
2.2 IP 地址
在TCP/IP体系中,IP地址是一个最基本的概念。一个连接在互联网上的设备,如果没有IP地址,就无法和网上的其他设备进行通信。
-
IP地址及其表示方法
-
IP地址的分类
-
无分类编址CIDR
无分类编址(CIDR,Classless Inter-Domain Routing)是一种用于对IP地址进行聚合和分配的技术,它通过改变传统的IP地址分配方式,有效地解决了IPv4地址空间不足的问题。CIDR的引入打破了基于类别的划分,引入了可变长度子网掩码(VLSM)的概念,使用前缀长度来表示IP地址的网络部分的位数,从而更加灵活地分配IP地址,并实现对地址空间的高效利用。
CIDR使用一个斜线后跟一个数字来表示前缀长度。例如,192.168.0.0/16
表示前16位为网络部分,剩余的位数为主机部分。这种表示法可以快速判断IP地址属于哪个网络。
2.3IP地址与MAC地址
从层次的角度看,MAC地址是数据链路层使用的地址,而 IP地址是网络层和以上各层使用的地址,是一种逻辑地址(称IP地址为逻辑地址是因为IP 地址是用软件实现的)。
- 在IP层抽象的互联网上,只能看到IP数据报。源地址和目的地址始终分别是IP1和IP2,中间路由器的IP地址不出现在IP数据报首部。
- 路由器只根据目的站的IP地址进行转发,忽略源站IP地址。
- 在局域网的链路层,IP数据报被封装在MAC帧中。MAC帧在不同网络上传送时,其首部中的源地址和目的地址会发生变化
- IP层抽象的互联网屏蔽了下层MAC地址体系的差异,使用统一的IP地址研究通信。
2.4地址解析协议ARP
地址解析协议(Address Resolution Protocol,简称ARP)是一种网络层协议,用于将网络层的IP地址解析为数据链路层的MAC地址。ARP在局域网(LAN)中工作,特别是在使用以太网技术的环境中。
当一台设备需要向同一局域网内的另一台设备发送数据时,它首先需要知道目标设备的MAC地址。ARP的工作流程大致如下:
- 查询:发送设备(我们称之为主机A)会检查自己的ARP缓存表,看是否已经存在目标IP地址对应的MAC地址。
- 广播:如果ARP缓存表中没有目标IP地址的条目,主机A会向局域网内的所有设备发送一个ARP请求广播包。这个广播包包含了主机A的IP地址和MAC地址,以及它想要解析的IP地址(目标设备的IP地址)。
- 响应:局域网内的所有设备都会接收到这个ARP请求,但只有拥有请求中指定IP地址的设备(我们称之为主机B)会发送一个ARP响应包给主机A。
- 更新缓存:主机A收到ARP响应后,会将主机B的IP地址和MAC地址添加到自己的ARP缓存表中,并将这个MAC地址用于后续的数据传输。
- 数据传输:一旦获得了目标设备的MAC地址,主机A就可以通过以太网将数据帧发送给主机B。
ARP协议是无状态的,意味着它不维护任何状态信息,每次数据传输前都需要进行地址解析。ARP缓存表中的条目通常有生存时间(TTL),过期后需要重新进行ARP查询。这样可以确保网络中的设备在IP地址或MAC地址发生变化时,能够及时更新信息。
2.5IP数据报的格式
IP数据报(Internet Protocol datagram)是网络层的核心,它用于在网络中传输数据。IP数据报由两部分组成:IP头部和数据(payload),其中数据部分可以是任何类型的网络层数据,比如TCP、UDP或其他协议的数据。
- 版本(Version)
- 长度:4位
- 功能:指定IP协议的版本,IPv4是4,IPv6是6。
- 首部长度(Internet Header Length, IHL)
- 长度:4位
- 功能:指定IP头部的长度,单位是32位字(一个32位字等于4字节)。最小值是5(即20字节),因为IP头部最小长度是20字节。
- 服务类型(Type of Service, ToS)
- 长度:8位
- 功能:用于指定数据报的服务质量,如优先级、延迟、吞吐量等。
- 总长度(Total Length)
- 长度:16位
- 功能:指定整个IP数据报的长度,包括头部和数据,单位是字节。最大长度是65535字节。
- 标识(Identification)
- 长度:16位
- 功能:标识主机发送的每一份数据报,用于数据报的重组。
- 标志(Flags)
- 长度:3位
- 功能:控制和标识数据报的分段。其中一位是MF(More Fragments),表示后面是否还有分段。
- 片偏移(Fragment Offset)
- 长度:13位
- 功能:表示当前分段在原始数据报中的相对位置。
- 生存时间(Time to Live, TTL)
- 长度:8位
- 功能:指定数据报在网络中可以通过的最大路由器数。每经过一个路由器,TTL减1,当TTL为0时,数据报被丢弃。
- 协议(Protocol)
- 长度:8位
- 功能:指定携带的数据应该上交给哪个高层协议,如TCP是6,UDP是17。
- 首部校验和(Header Checksum)
- 长度:16位
- 功能:用于检测头部信息在传输过程中是否出现错误。
- 源IP地址(Source Address)
- 长度:32位
- 功能:发送数据报的设备的IP地址。
- 目的IP地址(Destination Address)
- 长度:32位
- 功能:接收数据报的设备的IP地址。
- 选项(Options)
- 长度:可变
- 功能:用于网络测试、调试或安全等功能。
- 填充(Padding)
- 长度:可变
- 功能:确保整个头部是32位字的倍数。
- 数据(Data)
- 长度:可变
- 功能:实际传输的数据,可以是TCP、UDP或其他协议的数据。
说明
- IP头部最小长度是20字节,当没有选项时。如果包含选项,头部长度可能更长,但不会超过60字节。
- 首部校验和只覆盖头部,不包括数据部分。
- 选项字段是可选的,用于支持网络测试、调试、安全等功能。
- 数据部分可以是任何类型的网络层数据,其协议由“协议”字段指定。
IP数据报的设计允许它在复杂的网络环境中灵活地传输数据,同时通过各种字段确保数据的完整性和正确性。
3.IP层分组转发的过程
P层分组转发是互联网协议(IP)网络中数据传输的基础过程。这个过程涉及到将数据封装成IP数据包,并在网络中从源节点传输到目的节点。
3.1基于终点的转发
基于终点的转发是指路由器或交换机根据数据包的目的IP地址来决定如何转发这些数据包。以下是IP层分组转发的基本步骤:
-
数据封装:在发送端,原始数据被分割成较小的数据单元,称为分组或数据包。每个数据包都会被封装上一个IP头部,其中包含了源IP地址和目的IP地址等信息。
-
路由选择:当一个数据包到达路由器时,路由器会查看数据包的目的IP地址,并根据其内部的路由表来决定下一跳地址。路由表包含了到达不同网络或主机的路径信息。
-
转发决策:路由器使用最长前缀匹配(Longest Prefix Match)原则来查找路由表中与目的IP地址最匹配的条目。这通常意味着选择具有最长网络前缀(即最具体的网络地址)的路由。
-
数据包转发:一旦确定了下一跳地址,路由器就会将数据包转发到下一个路由器或直接发送到目的主机。
-
重复过程:这个过程在网络中的每个路由器上重复进行,直到数据包到达其最终目的地。
-
数据重组:在目的主机接收到所有的数据包后,它会根据分组中的序列号重新组装这些数据包,以恢复原始数据。
-
确认和重传:如果数据包在传输过程中丢失或损坏,目的主机会发送确认消息给发送端,发送端随后会重传丢失的数据包。
3.2最长前缀匹配
最长前缀匹配(Longest Prefix Match,简称LPM)是一种在网络路由器中用于决定数据包转发路径的算法。当路由器收到一个IP数据包时,它需要根据数据包的目的IP地址来决定将数据包发送到哪个下一跳。最长前缀匹配算法通过以下步骤来实现这一决策:
-
查找路由表:路由器首先会在其路由表中查找与目的IP地址匹配的条目。路由表中的每个条目通常包含一个目的网络地址和一个下一跳地址。
-
前缀长度:每个网络地址都有一个前缀长度,这表示地址中用于标识网络的位数。例如,一个前缀长度为24的地址,意味着IP地址的前24位用于标识网络。
-
最长匹配:路由器会尝试找到具有最长前缀与目的IP地址匹配的路由表条目。这意味着路由器会寻找能够最精确地匹配目的IP地址的网络前缀。
-
选择下一跳:一旦找到最长匹配的条目,路由器就会使用该条目指定的下一跳地址来转发数据包。
-
默认路由:如果路由表中没有找到任何匹配的条目,路由器可能会使用一个默认路由(也称为默认网关)来转发数据包。默认路由通常用于处理那些没有在路由表中明确列出的目的地。
最长前缀匹配算法的优点是它能够提供一种高效且可扩展的方式来处理大量的路由信息。它允许路由器快速地在复杂的路由表中找到最合适的路由,从而确保数据包能够被正确且高效地转发。
综上所述,可归纳出分组转发算法如下(假定转发表按照前缀的长短排列,把前缀长的放在前面):
(1)从收到的分组的首部提取目的主机的IP地址D(即目的地址)。
(2)若查找到有特定主机路由(目的地址为D),就按照这条路由的下一跳转发分组;否则从转发表中下一行(也就是前缀最长的一行)开始检查,执行(3)。
(3)把这一行的子网掩码与目的地址 D按位进行 AND 运算。若运算结果与本行的前缀匹配,则查找结束,按照“下一跳”所指出的进行处理(或接交付本网络上的目的主机,或通过指定接口发送到下一跳路由器)。否则,若转发表还有下一行,则对下一行进行检查,重新执行(3)。否则,执行(4)。
(4)若转发表中有一个默认路由,则按照指明的接口,把分组传送到指明的默认路由器;否则,报告转发分组出错。
4.网际控制报文协议ICMP
网际控制报文协议(Internet Control Message Protocol,简称ICMP)是网络层的一个辅助协议,用于在IP主机、路由器之间传递控制消息。ICMP消息用于提供有关网络通信的反馈,帮助诊断网络问题,以及进行网络配置和维护。
ICMP的主要功能包括:
- 错误报告:当IP数据包无法到达目的地,或者在处理数据包时出现错误时,ICMP可以发送错误报告消息给发送方。例如,目的地不可达、时间超过、参数问题等。
- 回显请求和回显应答:ICMP允许发送回显请求消息(通常称为“ping”),以检查网络连接的可达性。接收方收到请求后,会发送回显应答消息,表明收到了请求并且网络连接是通的。
- 重定向:当路由器发现一个数据包的路由不是最优的,它可以发送ICMP重定向消息给发送方,建议使用另一个路由器作为下一跳。
- 时间戳请求和应答:ICMP可以用于获取网络设备上的时间戳信息,帮助同步网络中的时钟。
- 地址掩码请求和应答:在某些网络配置中,ICMP可以用来获取或设置主机的子网掩码。
ICMP报文通常封装在IP数据包中,但它们不是传输层协议的数据,而是网络层的控制信息。ICMP报文类型和代码字段用于区分不同类型的ICMP消息。
ICMP是网络诊断的重要工具,常用于:
- 检测网络连通性(如使用ping命令)
- 诊断网络问题(如路由问题、网络配置错误等)
- 网络监控和维护
5.IPV6
5.1IPV6的基本首部
特性 | 描述 |
---|---|
更大的地址空间 | IPv6将地址从IPv4的32位增大到128位,地址空间增大了2^128倍 |
扩展的地址层次结构 | 由于地址空间很大,可以划分为更多的层次 |
灵活的首部格式 | IPv6定义了许多可选的扩展首部,提高路由器处理效率 |
改进的选项 | IPv6的数据报可以包含新的选项,首部长度固定,选项放在有效载荷中 |
允许协议继续扩充 | 支持技术发展和新应用的出现 |
支持即插即用(自动配置) | IPv6不需要使用DHCP |
支持资源的预分配 | 支持实时视像等要求保证带宽和时延的应用 |
IPv6首部对齐 | 首部改为8字节对齐,而IPv4首部是4字节对齐 |
IPv6 数据报由两大部分组成,即基本首部(base header)和后面的有效载荷(payload)。有效载荷也称为净负荷。有效载荷允许有零个或多个扩展首部(extension header),再后面是数据部分。但请注意,所有的扩展首部并不属于IPv6数据报的基本首部。 | |
与IPv4相比,IPv6对首部中的某些字段进行了如下的更改:
- 取消了首部长度字段,因为它的首部长度是固定的(40字节)。
- 取消了服务类型字段,因为优先级和流标号字段实现了服务类型字段的功能。
- 取消了总长度字段,改用有效载荷长度字段。
- 取消了标识、标志和片偏移字段,因为这些功能已包含在分片扩展首部中把 TTL, 字段改称为跳数限制字段,但作用是一样的(名称与作用更加一致)。
- 取消了协议字段,改用下一个首部字段。
- 取消了检验和字段,这样就加快了路由器处理数据报的速度。我们知道,在数据链路层对检测出有差错的帧就丢弃。在运输层,当使用UDP时,若检测出有差错的用户数据报就丢弃。当使用TCP时,对检测出有差错的报文段就重传,直到正确传送到目的进程为止。因此在网络层的差错检测可以精简掉。
- 取消了选项字段,而用扩展首部来实现选项功能。
5.2IPV6的地址
般来讲,一个IPv6数据报的目的地址可以是以下三种基本类型地址:
类型 | 描述 |
---|---|
单播 (Unicast) | 传统的点对点通信,每个数据报只发送给一个特定的目的地。 |
多播 (Multicast) | 一点对多点的通信,数据报发送到一组计算机中的每一个。IPv6没有采用广播的术语,而是将广播看作多播的一个特例。 |
任播 (Anycast) | IPv6增加的一种类型,终点是一组计算机,但数据报只交付其中的一个,通常是按照路由算法得出的距离最近的一个。 |
IPv6地址由128位组成,通常表示为8组4位十六进制数,每组之间用冒号(:)分隔。这种表示方法提供了一种紧凑且易于阅读的格式。以下是IPv6地址的一些表示规则和例子: |
-
基本表示:
- IPv6地址由8组4位十六进制数表示,例如:
2001:0db8:85a3:0000:0000:8a2e:0370:7334
。
- IPv6地址由8组4位十六进制数表示,例如:
-
零压缩:
- 如果十六进制数中包含一个或多个连续的零,可以用双冒号(::)来代替,以简化表示。但在整个地址中,双冒号只能使用一次,以避免歧义。例如:
2001:0db8:85a3:0000:0000:8a2e:0370:7334
可以简化为2001:db8:85a3:0:0:8a2e:370:7334
。- 进一步简化为
2001:db8:85a3::8a2e:370:7334
。
- 如果十六进制数中包含一个或多个连续的零,可以用双冒号(::)来代替,以简化表示。但在整个地址中,双冒号只能使用一次,以避免歧义。例如:
-
IPv4兼容和IPv4映射地址:
- IPv6地址可以包含一个IPv4地址,以便与IPv4网络兼容。这种地址格式以
::ffff:
开头,后面跟着IPv4地址。例如,IPv4地址192.0.2.128
在IPv6中的表示为::ffff:192.0.2.128
。
- IPv6地址可以包含一个IPv4地址,以便与IPv4网络兼容。这种地址格式以
以下是IPv6常用地址分类:
地址类型 | 地址块前缀 | 前缀的CIDR记法 |
---|---|---|
未指明地址 | 00..0 (128位) | ::/128 |
环回地址 | 00..1 (128位) | ::1/128 |
多播地址 | 11111111 | FF00::/8 |
本地站点单播地址 | 1111111011 | FEC0::/10 |
本地链路单播地址 | 1111111010 | FE80::/10 |
全球单播地址 | 其他 |
以下是对表中所列举的几种常用地址的简单解释:
- 未指明地址:这是16字节的全0地址,可缩写为两个冒号“::”。这个地址不能用作目的地址,而只能将某台主机当作源地址使用,条件是这台主机还没有配置到一个标准的IP地址。这类地址仅此一个。
- 环回地址:IPv6的环回地址是
0:0:0:0:0:0:0:1
,可缩写为::1
。它的作用和IPv4的环回地址一样。这类地址也是仅此一个。 - 多播地址:功能和IPv4的一样。这类地址占IPv6地址总数的1/256。
- 本站点单播地址:有些单位的内部网络使用TCP/IP协议,但并没有连接到互联网上。连接在这样的内部网络上的主机都可以使用这种本地站点地址进行通信,但不能和互联网上的其他主机通信。这类地址占IPv6地址总数的1/1024,其用途和IPv4的专用地址是一样的。
- 本地链路单播地址:这种地址是在单一链路上使用的。当一个节点启用IPv6时就自动生成本地链路地址。当需要把分组发往单一链路的设备而不希望该分组被转发到此链路范围以外的地方时,就可以使用这种特殊地址。这类地址占IPv6地址总数的1/1024。
- 全球单播地址:IPv6的这一类单播地址是使用得最多的一类。根据RFC4291的建议,IPv6单播地址的划分方法非常灵活,可以是如图4-34所示的任何一种。这意味着,可把整个的128位都作为一个节点的地址,也可用n位作为子网前缀,用剩下的(128-n)位作为接口标识符(相当于IPv4的主机号)。当然也可以划分为三级,用n位作为全球路由选择前缀,用m位作为本地前缀,剩下的位作为接口标识符。
5.3从 IPv4 向 IPv6 过渡
从IPv4向IPv6过渡的过程中,双协议栈和隧道技术是两种主要的过渡技术。以下是这两种技术的简要说明:
5.3.1双协议栈(Dual Stack)
双协议栈是一种网络配置,其中设备、网络节点或网络链路能够处理IPv4和IPv6两种协议。这意味着这些设备或链路可以同时支持IPv4和IPv6的通信。
优点:
- 提供了一种直接的方法来支持IPv4和IPv6,非常有用于过渡期间。
- 允许与IPv4和IPv6网络的原生连接。
缺点:
- 需要双倍的配置和管理,因为需要维护两种不同的协议。
- 实施可能成本较高,因为它需要更多的内存和处理能力。
- 运行双协议栈网络需要额外的员工培训。
- 在现有的IPv4基础设施上运行IPv6可能需要额外的硬件更改(例如路由信息库和转发信息库内存)。
5.3.2隧道技术(Tunneling)
隧道技术涉及将IPv6数据包封装在IPv4数据包中,以便在IPv4网络基础设施上传输IPv6流量。这种方法允许在IPv4网络中传输IPv6数据包,而无需对整个网络基础设施进行升级。
优点:
- 允许在IPv4网络中使用IPv6,为IPv6的部署提供了灵活性。
- 可以在不升级整个网络基础设施的情况下开始使用IPv6。
缺点:
- 隧道技术可能依赖于公共IPv4地址,NAT可能会引起问题。
- 隧道技术可能需要在网络基础设施中维护额外的复杂性,如6rd需要ISP维护6rd边界中继,这可能会增加网络的复杂性。
6.互联网的路由选择协议
6.1分层次的路由选择协议
内部网关协议 | 外部网关协议 |
---|---|
在一个自治系统内部使用的路由选择协议,主要有RIP、OSRF | 在不同自治系统之间使用的路由选择协议、主要有BGP-4 |
6.2内部网关协议RIP
6.2.1首选需要回答的问题
跟谁交换信息 | 交换什么信息 | 什么时候交换信息 |
---|---|---|
仅和相邻的路由器交换信息 | 当前本路由器知道的全部信息 | 按固定时间间隔交换信息,大约30s |
6.2.2 距离向量算法
距离向量算法的基本概念
距离向量算法的核心思想是:每个路由器周期性地向其直接相邻的路由器发送自己的路由表(其中包含了每个网络的距离)。所谓的“距离”通常是指经过的路由器数量,也就是所谓的“跳数”。
如何工作?
- 初始化:每个路由器都有一张路由表,表中包含直接连接的网络及对应的“距离”。对于直接连接的网络,距离为0;对于所有其他网络,距离为无穷大。
- 信息交换:每个路由器每隔一定时间(通常30秒)向相邻的路由器广播自己的路由表。
- 更新路由表:当路由器收到相邻路由器的路由表后,它会根据“距离向量算法”更新自己的路由表。更新规则是:如果通过新的路由可以到达一个网络,并且新的路由的总“距离”(跳数)比当前路由表中的记录小,那么就更新该网络的距离和下一跳路由器。
- 避免环路:为了防止路由环路(一个数据包永远在几个路由器间循环,找不到出口),RIP协议中有一个“最大距离”的概念。如果一个路由的距离超过15跳(RIP v1),则认为该路由不可达。
假设有一个简单的网络,包含4个路由器A、B、C、D,以及4个网络Net1、Net2、Net3、Net4。
- A直接连着Net1和B
- B直接连着A、C和D
- C直接连着B和Net2
- D直接连着B和Net3
- 初始化阶段:
- A的路由表:Net1(0), Net2(∞), Net3(∞), Net4(∞)
- B的路由表:Net1(1), Net2(∞), Net3(∞), Net4(∞)
- C的路由表:Net1(∞), Net2(0), Net3(∞), Net4(∞)
- D的路由表:Net1(∞), Net2(∞), Net3(0), Net4(∞)
- 交换和更新:
- 假设B收到A的路由表更新了自己的路由表(Net1距离为0,因为直接连接)
- C收到B的路由表,更新Net1的距离为1(通过B到达Net1)
- D同理,更新Net1的距离为1(通过B到达Net1)
- 重复此过程:每隔一定时间,路由器会彼此更新路由表,直到网络稳定,每个路由器都知道到达每个网络的最短路径。
6.3内部网关协议OSRP
跟谁交换信息 | 交换什么信息 | 什么时候交换信息 |
---|---|---|
向本自治系统内所有路由器发送信息 | 与本路由器相邻的所有路由器的链路状态 | 链路发生变化或一个相当长的时间。 |
6.4 外部网关协议BGP
6.4.1什么是BGP,与RIP、OSRP的区别
BGP(Border Gateway Protocol) 是一种用于互联网的外部网关协议,主要用于在不同自治系统(AS)之间交换路由信息。它是 internet 的主干协议之一,特别适用于大规模网络中。
特性 | 边界网关协议 | RIP | OSPF |
---|---|---|---|
作用范围 | 外部网关协议(EGP),用于不同自治系统间 | 内部网关协议(IGP),用于单一自治系统内 | 内部网关协议(IGP),用于单一自治系统内 |
路由选择算法 | 路径向量算法,基于路径、策略和属性 | 距离向量算法,最多15跳 | 链路状态算法,通过计算链接成本 |
稳定性 | 适合大规模网络,能处理大量路由信息 | 适合小型网络,稳定性较好 | 适合中大型网络,能快速收敛 |
网络规模 | 互联网级别 | 小型和中型网络 | 中型和大型网络 |
6.4.2EBGP与IBGP的区别
特性 | EBGP(External BGP) | IBGP(Internal BGP) |
---|---|---|
用途 | 不同自治系统间的路由交换 | 同一自治系统内的路由交换 |
连接方式 | 通常直接连接,AS号会传播 | 在同一AS内的路由器,不能再转发 |
默认TTL值 | 1(必须直接相连) | 255(允许多跳) |
路由传播 | 能够向其他EBGP邻居传播路由 | IBGP路由器之间不传播EBGP路由 |
6.4.3基于路由向量
特性 | 说明 |
---|---|
路径记录 | BGP记录路由经由的AS路径,确保路由的透明性 |
避免环路 | BGP通过检测AS路径中的AS编号避免路由环路 |
路由选择 | 依据路由的属性(如AS路径、下一跳等)进行最优选择 |
选择步骤 | 优先选择本地生成的路由、最短AS路径、最优属性等 |
6.5路由器的构成
6.5.1路由器的结构
路由器是一种具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组。从路由器某个输入端口收到的分组,按照分组要去的目的地(即目的网络),把该分组从路由器的某个合适的输出端口转发给下一跳路由器。下一跳路由器也按照这种方法处理分组,直到该分组到达终点为止。路由器的转发分组正是网络层的主要工作。
6.5.2交换结构
交换结构是路由器的关键构件[KURO17]。正是这个交换结构把分组从一个输入端口转移到某个合适的输出端口。
7.虚拟专用网 VPN 和网络地址转换 NAT
7.1虚拟专用网 VPN
-
什么是VPN?
VPN(Virtual Private Network,虚拟私人网络)是一种通过公共网络(如互联网)创建一个安全、加密的私人网络的技术。它通过在两个或多个设备之间建立一个加密的“隧道”,确保数据在传输过程中的安全性和隐私性。VPN广泛应用于提升网络安全、保护用户隐私以及访问被限制的内容等方面。 -
VPN的功能是什么?
- 加密通信
- 隐藏IP地址
- 绕过地理限制和审查
- 远程访问
- 避免跟踪与监控
-
三类专用地址块
地址范围 | 子网掩码 | 地址数量 |
---|---|---|
10.0.0.0 到 10.255.255.255 | 255.0.0.0 (/8) | 16,777,216个地址 |
172.16.0.0 到 172.31.255.255 | 255.240.0.0 (/12) | 1,048,576个地址 |
192.168.0.0 到 192.168.255.255 | 255.255.0.0 (/16) | 65,536个地址 |
-
使用隧道技术实现虚拟专用网
-
数据封装:在场所A,数据从源地址125.1.2.3发送到目的地址194.4.5.6。数据首先被封装在一个外部数据报中,这个数据报的源地址是场所A的外部地址10.1.0.0,目的地址是场所B的外部地址10.2.0.0。
-
隧道传输:封装后的数据通过互联网传输。在传输过程中,数据保持其封装状态,确保数据的安全性和完整性。
-
数据解封装:当数据到达场所B时,它首先被解封装,提取出原始的数据报。然后,数据被发送到其最终目的地194.4.5.6。
-
7.2网络地址转换NAT
-
地址转换:当内部网络(私有网络)中的设备需要与外部网络(如互联网)通信时,NAT设备(通常是路由器或防火墙)会将内部设备的私有IP地址转换为一个公共IP地址。这个公共IP地址可以是路由器的公共IP地址,或者是路由器上配置的一组公共IP地址之一。
-
端口映射:由于多个内部设备可能需要共享一个公共IP地址,NAT通过使用不同的端口号来区分来自不同内部设备的数据包。这样,即使多个设备使用相同的公共IP地址,也能正确地将数据包路由到正确的内部设备。
-
数据包处理:当数据包从外部网络返回时,NAT设备会根据端口号将数据包转发回正确的内部设备。这样,即使内部设备没有公共IP地址,也能与外部网络进行通信。
这是一个NAPT(网络地址端口转换)地址转换表的示例。NAPT是一种网络技术,用于将私有网络中的多个设备共享一个公共IP地址,以便它们能够访问互联网。这个表格展示了数据包在通过NAPT设备时,其源IP地址和端口号如何被转换。
表格中的内容包括:
- 方向:数据包的流向,可以是从专用网发往互联网,或者从互联网发往专用网。
- 字段:被转换的IP地址和端口号的类型,可以是源IP地址和TCP源端口,或者是目的IP地址和TCP目的端口。
- 原先的IP地址和端口号:数据包在转换前的IP地址和端口号。
- 转换后的IP地址和端口号:数据包在通过NAPT设备后,被转换的IP地址和端口号。
具体来说,这个表格展示了以下转换:
-
从专用网发往互联网:
- 192.168.0.3:30000 转换为 172.38.1.5:40001
- 192.168.0.4:30000 转换为 172.38.1.5:40002
-
从互联网发往专用网:
- 172.38.1.5:40001 转换为 192.168.0.3:30000
- 172.38.1.5:40002 转换为 192.168.0.4:30000
这种转换允许多个设备使用不同的私有IP地址和端口号,通过一个公共IP地址(在这个例子中是172.38.1.5)与互联网通信。当数据包返回时,NAPT设备会根据转换表将数据包的端口号转换回原始的私有IP地址和端口号,确保数据能够正确地返回到发送它的设备。