I P协议

IPv4首部

image-20240528202058963

4个字节的32 bit值以下面的次序传输:首先是 0~7 bit,其次8~15 bit,然后1 6~23 bit,最后是24~31 bit。这种传输次序称作 big endian字节序。由于TCP/IP首部中所有的二进制整数在网络中传输时都要求以这种次序,因此它又称作网络字节序。以其他形式存储二进制整数的机器,如little endian格式,则必须在传输数据之前把首部转换成网络字节序。

一个IP数据报由首部和数据部分组成,首部的前一部分是固定的20个字节,后面部分是可选字段,其长度是可变的。目前的协议版本号是4,因此IP有时也称作IPv4。

首部长度指的是首部占 32 bit字的数目,包括任何选项。由于它是一个4bit字段,因此首部最长为60个字节。普通IP数据报(没有任何选择项)字段的值是5(0101)。

服务类型(TOS)字段包括一个 3 bit的优先权子字段(现在已被忽略),4 bit的TOS子字段和1bit未用位但必须置0。4 bit的TOS分别代表:最小时延、最大吞吐量、最高可靠性和最小费用。4 bit中只能置其中1 bit。如果所有4 bit均为0,那么就意味着是一般服务。

image-20240528202711263

现在大多数的TCP/IP实现都不支持TOS特性,但是自4.3BSD Reno以后的新版系统都对它进行了设置。另外,新的路由协议如 O S P F和I S - I S都能根据这些字段的值进行路由决策。

总长度字段是指整个IP数据报的长度,以字节为单位。利用首部长度字段和总长度字段,就可以知道IP数据报中数据内容的起始位置和长度。由于该字段长16比特,所以IP数据报最长可达65535字节。主机要求不能接收超过5 76字节的数据报(假定上层交512 + 最长IP60 + 4字节富余),超过要进行分片。

分片

