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。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

抖音直播统计、直播间无人互动直播效果软件--抖音大师!

抖音大师介绍 抖音大师是抖音直播统计、直播间无人互动直播效果软件,通过它,你可以快速添加直播互动效果!软件使用C#开发,无论是内存占用还是执行效果都远比同行的效果高太多!!电脑所需性能大大降低&#x…

Day11:空间转换、动画

目标:使用 3d 空间转换、动画丰富网页元素的呈现方式。 一、空间转换 1、空间转换简介 空间:是从坐标轴角度定义的 X 、Y 和 Z 三条坐标轴构成了一个立体空间,Z 轴位置与视线方向相同空间转换也叫 3D 转换属性:transform 2、平移…

maybaits-plus新增拦截器动态修改sql与pageHelper结合的问题

需求: 对每个sql进行权限控制,判断用户是查询出来的数据 由于涉及到几十个sql的改造,都要增加这个条件,一个个改很麻烦,所以通过增加sql拦截器,给每个sql追加权限条件 以flowMapper.queryOverFlowPage为例&…

node版本的升级和降级

一、问题描述 在开发过程中,我们可能会遇到在A项目中用 node14 版本,而在B项目中要用 node16 版本,从而需要切换不同的 node 版本来开发项目。 二、安装 gnvm 1、在已经安装好 nodejs 的前提下,我们来安装 gnvm &#xf…

Linux[高级管理]——使用源码包编译安装Apache网站

🏡作者主页:点击! 👨‍💻Linux高级管理专栏:点击! ⏰️创作时间:2024年5月31日14点20分 🀄️文章质量:96分 在Linux系统上编译和安装Apache HTTP Server是…

基于Vue3的Uniapp实训项目|一家鲜花店

基于Vue的Uniapp实训指导项目 项目预览: 在这里插入图片描述 pages.json {"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages{"path": "pages/index/index",&…

微信小程序蓝牙连接部分Android14调用wx.setBLEMTU协商低功耗最大传输单元失败解决方案(部分安卓14设置超过23就会报错)

1.解决方案的核心内容:第一次设置失败不要管,在complate函数里面继续往下连接,然后设置一个定时器每1秒钟在重新设置一次,肯定会成功的!!!!!!!&am…

PS系统教程09

修复照片 修饰工具 污点修复画笔工具(J) 主要作用:去除一些污点或者不需要的 【:缩小】:放大 目标:去掉这两个点 修复画笔工具 也就是说我们要有取样点 选择修复画笔工具按住Alt键吸取周边相近颜色松开单机…

手把手教你使用O2OA(翱途v9)开发应用平台(1)-平台初始化

今天我们就来搭建O2OA服务,并初始化基础数据。 服务器安装启动 获取O2OA O2OA平台以及其所有源码,都是可以免费获取的,要获取可运行的O2OA平台,有三种方式: 1、容器化部署 2、从官网下载可运行版本 3、下载源码&…

YOLOv5改进 | 主干网络 | 将主干网络替换为轻量化的ShuffleNetv2【原理 + 完整代码】

💡💡💡本专栏所有程序均经过测试,可成功执行💡💡💡 目标检测是计算机视觉中一个重要的下游任务。对于边缘盒子的计算平台来说,一个大型模型很难实现实时检测的要求。基于一系列消融…

直流电机工作原理与控制电路解析

工作原理: 洛伦兹力原理: 直流电机中,定子上通电产生磁场,而转子内导体通电后在磁场中受到洛伦兹力的作用,使其产生转动力矩。 转子内的导体通电后会在磁场中受到力的作用,根据洛伦兹力的方向规则&#…

【metricbeat】通过metricbeat采集prometheus指标

通过metricbeat采集prometheus指标 通过beat采集prometheus内的单个指标。 低版本beat只能全量 环境 # 低版本metricbeat只能全量采集 软件版本:metricbeat8.11.1 解压 tar zxvf metricbeat-8.11.1-linux-x86_64.tar.gz -C /usr/local配置 首先,修改…

数据库索引的理解

目录 1.索引是什么,解决了什么问题 2.索引付出了什么代价 3.如何使用sql索引,有何注意事项 普通索引: 唯一索引: 主键索引(Primary Key Index): 删除索引: 创建主键索引的基本语法: 4.索引背后的数据结构 1.索…

Spring Boot 集成 zxing 生成条形码与二维码

前面我们知道了怎么通过 使用 zxing 生成二维码以及条形码, 由于我们现在都是 web 端的项目了,那么我们看下怎么使用 Spring Boot 集成然后返回给前端展示: 工程源码 对应的工程源码我放到了这里:github源码路径,点击…

80V高耐压低静态线性稳压器/LDO,Vout 1v-65v 3.3V及5V方案最佳选择

概述 PC93XX系列专为动力而设计-敏感应用程序。它包括一个精度第二个高压输入级,超低功率 偏置电流分支,并产生超低功率和低压差线性调节器。PC93XX通过输入电压工作VOUT1V至65V,仅消耗1.8μA的静态电流,并提供1%的初始精度和低…

Maven项目打包成jar项目后运行报错误: 找不到或无法加载主类 Main.Main 和 jar中没有主清单属性解决方案

已经用maven工程的package功能进行了打包 找不到或无法加载主类 Main.Main 规定主类 主要在maven的配置文件当中 这边一定要绑定自己的启动类 jar中没有主清单属性 删掉这一行就行哈 正确的插件代码 <plugin><groupId>org.springframework.boot</groupId&…

孩子出生后为什么要做听力筛查?

孩子出生后为什么要做听力筛查&#xff1f; 新生儿听力筛查&#xff0c;就是对所有新生儿在尽早的时间&#xff08;出生48小时后&#xff09;进行系统的听力筛查测试。据相关文献报道&#xff0c;在我国&#xff0c;正常分娩的新生儿听力障碍的发生率约为0.1&#xff5e;0.3%&a…

gomail发送邮件的参数如何设置?如何使用?

gomail发送邮件的认证方式有哪些&#xff1f;怎么设置邮件发信&#xff1f; Gomail是一个常用的Go语言邮件发送库&#xff0c;它提供了简单易用的接口&#xff0c;使得邮件发送变得非常方便。AokSend将详细介绍如何设置gomail发送邮件的参数&#xff0c;帮助开发者更好地理解和…

Window11开放端口

&#xff08;1&#xff09;打开控制面板&#xff0c;进入【控制面板\系统和安全\Windows Defender 防火墙】 &#xff08;2&#xff09;点击左侧菜单【高级设置】&#xff0c;进入防火墙设置页面 &#xff08;3&#xff09;根据需要选择【入站规则】或者【出站规则】&#xff…

《猎杀:对决》是适合什么样的人玩 Mac电脑怎么玩《猎杀:对决》

《猎杀&#xff1a;对决》是一款集合了生存、竞技和恐怖元素的多人在线游戏&#xff0c;自推出以来受到了广大玩家的热爱。本文将详细探讨《猎杀&#xff1a;对决》适合什么样的人玩以及Mac电脑怎么玩《猎杀&#xff1a;对决》。本文将一一解析&#xff0c;帮助你了解这款游戏是…