把一份IP数据报分片以后,只有到达目的地才进行重新组装(这里的重新组重新组装由目的端的IP层来完成,其目的是使分片和重新组装过程对运输层(TCP和UDP)是透明的,除了某些可能的越级操作外。已经分片过的数据报有可能会再次进行分片(可能不止一次)。IP首部中包含的数据为分片和重新组装提供了足够的信息。

对于发送端发送的每份IP数据报来说,其16位标识字段都包含一个唯一值。该值在数据报分片时被复制到每个片中。3位标志字段用MF=1表示后面还有分片,MF=0表示最后一个。DF = 0表示不能分片。

片偏移字段指的是该片偏移原始数据报开始处的位置。另外,当数据报被分片后,每个片的总长度值要改为该片的长度值。除最后一个数据片其他每个分片的长度一定是8个字节。

当IP数据报被分片后,每一片都成为一个分组,具有自己的 I P首部,并在选择路由时与其他分组独立。这样,当数据报的这些片到达目的端时有可能会失序,但是在IP首部中有足够的信息让接收端能正确组装这些数据报片。

举个例子,一个数据报的总长度为3820字节,数据部分为3800字节。要求分片为长度不超过1420个字节的数据报片。

固定长度为20,所以每个报数据不超过1400,那分成三个,数据部分分别为1400,1400,1000。

image-20240528205154581

TTL(time-to-live)生存时间字段设置了数据报可以经过的最多路由器数。它指定了数据报的生存时间。TTL的初始值由源主机设置(通常为32或6 4),一旦经过一个处理它的路由器,它的值就减去 1。当该字段的值为 0时,数据报就被丢弃,并发送ICMP报文通知源主机。

8位协议可以表示出数据报携带的数据使用了何种协议,方便目的主机IP交付给上层哪个协议处理。

ICMPIGMPIPTCPEGPIGPUDPIPV6ESPAHICMP-IPV6OSPF
124689174150515889

首部检验和字段是根据IP首部计算的检验和码。它不对首部后面的数据进行计算。ICMP、IGMP、UDP和TCP在它们各自的首部中均含有同时覆盖首部和数据检验和码。

网段划分

IP地址分成2个部分,一个是网络号表示主机或者路由器所连接到的网络,网络号在网络中是唯一的,另一个是主机号。不同的子网其实就是把网络号相同的主机放到一起,如果在子网中新增一台主机, 则这台主机的网络号和这个子网的网络号一致, 但是主机号必须不能和子网中的其他主机重复。

在分类编址方案,把IP划分为5类。32位的IP地址我们常用点分十进制表示。例如192.0.0.1,这是一个C类地址。

image-20240529092205734

区分各类地址的最简单方法是看它的第一个十进制整数。

image-20240529092440456

有三类IP地址:单播地址(目的为单个主机)、广播地址(目的端为给定网络上的所有主机)以及多播地址(目的端为同一组内的所有主机)。

  1. 将IP地址中的主机地址全部设为0, 就成为了网络号, 代表这个局域网;
  2. 将IP地址中的主机地址全部设为1, 就成为了广播地址, 用于给同一个链路中相互连接的所有主机发送数据包;
  3. 127.*的IP地址用于本机环回(loop back)测试,通常是127.0.0.1

随着Internet的飞速发展,这种划分方案的局限性很快显现出来,大多数组织都申请B类网络地址, 导致B类地址很快就分配完了, 而A类却浪费了大量地址;为了解决这个问题提出了无分类编址CIDR。

CIDR把网络号改成网络前缀(network-prefix),剩下的部分仍为主机号。网络前缀的位数n是在0-32位之间的任意值。

image-20240529093406614

我们会采用"斜线记法"来表示网络前缀所占的位数,比如191.1.1.2/21;表明前21位是网络前缀(网络号),剩下的11位是主机号。

CIDR把相同前缀IP组成一个"CIDR"地址块,这样我们只需要知道地址块中的任何一个地址,就能知道这个地址块的最小和最大地址是多少。例如,

128.14.35.7/20 = 10000000 00001110 0010 (网络号)|0011 00000111(主机号)
最小地址:128.14.32.0 -- 10000000 00001110 0010 | 0000 00000000
最大地址:128.14.47.255--10000000 00001110 0010 | 1111 11111111

地址掩码

计算机并不懂"斜线记法",所以引入了地址掩码。地址掩码是由1连串的1和0组成的。1的个数代表网络前缀的长度,斜线后的数字就是地址掩码中1的个数,例如"/15" 11111111 1111111 00000000000000000写成点分十进制是255.254.0.0。

对于早期的分类IP地址,地址掩码是固定的。

  • A类网络,地址掩码为255.0.0.0
  • B类网络,地址掩码为255.255.0.0
  • C类网络,地址掩码为255.255.255.0

把二进制的IP与子网掩码进行按位与操作就能得出网络地址。例如,

image-20240529095425221

CIDR有3个特殊的地址块:

  1. 前缀是32位,没有主机号,常用于主机路由。

  2. 前缀是31位,只要2个IP,主机号是0/1,用与点对点链路。

  3. 前缀为0同时IP地址也是0,即0.0.0.0/0,用于默认路由。

image-20240529095852128

一个大的CIDR通常包含很多小的地址块,路由转发表中利用大的CIDR来代替小的这叫路由聚合,使转发表中的项目数减少,从而减少了转发表所占的存储空间,缩短查找转发表的时间。

IP地址(IPv4)是一个4字节32位的正整数. 那么一共只有 2的32次方 个IP地址, 大概是43亿左右。而TCP/IP协议规定, 每个主机都需要有一个IP地址。实际上, 由于一些特殊的IP地址的存在, 数量远不足43亿; 另外IP地址并非是按照主机台数来配置的, 而是每一个网卡都需要配置一个或多个IP地址。
CIDR在一定程度上缓解了IP地址不够用的问题(提高了利用率, 减少了浪费, 但是IP地址的绝对上限并没有增加), 仍然不是很够用. 这时候有三种方式来解决:
1.动态分配IP地址: 只给接入网络的设备分配IP地址。因此同一个MAC地址的设备, 每次接入互联网中, 得到的IP地址不一定是相同的;
2.NAT技术
3.IPv6:Pv6用16字节128位来表示一个IP地址; 但是目前IPv6还没有普及;

私有IP/公有IP

如果一个组织内部组建局域网,IP地址只用于局域网内的通信,而不直接连到Internet上,理论上 使用任意的IP地址都可以,但是RFC 1918规定了用于组建局域网的私有IP地址

  1. 10.0.0.0/8:地址范围为10.0.0.0 - 10.255.255.255,共有16,777,216个地址。
  2. 172.16.0.0/12:地址范围为172.16.0.0 - 172.31.255.255,共有1,048,576个地址。
  3. 192.168.0.0/16:地址范围为192.168.0.0 - 192.168.255.255,共有65,536个地址。

包含在这个范围中的, 都成为私有IP, 其余的则称为全局IP(或公网IP)。在内部网络中,设备可以使用私有IP地址进行通信,而无需担心与公共互联网上的其他设备发生冲突。

此外,通过使用网络地址转换(NAT)技术,内部网络中的设备可以共享一个或多个公有IP地址来访问公共互联网。

公有IP地址是可以在公共互联网上路由的IP地址,可以从公共互联网上直接访问。这些地址由互联网服务提供商(ISP)分配给组织或个人,用于连接设备到公共互联网。公有IP地址是唯一的,并且必须遵循互联网上的路由规则才能到达其目的地。

公有IP地址的范围非常大,几乎涵盖了所有可用的IPv4地址空间(除了私有IP地址范围和其他保留地址)。然而,随着IPv4地址的耗尽,IPv6已经被广泛采用,以提供几乎无限的地址空间。

VPN

VPN(虚拟私人网络)是一种可以在公共网络上建立加密通道的技术,通过这种技术可以使远程用户访问公司内部网络资源时,实现安全的连接和数据传输。

NAT

NAT(Network Address Translation)技术,即网络地址转换技术,是用于在本地网络中使用私有地址,在连接互联网时转而使用全局IP地址的一种技术。

NAT技术主要在路由器中实现,当内部网络中的设备需要访问外部网络时,路由器会将设备的私有IP地址转换为公有IP地址,并在外部网络中发送数据包。同时,路由器会维护一个NAT转换表,用于记录内部设备的私有IP地址、端口号与外部设备的公有IP地址、端口号之间的映射关系。当外部设备回复数据包时,路由器会根据NAT转换表将数据包的目的地址和端口号转换回内部设备的私有IP地址和端口号,从而实现内部设备与外部设备之间的通信。

代理服务器

代理服务器是一种位于客户端和服务器之间的中间服务器,它接收客户端的请求,并将这些请求转发给目标服务器,然后再将服务器的响应返回给客户端。

工作原理:当客户端需要访问某个网络资源时,它会将请求发送给代理服务器。代理服务器会先检查缓存中是否已有该资源的副本,如果有则直接返回给客户端;如果没有,则代理服务器会将请求转发给目标服务器,并将响应返回给客户端。同时,代理服务器还可以对请求和响应进行过滤、修改或记录。

类型:

  • 正向代理:客户端知道代理服务器的存在,并主动将请求发送给代理服务器。
  • 反向代理:客户端不知道代理服务器的存在,它认为它正在与目标服务器直接通信,但实际上请求和响应都是通过代理服务器进行转发的。

NAT和代理服务器都在网络通信中扮演着重要的角色。NAT主要用于解决IP地址不足的问题,并增加网络的安全性;而代理服务器则主要用于缓存、过滤和控制网络流量。

DNS

DNS(Domain Name System)是域名系统的缩写,它是一个分布式数据库系统,用于将人们易于记忆的域名(如www.jiantao.com)转换为计算机可识别的IP地址(如192.1.1.1)。

DNS的工作原理主要基于递归查询和迭代查询两种方式。当用户输入一个域名时,其计算机首先会向本地DNS服务器(也称为递归解析器)发送查询请求。本地DNS服务器会先检查其缓存中是否已存在该域名的IP地址记录,如果存在则直接返回结果;如果不存在,则会向根域名服务器发送查询请求。根域名服务器会返回负责该顶级域名的顶级域名服务器的地址,本地DNS服务器再向该顶级域名服务器发送查询请求,以此类推,直到找到最终的IP地址并返回给用户。

ARP/RARP

image-20240529102143410

ARP能将32位的IP地址和48位数据链路层的地址进行动态映射,动态表示这个过程是自动完成的,它的逆过程叫RARP,现在的DHCP已经包了RARP的功能了。

ARP请求和应答分组的格式

image-20240529103613889

每一个主机上都有一个ARP的高速缓存,高速缓存中存放着一张IP到MAC的映射表,这个表会动态更新,一开始ARP进程A会广播一个ARP请求,A把自己的IP到MAC写入ARP请求中,在本局域网的主机都会收到,如果有一台主机B和请求分组中要查询的IP一致,就收下这个ARP请求,同时在这个ARP响应分组中写入自己的MAC地址,A在收到B的ARP响应分组后在高速缓存中写入主机B的IP到MAC地址的映射。

在ARP高速缓存中的表项一般都要设置超时值(10-20分钟),超过时间的项目就从高速缓存中删掉。

ICMP

ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告。ICMP封装在IP数据报中作为数据部分。

image-20240530121824058

ICMP报文中类型字段可以有15个不同的值,检验和字段覆盖整个I CMP报文。使用的算法与IP首部检验和算法相同。ICMP的检验和是必需的。

image-20240530122339860

ICMP报文有2种,ICMP差错报文和ICMP询问报文。

image-20240530122449274

ICMP差错报文

ICMP差错报文数据字段都具有相同的格式,把收到要进行差错报告的IP数据报的首部和数据字段前8个字节提取出来,作为ICMP的数据字段,再加上相应的ICMP差错报告报文的前8个字节,构成ICMP差错报文。

image-20240530123621816

提取数据字段的前8个字节是为了得到传输层的端口号以及TCP的发送序号

下面各种情况都不会导致产生ICMP差错报文:

  1. 对ICMP差错报告报文不再发送ICMP差错报告报文
  2. 不是IP分片的第一片
  3. 目的地址是广播地址或多播地址的IP数据报
  4. 源地址不是单个主机的数据报。这就是说,源地址不能为零地址、环回地址、广播地址或多播地址。

ICMP询问报文

常用的ICMP询问报文有2种:

  1. ICMP回送请求报文是主机或路由器向一个特定的目的主机发出询问,收到此报文的主机必须回一个ICMP回答报文,可以测试出目的站是否可以达以及了解状态。
  2. 时间戳请求或时间戳回答,在ICMP报文发出去后,就能收到对方响应的ICMP时间戳回答报文,可以计算出当前网络的往返时延。

由于ICMP覆盖的范围很广,从致命差错到信息差错,因此即使在一个给定的系统实现中,对每个ICMP报文的处理都是不相同的。下面是4.4BSD系统
对每个可能的ICMP报文的处理方法。

image-20240530124829036

如果最后一列标明是“内核”,那么ICMP就由内核来处理。如果最后一列指明是“用户进程”,那么报文就被传送到所有在内核中登记的用户进程,以读取收到的ICMP报文。如果不存在任何这样的用户进程,那么报文就悄悄地被丢弃(这些用户进程还会收到所有其他类型的ICMP报文的拷贝,虽然它们应该由内核来处理,当然用户进程只有在内核处理以后才能收到这些报文)。

有一些报文完全被忽略。最后,如果最后一列标明的是引号内的一串字符,
那么它就是对应的Unix差错。

ICMP的重要应用就是PING和traceroute,下面我们来看看这个两个命令。

Ping

Ping目的是为了测试另一台主机是否可达。该程序发送一份ICMP回显请求报文给主机,并等待返回ICMP回显应答。

一般来说,如果不能Ping到某台主机,那么就不能Telnet或者FTP到那台主机。反过来,如果不能Telnet到某台主机,那么通常可以用Ping程序来确定问题出在哪里。Ping程序还能测出到这台主机的往返时间,以表明该主机离我们有“多远”。

image-20240530214631569

Traceroute

image-20240530214720886

Traceroute程序可以让我们看到IP数据报从一台主机传到另一台主机所经过的路由。Traceroute程序还可以让我们使用IP源路由选项。

Traceroute程序使用ICMP报文和IP首部中的TTL字段(生存周期)。TTL字段是由发送端初始设置一个8bit字段。推荐的初始值由分配数字RFC指定,当前值为64。每个处理数据报的路由器都需要把TTL的值减1或减去数据报在路由器中停留的秒数。

由于大多数的路由器转发数据报的时延都小于1秒钟,因此TTL最终成为一个跳站的计数器,所经过的每个路由器都将其值减 1。

当路由器收到一份IP数据报,如果其TTL字段是0或1,则路由器不转发该数据报(接收到这种数据报的目的主机可以将它交给应用程序,这是因为不需要转发该数据报。但是在通常情况下,系统不应该接收TTL字段为 0的数据报)。相反,路由器将该数据报丢弃,并给信源机发一份ICMP“超时”信息。 Traceroute程序的关键在于包含这份ICMP信息的IP报文的信源地址是该路由器的IP地址。

我们现在可以猜想一下Traceroute程序的操作过程。它发送一份TTL字段为1的IP数据报给目的主机。处理这份数据报的第一个路由器将TTL值减1,丢弃该数据报,并发回一份超时ICMP报文。这样就得到了该路径中的第一个路由器的地址。然后Traceroute程序发送一份TTL值为2的数据报,这样我们就可以得到第二个路由器的地址。

继续这个过程直至该数据报到达目的主机。但是目的主机哪怕接收到TTL值为1的I P数据报,也不会丢弃该数据报并产生一份超时ICMP报文,这是因为数据报已经到达其最终目的地。那么我们该如何判断是否已经到达目的主机了呢?
Traceroute程序发送一份UDP数据报给目的主机,但它选择一个不可能的值作为 UDP端口号(大于30000),使目的主机的任何一个应用程序都不可能使用该端口。因为,当该数据报到达时,将使目的主机的UDP模块产生一份“端口不可达”错误的ICMP报文。
这样, Traceroute程序所要做的就是区分接收到的ICMP报文是超时还是端口不可达,以判断什么时候结束。

IP路由

路由表生成的方式一般有两种一种是静态路由,另一种是动态路由。

静态路由

静态路由是由网络管理员手动配置的路由,路由表中的路由项(routing entry)是固定的,不会随网络状况的变化而自动调整。

特点是:

  • 手动配置:网络管理员需要逐项将路由信息添加到路由表中。

  • 固定不变:静态路由信息在配置完成后不会改变,除非管理员手动修改。

  • 适用于中小型网络:在中小型网络中,网络拓扑结构相对简单,静态路由配置相对容易。

  • 安全性高:由于静态路由不需要路由器之间频繁交换路由信息,因此减少了网络泄露拓扑结构和地址信息的风险。

  • 不占用网络带宽:静态路由不会产生更新流量,因此不会占用网络带宽。

  • 不适用于大型和复杂的网络环境:在大型和复杂的网络环境中,网络管理员难以全面了解整个网络的拓扑结构,静态路由的配置和维护变得困难。

  • 无法适应网络变化:当网络拓扑结构或链路状态发生变化时,静态路由信息需要大范围地调整,这增加了网络管理员的工作量和难度。

  • 不能自动选择最佳路径:静态路由只能按照管理员预先设定的路径进行转发,无法根据网络状况自动选择最佳路径。

动态路由

当相邻路由器之间进行通信,以告知对方每个路由器当前所连接的网络,这时就出现了动态选路。路由器之间必须采用选路协议进行通信,这样的选路协议有很多种。路由器上有一个进程称为路由守护程序(routing daemon),它运行选路协议,并与其相邻的一些路由器进行通信。

image-20240530133229801

路由守护程序将选路策略( routing policy)加入到系统中,选
择路由并加入到内核的路由表中。如果守护程序发现前往同一信宿存在多条路由,那么它(以某种方法)将选择最佳路由并加入内核路由表中。

如果路由守护程序发现一条链路已经断开(可能是路由器崩溃或电话线路不好),它可以删除受影响的路由或增加另一条路由以绕过该问题。

Internet这样的系统中,目前采用了许多不同的选路协议。Internet是以一组自治系统(AS,Autonomous System)的方式组织的,每个自治系统通常由单个实体管理。常常将一个公司或大学校园定义为一个自治系统。

每个自治系统可以选择该自治系统中各个路由器之间的选路协议。这种协议我们称之为内部网关协议IGP(Interior Gateway Protocol),最常用的IGP是选路信息协议RIP和OSPF。

若源主机和目的主机处在不同的自治系统中,在不同的自治系统中的路由选择就使用外部网关协议EGP。

RIP

RIP是一种分布式基于距离向量的路由选择协议,网络中的每一个路由器都要维护从它自己到每一个目的网络的距离记录,RIP所使用的度量是以跳 (hop)计算的,所有直接连接接口的跳数为1,每经过一个网络就会+1,一条路径上最大的跳数为15。

分布式的意思是每一个路由器都需要不断的和其他的路由器交换信息,RIP有它的特点:

  1. 仅和相邻的路由器交换
  2. 交换的信息是当前路由器知道的全部信息,到所有网络的最短距离和到每个网络的下一跳路由器
  3. 按固定的时间间隔交换路由信息。

RIP报文包含中在UDP数据报中,RIP报文由首部和路由部分组成,路由部分填入ASN自治系统号,还要指出目的网络地址、下一跳路由器地址、到此网络的距离,一个RIP报文最多携带25个路由。

image-20240530140119148

RIP的点是简单,开销小,适用小型网络,好消息传播快,坏消息传播慢。

OSPF

开放最短路径优先OSPF(Open Shortest Path First),开放表明不是受一家厂商控制,最短路径是选用了Dijkstra提出的SPF算法。

OSPF是链路状态协议,采用泛洪法向自治系统内所有路由器发送信息,发的信息是与本路由器相邻的所以路由器的链路状态,“链路状态"包括和哪些路由器相邻和"度量”,"度量"是费用、距离、带宽等等。所以每个路由器都知道全网有多少个路由器以及哪些路由器是相连的,代价是多少。

当链路状态发生变化的时候或每隔一段时间,路由器向所有路由器用泛洪法发送链路状态信息,所以OSPF的更新过程收敛的快。

为了OSPF能适应更大的网络,把自治系统再分若干个Area,每个Area用32为区域标识符表示。在一个区域内部的路由器只知道区域内部的网络拓扑结构。

OSPF采用层次结构的区域划分,上层叫主干区(backbone area),标识符为0.0.0.0。层次划分使得每个区域内部交换路由信息通信量大大减少。

image-20240530142353796

OSPF还有几个特点:

OSPF允许管理官给每条路由指定不同的代价,支持负载均衡式分为通信量,具有鉴别功能,支持可变长度子网划分和CIDR,每一个链路状态都具有一个序号,越大越新。

OSPF种分组类型

  1. Hello分组(Hello Packet)用于发现和维持邻站的可达性,确定路由器之间的邻居关系。每个路由器都会周期性地发送Hello分组以寻找其他OSPF路由器,并通过交换Hello分组来建立和维护邻居关系。

  2. 数据库描述分组(Database Description Packet, DD)

    用于在OSPF路由器之间交换路由信息,描述路由器或路由器区域内路由信息的变更情况。每个路由器在初始链接建立之后,会发送DD分组以向邻居路由器展示自己的路由信息。通过交换DD分组,路由器可以建立一个包含整个网络路由信息的拓扑数据库。

  3. 链路状态请求分组(Link State Request Packet, LSR)

    用于请求邻居路由器的链路状态信息。当一个路由器需要更新部分或全部链路状态数据库时,它会发送LSR分组给邻居路由器,请求它们的最新链路状态信息。

  4. 链路状态更新分组(Link State Update Packet, LSU)

    用于传输链路状态信息的具体内容。当一个路由器接收到LSR分组后,如果有对应的链路状态信息,就会用LSU分组将这些信息发送给请求的路由器。LSU分组中包含了链路状态数据库中的具体内容,包括路由器、链路和网络等信息。

  5. 链路状态确认分组(Link State Acknowledgment Packet, LSAck)

    用于确认接收到的LSU分组,并通知发送者它们已收到了相应的链路状态信息。当一个路由器接收到LSU分组后,它会通过LSAck分组向发送路由器发送确认信息,表示接收到了该分组。这是确保LSU分组可靠传输的一种机制。

OSPF运行过程:

  1. OSPF 以组播的方式在所有开启 OSPF 协议的接口发送 Hello 报文,用来查看是否有OSPF 邻居;

  2. 发送 Hello 报文之后,若发现邻居则建立 OSPF 邻居关系,形成邻居表项;

  3. 建立邻居表后,向各邻居发送 LSA 报文相互通告路由,形成 LSDB(链路状态数据库);

  4. 基于 LSDB,通过 SPF(Shortest Path First)算法,计算最佳路径(cost 度量值最小)后放入路由表中。

BGP

BGP(Border Gateway Protocol)即边界网关协议,是互联网上一个核心的去中心化自治路由协议。它维护IP路由表或“前缀”表来实现自治系统(AS)之间的可达性,属于矢量路由协议。BGP不使用传统的内部网关协议(IGP)的指标,而使用基于路径、网络策略或规则集来决定路由。

image-20240530144403741

特点:

  1. 传输协议:BGP使用TCP作为其传输协议,运行在TCP的179端口上,确保路由信息的可靠传输。
  2. 可靠性:由于传输是可靠的,BGP使用增量更新,在可靠的链路上不需要使用定期更新,因此BGP使用触发更新。
  3. 路径向量协议:BGP是一种路径向量协议,通过维护一个AS路径列表来选择最佳路径。
  4. 丰富的属性:BGP具有丰富的属性值,包括AS路径、MED(多出口区分)、社区等,用于路由决策和策略实施。
  5. 可扩展性:BGP可以组建可扩展的巨大的网络,支持CIDR(无类别域间选路)和VLSM(变长子网掩码),提高IP地址利用率。

BGP就不多介绍了,具体的大家可以看这篇文章BGP。

分组转发

当路由器收到一个待转发的分组,从转发表得出下一跳路由器IP后,把地址交给数据链路层的网络接口软件,网络接口软件把下一跳路由的IP地址转换MAC地址,再将这MAC地址放在MAC帧首部,利用这MAC地址送到下一跳路由器的链路层,下一跳的路由器再将MAC转回IP。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/23955.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

简单聊聊大数据分析的方法有什么

大数据分析是指对规模巨大的数据集合进行的分析过程。 这些数据集合通常具有以下几个特点,可以概括为5个V: 1.数据量大(Volume):大数据分析处理的数据量巨大,远远超出了传统数据处理软件的能力范围。 2.…

攻防世界testre做法(考点:base58)

在做这道题目之前,我们先来简单了解一下base64加密和base58加密,先来说一些预备知识,bit为1个位,即一个0或1,八个位组成一个字节,即八个二进制数。 base64编码原理:1,在使用base64加…

走进 Apache 世界的另一扇大门

引言 作为热爱技术的你,是否也羡慕 Apache PMC 或者 Committer,此篇文章渣渣皮带你迈出如何成为技术大牛的第一步。 当然我现在还是一枚小小的 code contributor,在成为 committer 的路上还在奋力打码中,写这篇文章也是为大家有…

Windows搭建apache网站

1、官网下载安装包,注意下载服务器对应操作系统的安装包(此案例为64位操作系统) Apache VS17 binaries and modules downloadFor (business) webmasters, developers and home-users who want running always up to date Windows VS17 binar…

【机器学习】机器学习与智能交通在智慧城市中的融合应用与性能优化新探索

文章目录 引言机器学习与智能交通的基本概念机器学习概述监督学习无监督学习强化学习 智能交通概述交通流量预测交通拥堵管理智能信号控制智能停车管理 机器学习与智能交通的融合应用实时交通数据分析数据预处理特征工程 交通流量预测与优化模型训练模型评估 智能信号控制与优化…

pycharm安装openai报错

解决方案: Rust官网:http://rust-lang.org 下载安装包,下载后如下 双击这个exe文件 提示需要安装visual studio选择1进行安装即可。安装完成后会自动进行下一步 选择1进行安装 默认安装到C:\Users\用户名文件夹下 验证是否安装成功 由于这两个文件夹占…

k8s:实现一个pod两个容器

# 制作两个容器的镜像 通过以下Dockerfile创建一个镜像 cd /chz/install/docker vim Dockerfile <<<< 内容如下&#xff1a; FROM centosRUN sed -i -e "s|mirrorlist|#mirrorlist|g" /etc/yum.repos.d/CentOS-* RUN sed -i -e "s|#baseurlhttp:/…

Spring Boot框架基础

文章目录 1 Spring Boot概述2 Spring Boot入门2.1 项目搭建2.2 入门程序 3 数据请求与响应3.1 数据请求3.2 数据响应 4 分层解耦4.1 三层架构4.2 控制反转4.3 依赖注入 5 参考资料 1 Spring Boot概述 Spring是Java EE编程领域的一个轻量级开源框架&#xff0c;是为了解决企业级…

Python 机器学习 基础 之 处理文本数据 【处理文本数据/用字符串表示数据类型/将文本数据表示为词袋】的简单说明

Python 机器学习 基础 之 处理文本数据 【处理文本数据/用字符串表示数据类型/将文本数据表示为词袋】的简单说明 目录 Python 机器学习 基础 之 处理文本数据 【处理文本数据/用字符串表示数据类型/将文本数据表示为词袋】的简单说明 一、简单介绍 二、处理文本数据 三、用…

IDEA2023.1.4配置springboot项目

新建“Spring Initializr”项目 勾选以下三个依赖项即可。 springboot分为代码层、资源层和测试层。 代码层 根目录&#xff1a;src/main/java 入口启动类及程序的开发目录。在这个目录下进行业务开发、创建实体层、控制器层、数据连接层等。 资源层 根目录&#xff1a;src…

喜讯!云起无垠入选《LLM驱动数字安全2024—AI安全系列报告》

近日&#xff0c;国内领先的数字化领域第三方服务机构数世咨询&#xff0c;发布了《LLM驱动数字安全2024—AI安全系列报告》。该报告深入统计分析了国内在LLM研发或应用方面具有实力的数字安全供应商&#xff0c;并通过报告和雷达图的形式&#xff0c;直观展示了这些供应商在数…

vue2的form利用插槽修改错误提示UI

1. 需求 很多时候我们使用el-form想修改下错误提示的UI&#xff0c;比如table中使用form校验这类场景下错误提示的UI调整就非常重要。 2. 了解文档 Form-Item Scoped Slot name说明error自定义表单校验信息的显示方式&#xff0c;参数为 { error } 3.实际使用 html里使用…

抽象,自定义函数,递归

6.1懒惰是一种美德 如果你 在一个地方编写了一些代码&#xff0c;但需要在另一个地方再次使用&#xff0c;该如何办呢&#xff1f; 假设你编写了一段代码&#xff0c;它计算一些斐波那契数&#xff08;一种数列&#xff0c;其中每个数都是前两个数的和&#xff09;。 现在的…

笔记96:前馈控制 + 航向误差

1. 回顾 对于一个 系统而言&#xff0c;结构可以画作&#xff1a; 如果采用 这样的控制策略&#xff0c;结构可以画作&#xff1a;&#xff08;这就是LQR控制&#xff09; 使用LQR控制器&#xff0c;可以通过公式 和 构建一个完美的负反馈系统&#xff1b; a a 但是有上…

解密智慧校园解决方案:赋能数字化教育的未来

在当今数字化时代&#xff0c;智慧校园解决方案正以惊人的速度改变着教育界的面貌。随着科技的快速发展&#xff0c;数字化教育已经逐渐成为现代教育的核心。智慧校园解决方案作为一个集技术、教育和创新于一体的综合性项目&#xff0c;为学校提供了许多机遇和挑战。本文将揭示…

遇见桂林山水画廊,深层互联自动讲解耳机走进漓江

遇见山水&#xff0c;听懂山水。由深层互联独家打造&#xff0c;桂林漓江山水画廊导览工程&#xff0c;于不久前正式启动&#xff0c;声情并茂的真人语音引导着游客&#xff0c;走进有声有色的山水画卷中。 桂林山水甲天下&#xff0c;得天独厚的自然景观&#xff0c;奇幻瑰丽…

掌握4种常见电脑视频压缩方法,轻松解决空间危机

在现今数字化的时代&#xff0c;视频成为我们生活和工作中不可或缺的一部分。然而&#xff0c;随着高清、超高清视频的普及&#xff0c;视频文件的大小也随之增大&#xff0c;给存储、传输和分享带来了一定的挑战。为了克服这一问题&#xff0c;电脑视频压缩成为一项关键的技术…

SwiftUI获取用户的位置信息(CLLocationManager,CLLocationManagerDelegate)

本篇文章将会介绍一下在SwiftUI中如何通过CorLocation框架获取用户的位置信息&#xff0c;因为获取位置信息属于用户的隐私信息&#xff0c;所以需要在Info.plist文件里面加上访问位置权限的说明。 关于位置信息&#xff0c;可以请求两种级别的许可&#xff1a;always和when i…

视频剪辑去水印软件推荐 视频剪辑去水印方法

不会去水印&#xff0c;很难做好视频剪辑。选对软件、掌握去水印的方法&#xff0c;是每个剪辑师必须经历的过程。真正擅长视频剪辑去水印的软件&#xff0c;一定具备多种去水印功能。剪辑师可以根据素材的具体情况&#xff0c;选择最恰当的去水印方法。有关视频剪辑去水印软件…

JimuReport 积木报表 v1.7.5 版本发布,免费的低代码报表

项目介绍 一款免费的数据可视化报表工具&#xff0c;含报表和大屏设计&#xff0c;像搭建积木一样在线设计报表&#xff01;功能涵盖&#xff0c;数据报表、打印设计、图表报表、大屏设计等&#xff01; Web 版报表设计器&#xff0c;类似于excel操作风格&#xff0c;通过拖拽完…