计网网络层

文章目录:

文章目录

  • 概述
    • 服务
      • 面向连接的虚电路服务
      • 无连接的数据报服务
    • IPv4
      • 分类编址
        • A类地址
        • B类地址
        • C类地址
      • 划分子网
        • 默认子网掩码
      • 无分类编址
        • 路由聚合
      • 应用规划
    • IP数据报的发送和转发过程
    • 静态路由配置
    • 路由选择协议
      • 静态路由选择
      • 动态路由选择
      • 路由信息协议RIP
        • 工作过程
        • 更新规则
      • 开放最短路径优先OSPF协议
        • 工作原理
        • 工作过程
      • 边界网关协议BGP
    • IP数据报首部格式
    • 网际控制报文协议ICMP
      • 常用的ICMP询问报文
    • 虚拟专用网
    • 网络地址转换

概述

网络层的主要任务是实现网络互连,进而实现数据包在各网络之间的传输。

要实现网络层的任务,需要解决以下主要问题:

  • 网络层向传输层提供的是可靠传输还是不可靠传输服务。
  • 网络层寻址问题
image-20231212091808761
  • 路由选择问题

    image-20231212091955663

因特网是目前全世界用户数量最多的互联网,其使用的是TCP/IP协议栈。

由于TCP/IP协议栈的网络层使用网际协议IP,它是整个协议栈的核心协议,因此在TCP/IP协议栈中网络层常称为网际层

image-20231212092743460

服务

网络层提供了两种服务,一种是面向连接的虚电路服务,另一种是面向无连接的数据报服务。

面向连接的虚电路服务

这种服务的设计思想是,可靠通信是由网络来保证,因此必须建立网络层的连接——虚电路VC(Virtual Circuit)。通信双方沿着已建立的虚电路发送分组。目的主机的地址仅仅在连接建立阶段使用,之后每个分组的首部只需要携带一条虚电路编号(构成虚电路的每一段链路都有一个虚电路编号)。

这种通信方式如果再使用可靠传输的网络协议,则可以使发送的分组最终正确到达接收方(无差错按序到达、不丢失、不重复)。

image-20231212093223563

通信结束后,需要释放之前所建立的虚电路。其实很多广域分组交换网都使用面向连接的虚电路服务。如曾经的X.25和逐渐过时的帧中继FR、异步传输模式和ATM等。

无连接的数据报服务

这种服务的设计思想是,可靠通信应当由用户主机来保证,不需要建立网络层连接,每个分组可走不同的路径,每个分组的首部必须携带目的主机的完整地址。这种通信方式所传输的分组可能误码、丢失、重复和失序。

由于网络本身不提供端到端的可靠传输服务,使得网络中的路由器可以做得比较简单,而且价格低廉(与电信网的交换机相比较)。因特网采用了这种设计思想,也就是将复杂的网络处理功能置于因特网的边缘(用户主机和其内部的传输层),而将相对简单的尽最大努力的分组交付功能放置于因特网的核心。

image-20231212093941469 image-20231212094012144

IPv4

在TCP/IP体系中,IP地址是一个最基本的概念。

IPv4地址即因特网上的每一台主机(或路由器)的每一个接口分配一个在全世界范围内是唯一的32比特的标识符。

IP地址由因特网名字和数字分配机构ICANN进行分配。

我国用户可向亚太网络信息中心APNIC(Asia Pacific Network Information Center)申请IP地址,需要缴费。

2011年2月3日,互联网号码分配管理局1ANA(由ICANN行使职能)宣布,IPV4地址已经分配完毕

我国在2014至2015年也逐步停止了向新用户和应用分配IPV4地址。同时全面开展商用部署1PV6。

IPv4地址的编址方法经历了以下三个历史阶段:

  1. 分类编址(1981)
  2. 划分子网(1985)
  3. 无分类编址(1993)
image-20231214093834243 image-20231214094201092

分类编址

image-20231214172229816

只有A、B、C类地址可以分配给网络中的主机或路由器的各个接口。

image-20231214185409656

image-20231214185422055

主机号为“全0”的地址是网络地址,不能分配给主机或路由器的各接口。主机号为“全1”的地址是广播地址,不能分配给主机或路由器的各接口。

A类地址
image-20231214172719112
B类地址
image-20231214173510003

注意,IP地址是每8位一组。

C类地址

image-20231214173834304

image-20231214174315786

image-20231214175432719

image-20231214175938972

image-20231214185315130

划分子网

32比特的子网掩码可以表明分类IP地址的主机号部分被借用了几个比特作为子网号。

子网掩码使用连续的比特1来对应网络号和子网号

子网掩码使用连续的比特0来对应主机号

将划分子网的IPv4地址与其相应的子网掩码进行逻辑与运算就可以得到IPv4地址所在子网的网络地址。

image-20231214192110479

image-20231214192647716

image-20231214192709024

image-20231214193417949

默认子网掩码

默认的子网掩码是指在未划分子网的情况下使用的子网掩码。

分类编址默认子网掩码
A类地址255.0.0.0
B类地址255.255.0.0
C类地址255.255.255.0
image-20231214194233470

当给定一个分类的IP地址和其相应的子网掩码,就可以知道其子网划分的细节:

  • 划分出的子网数量
  • 每个子网可分配的IP地址数量
  • 每个子网的网络地址和广播地址
  • 每个子网可分配的最小和最大地址

无分类编址

划分子网在一定程度上缓解了因特网在发展中遇到的困难,但是数量巨大的C类网因为其地址空间太小并没有得到充分使用,而因特网的IP地址仍在加速消耗,整个IPv4地址空间面临全部耗尽的威胁。

为此,因特网工程任务组ETF又提出了采用无分类编址的方法来解决P地址紧张的问题,同时还专门成立IPv6工作组负责研究新版本P以彻底解决IP地址耗尽问题。

1993年,IETF发布了无分类域间路由选择CIDR(Classless Inter-Domain Routing)的RFC文档:RFC1517~1519和1520。

CIDR消除了传统的A类、B类和C类地址,以及划分子网的概念。CIDR可以更加有效地分配IPV4的地址空间,并且可以在新的IPV6使用之前允许因特网的规模继续增长。

CIDR使用“斜线记法”,或称为CIDR记法。即在IPv4地址后面加上斜线“/”,在斜线后面写上网络前缀所占的比特数量。

例如:192.168.121.9/15

表示的是网络前缀占用的比特数量为15,主机编号占用的比特数量为 32 - 15 = 17

CIDR实际上是将网络前缀都相同的连续的IP地址组成一个“CIDR地址块”

只要知道CIDR地址块中的任何一个地址,就可以知道该地址块的全部细节:

  • 地址块的最小地址
  • 地址块的最大地址
  • 地址块中的地址数量
  • 地址块聚合某类网络(A类、B类或C类)的数量
  • 地址掩码(也可以继续称为子网掩码)

image-20231214200514942

image-20231214201047712

路由聚合

image-20231214201749854

如上图所示,R1与R2是相邻路由器,他们会周期性地通告自己所知道的路由信息给对方。如果R1直接将上图的五条记录都通告给R2,则R2的路由表中就要新增五条记录。

为了减少路由记录对路由表的占用,此时就应当将五条路由记录聚合为一条,即找出五个路由地址的共同前缀。

image-20231214202143677

则聚合地址块(超网)为:172.1.4.0/22

由上例可知,网络前缀越长,地址块越小,路由越具体

若路由器查表转发分组时发现有多条路由可选,则选择网络前缀最长的那条,这称为最长前缀匹配,因为这样的路由会更加具体。

image-20231214203010969

应用规划

将分配到的一个IPv4地址块划分成几个更小的地址块,一般有两种方式:

  • 定长的子网掩码 FLSM(Fixed Length Subnet Mask):使用同一个子网掩码来划分子网,每个子网所分配的IP地址数量相同,会造成IP地址的浪费。
  • 变长的子网掩码 VLSM(Variable Length Subnet Mask):使用不同的子网掩码来划分子网,每个子网所分配的IP地址数量可以不同,尽可能减少对IP地址的浪费。

image-20231214204629437

应用的需求:将C类网络218.75.230.0划分成五个子网,每个子网上可以分配的IP数量不得少于各自的需求。

定长子网掩码

image-20231214204941225

子网划分细节:

image-20231214205142549

划分具体结果:

image-20231214205351653

这样分配的方式会造成IP地址的严重浪费,例如,N5只需要分配4个IP地址,但是定长分配会给N5分配32个IP地址,实际上只用到了4个,其余的IP地址全部浪费。

变长的子网掩码

image-20231214205746692

因此应用需求变成:从地址块218.75.230.0/24中取出五个地址块(一个“/27”地址块,三个“/28”地址块,一个“/30”地址块),按需分配给下面所示的五个网路

image-20231214210011148

分配原则时“每个子块的起点位置不能随意选取,只能选取块大小整数倍的地址作为起点”。建议先从大的子块分配。

image-20231214210700940

IP数据报的发送和转发过程

那么源主机是如何知道目的主机是否与自己是否与自己在同一个网络中?

image-20231217093250437

(发送方)将IP地址与自己对应的子网掩码进行与运算,得到自己所处的网络地址。再将目的主机的IP地址与自己的子网掩码进行与运算,如果结果相等,则证明两个主机处于同一个网络中。

用户必须给其主机指定本网络中的一个路由器,用该路由器帮忙指定转发,所指定的路由器,也被称为默认网关。

image-20231217094101962

当路由器接收到IP数据后会进行数据转发:

  1. 检查IP数据包首部是否出错:若出错,则直接丢弃该IP数据报并通告源主机。若没有出错,则进行转发。
  2. 根据IP数据包的目的地址在路由表中查找匹配的条目:若找到匹配的条目,则转发给条目中指示的下一跳。若找不到,则丢弃该IP数据报并通报源主机。

image-20231217100912982

注意:路由表中的目的网络是目的地址与子网掩码的与运算结果。而并非是目的主机的IP地址。

image-20231217101820118

路由器不转发广播数据报。即路由器是隔离广播域的。若路由器不隔离广播域,全球范围内众多数量的路由器,会同时转发广播域,引发巨大的广播风暴,严重浪费因特网资源。

image-20231217102111036

image-20231217102300332

静态路由配置

静态路由配置是指用户或网络管理员使用路由器的相关命令给路由器人工配置路由表。这种人工配置方式简单、开销小。但不能及时适应网络状态(流量、拓扑等)的变化。一般只能在小规模网络中采用。

使用静态路由配置可能出现以下导致产生路由环路的错误。① 配置错误 ② 聚合了不存在的网络。 ③ 网络故障

image-20231217104716073

默认路由条目中的目的网络地址为0.0.0.0,地址掩码也为0.0.0.0,其CIDR形式为0.0.0.0/0

以特定主机路由为目的主机时,则发送方主机上的目的网络为特定主机路由的IP地址,CIDR地址写为IP地址/32,相当于把32位都当做地址,其路由类型也是静态。

从上面可以看出,特定主机路由的网络前缀最长,路由最具体;而默认路由的网络前缀最短,路由最模糊。

当路由器查表转发IP数据报时,若有多条路由条目可选,则采用最长前缀匹配原则。

数据环路

image-20231217110220637

为了防止IP数据报在路由环路中永久兜圈,在IP数据报首部设有生存时间TTL字段,当IP数据报进入路由器后,TTL字段的值会减1.若TTL的值不等于0,则被路由器转发,否则被丢弃。

image-20231217110950329

上图中形成环路的情况为,路由器R2的路由表中有一条静态的聚合路由,其聚合了四个地址。但是其中有两个不存在R1的路由表中。例如,当R2要给192.168.3.0这条不存在误发数据报时,理论上应当被禁止,但是在R2的路由表中找到了符合该地址的聚合路由,将其数据报错误的发给了R1路由器。当R1路由器接收到该数据报后,查询路由表并未找到该条路由的地址,只能走默认路由,即将数据报转发给R2路由器,因此形成环路。

解决该环路的方式为,给R2的路由表中添加“黑洞路由”。“黑洞路由”路由的下一跳为null0,该为路由器内部的虚拟接口,可以将其看成一个黑洞,IP数据报进入之后就被自动丢弃,而非转发数据报。

image-20231217111939958

当网络故障时,路由器会自动将故障路由从其路由表中删除。这样也可能会导致出现路由环路。

image-20231217112142886

解决办法是,在故障路由那方的路由器中静态配置一个该路由的“黑洞路由”。即当数据报转发过来时,将自动丢弃该数据报。

image-20231217112340436

如果当一段间后,该故障恢复后,该静态路由自动设置为失效状态。

image-20231217112542340

而后续再发生故障时,则会自动生效该静态路由,避免路由环路。

路由选择协议

静态路由选择

由人工配置的网络路由、默认路由、特定主机路由、黑洞路由等都属于静态路由。这种人工配置方式简单、开销小,但不能及时适应网络状态的变化。一般只在小规模网络中采用。

动态路由选择

路由器通过路由选择协议自动获取路由信息。其比较复杂、开销较大,能较好地适应网络状态的变化。适用于大规模网络。

因特网是全球最大的互联网络,其采用的路由选择协议主要有以下特点:

  • 自适应:动态路由选择,能较好地适应网络状态的变化。

  • 分布式:路由器之间交换路由信息。

  • 分层次:将整个因特网划分成许多较小的自治系统AS(Autonomous System)

    image-20231217114956886

在一个自治系统内部使用的具体内部网关协议,与因特网中其他自治系统中选用何种内部网关协议无关。

image-20231217115145621

常见的路由选择协议

image-20231217115307979

路由器的基本结构

image-20231217120052614

路由表一般仅包含从目的网络到下一跳的映射。路由表需要对网络拓扑变化的计算最优化。转发表是从路由表得出的。转发表的结构应当使查找过程最优化。

路由选择处理机除了处理收到的路由报文外,还会周期性给其他路由器发送自己所知道的路由信息。

路由器的各端口具有输入缓冲区和输出缓冲区,分别是用来暂存新进入路由器还未来得及处理的分组和处理完毕还未来得及发送的分组。

路由信息协议RIP

路由信息协议RIP(Routing Information Protocol)是内部网关协议IGP中最先得到广泛使用的协议之一,其相关标准文档为RFC1058。

RIP要求自治系统AS内的每一个路由器都要维护从它自己到AS内其他每一个网络的距离记录。这是一组距离,称为“距离向量D-V(Distance-Vector))”。

RIP使用跳数(Hop Count)作为度量(Metric)来衡量到达目的网络的距离。路由器到直连网络的距离定义为1。而路由器到非直连网络的距离定义为所经过的路由器数加1。

允许一条路径最多只能包含15个路由器。“距离”等于16时相当于不可达

因此,RP只适用于小型互联网。

image-20231217151255774

RIP规定,所通过路由器数量最少的路由线路为好的路由

image-20231217151419851

即上图 R1 => R4 => R5 的这条路由为好路由,尽管此条线路上各端链路的带宽较小。

当到达同一个目的网络有多条“距离相等”的路由时,可以进行等价负载均衡。

image-20231217151656521

RIP仅与相邻路由器周期性交换自己的路由表

image-20231217151833598

工作过程
image-20231217152013131

路由器刚开始工作时,只知道自己到直连网络的距离为1。每个路由器仅和相邻路由器周期性地交换并更新信息。若干次交换和更新后,每个路由器都知道到达本AS内各网络的最短距离和下一跳地址,称为收敛。

更新规则

image-20231217152449557

image-20231217152847350

RIP存在一个问题,即路由环路距离无穷计数问题。

假设当直连网络N1的链路发生故障后,R1会将N1到达路由条目的距离修改为16,然后等待RIP更新周期到时后将该条路由信息发送给R2。但是此时R2中关于N1的路由信息仍然是先前通过RIP协议获取的,此时如果R2的RIP周期先到时,则会导致R1被R2的错误信息给误导,然后不断的误导下去,直到跳数为16为止。期间会出现路由环路,时间会长达数分钟。

如下图

image-20231217153105959

上述问题是距离向量算法的一个固有问题。可以采取以下多种措施来减少出现该问题的概率或减小该问题带来的危害:

  • 限制最大路径距离为15(16表示不可达)
  • 当路由表发生变化时就立刻发送更新报文(即触发更新),而非周期性发送。
  • 让路由器记录收到某特定路由信息的接口,而不让同一路由信息再通过此接口向反方向传送(即,水平分割)

开放最短路径优先OSPF协议

开放最短路径优先OSPF(Open Shortest Path First),是为克服RIP的缺点在1989年开发出来的。

“开放”表明OSPF协议不是受某一家厂商控制,而是公开发表的。

“最短路径优先”是因为使用了Dijkstra提出的最短路径算法SPF。

OSPF是基于链路状态的,而不像RIP那样是基于距离向量的。OSPF采用SPF算法计算路由,从算法上保证了不会产生路由环路。OSPF不限制网络规模,更新效率高,收敛速度快。

链路状态是指本路由器都和哪些路由器相邻,以及相应链路的“代价”(cost)。“代价”用来表示费用、距离、时延、带宽,等等。这些都由网络管理人员来决定。

image-20231217154917493

工作原理

OSPF相邻路由器之间通过交互问候(Hello)分组,建立和维护令居关系。

Hello 分组封装在IP数据报中,发往组播地址224.0.0.5,其发送周期为10秒。若40秒未接收到来自邻居路由器的Hello分组,则认为该邻居路由器不可达。

image-20231217155247528

每个路由器会有一张邻居表,记录的信息有邻居ID,连接本路由器的接口,TTL。每当接收到邻居的Hello分组后,该表中的 TTL 会重新变为40秒倒计时。如果超过40秒,则会将该邻居数据从表中删除。

使用OSPF的每个路由器都会产生链路状态通高LSA。其中包含以下内容:

  • 直连网络的链路状态信息
  • 邻居路由器的链路状态信息

LSA被封装在链路状态更新分组LSU中,采用洪泛法发送。

image-20231217160225758

使用OSPF的每个路由器都有一个链路状态数据库LSDB,用于存储LSA。通过各路由器洪泛发送封装有自己LSA的LSU分组,各路由器的LSDB最终将达到一致。并且各路由器将基于LSDB进行最短路径优先SPF计算,构建出各自到达其他路由器的最短路径,即构建各自的路由表。

image-20231217160625067

OSPF有以下五种分组类型:

  • 问候(HeIlo)分组:用来发现和维护邻居路由器的可达性。

  • 数据库描述(Database Description)分组:向邻居路由器给出自己的链路状态数据库中的所有链路状态项目的摘要信息。

  • 链路状态请求(Link State Request)分组:向邻居路由器请求发送某些链路状态项目的详细信息。

  • 链路状态更新(Link State Update)分组:路由器使用这种分组将其链路状态进行洪泛发送,即用洪泛法对全网更新链路状态。

  • 链路状态确认(Link State Acknowledgment)分组:这是对链路状态更新分组的确认分组。

工作过程

基本工作过程如下图

image-20231217161137103

OSPF在多点接入网络中路由器邻居关系的建立

image-20231217161344957

image-20231217161646900

边界网关协议BGP

image-20231217162651080

image-20231217162727476

image-20231217162757450

BGP发言人交换网络可达性的信息(要到达某个网络所要经过的一系列自治系统)

当BGP发言人互相交换了网络可达性的信息后,各BGP发言人就根据所采用的策略从收到的路由信息中找出到达各自治系统的较好的路由。也就是构造出树形结构、不存在回路的自治系统连通图。

BGP适用于多级结构的因特网

image-20231217163007672

若AS3自身包含在其中,则不能采用该路径,否则会兜圈。

BGP-4的四种报文:

  • OPEN(打开)报文:用来与相邻的另一个BGP发言人建立关系,使通信初始化。
  • UPDATE(更新)报文:用来通告某一路由的信息,以及列出要撤销的多条路由。
  • KEEPALIVE(保活)报文:用来周期性地证实邻站的连通性。
  • NOTIFICATION(通知)报文:用来发送检测到的差错。

image-20231217162631995

IP数据报首部格式

IP数据报的首部格式及其内容是实现IP协议主要功能的基础。

image-20231217165823763

  • 版本:占4比特,表示IP协议的版本,通信双方使用的IP协议的版本必须保持一致。目前广泛使用的IP协议版本号为4,即IPv4。

  • 首部长度:占4比特,表示IP数据报首部的长度,该字段的取值以4字节为单位。最小十进制取值为5,表示IP数据报首部只有20字节固定部分。最大十进制取值为15,表示IP数据报首部包含20字节固定部分和最大40字节可变部分。

  • 可选字段:长度从1个字节到40个字节不等。用来支持排错、测量及安全等措施。可选字段增加了IP数据报的功能,但这同时也使得IP数据报的首部长度成为可变的。这就增加了每一个路由器处理IP数据报的开销,实际上可选字段很少被使用。

  • 填充字段:确保首部长度为4字节的整数倍,使用全0进行填充。

  • 区分服务:占8个比特,用来获得更好的服务。该字段在旧标准中叫做服务类型,但实际上一直没有被使用过。1998年,因特网工程任务组IETF把这个字段改名为区分服务。利用该字段的不同数值可以提供不同等级的服务质量。只有在使用区分服务时,该字段才起作用,一般情况下都不适用该字段。

  • 总长度:占16比特,表示IP数据报的总长度(首部+数据载荷)。最大取值为十进制的65535,以字节为单位。

    image-20231217171228578

标识、标志、片偏移三个字段共同用于IP数据报分片。

image-20231217171409786
  • 标识:占16比特,属于同一个数据报的各分片数据报应该具有相同的表示。IP软件维持一个计数器,每产生一个数据报,计数器值加1,并将此值赋给标识字段。

  • 标志:占3个字节,各比特含义如下:

    • DF位:1表示不允许分片,0表示允许分片
    • MF位:1表示“后面还有分片”,0表示“这是最后一个分片”
  • 片偏移:占13比特,指出分片数据报的数据载荷部分偏移其在原数据报的位置有多少个单位(以8个字节为单位)。

    image-20231218092527001

  • 生存时间TTL:占8个比特,起初以秒为单位,最大生存周期为255秒,路由器在转发IP数据报时,将IP数据报首部中的该字段的值减去IP数据报在本路由器上所消耗的时间,若不为0就转发,否则就丢弃。现在采用“跳数”为单位,路由器转发IP数据报时,将IP数据报首部中的该字段的值减1,若不为0就转发,否则就丢弃。

  • 协议:占8个比特,指明IPv4数据报的数据部分是何种数据单元。

    image-20231218101047423
  • 首部检验和:占16比特,用来检测首部在传输过程中是否发生差错,比CRC检验码简单,称为因特网检验和。IP数据报每经过一个路由器,路由器都要重新计算首部检验和,因为某些字段(TTL、标志、片偏移等)的取值可能发生变化。
    由于IP层本身并不提供可靠传输的服务,并且计算首部检验和是一项耗时的操作,因此在IPv6中,路由器不再计算首部检验和,从而更快转发IP数据报。

  • 源IP地址和目的IP地址:各占32比特,用来填写发送该IP数据报的源主机的IP地址和接收该IP数据报的目的主机的IP地址。

网际控制报文协议ICMP

为了更有效地转发IP数据报和提高交付成功的机会,在网际层使用了网际控制报文协议ICMP(Internet Control Message Protocol)。主机或路由器使用ICMP来发送差错报告报文和询问报文。

ICMP报文被封装在IP数据报中发送。其中ICMP差错报告报文有以下五种:

  • 终点不可达:当路由器或主机不能交付数据报时,就向源点发送终点不可达报文。具体可再根据ICMP的代码字段细分为目的网络不可达、目的主机不可达、目的协议不可达、目的端口不可达、目的网络位置、目的主机位置等13种错误。

    image-20231218105956217

  • 源点抑制:当路由器或主机由于拥塞而丢弃数据报时,就向源头发送源点抑制报文,使源点知道应当把数据报的发送速率放慢。

    image-20231218111821595

  • 时间超过:当路由器收到一个目的IP地址不是自己的IP数据报,会将其生存时间TTL字段的值减1.若结果不为0,则将该IP数据报转发出去,若结果为0,除了丢弃该IP数据报以外,还要向源点发送实际那超过报文。
    当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已经收到的数据报片都丢弃,也会向源点发送时间超过报文。

    image-20231218114320052

  • 参数问题:当路由器或目的主机收到IP数据报后,根据其首部中的检验和字段发现首部在传输过程中出现了误码,就丢弃该数据报,并向源点发送参数问题报文。

    IMG_20231218_115410

  • 改变路由(重定向):路由器将改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)。

    image-20231218115636768

以下情况不应发送ICMP差错报告报文:

  • 对ICMP差错报告报文不再发送ICMP差错报告报文。
  • 对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文。
  • 对具有多播地址的数据报都不发送ICMP差错报告报文。
  • 对具有特殊地址(127.0.0.0或0.0.0.0)的数据报不发送ICMP差错报告报文。

常用的ICMP询问报文

回送请求和回答

ICMP回送请求报文是由主机或路由器向一个特定的目的主机发出的询问。收到该报文的主机必须给源主机或路由器发送ICMP回送回答报文。该询问报文用来测试目的站是否可达及了解其有关状态。

其使用场景为分组网间探测PING(Packet InterNet Groper):

  • 用来测试主机或路由器间的连通性。
  • 应用层直接使用网际层的ICMP(没有通过运输层的TCP或UDP)
  • 使用ICMP回送请求和回答报文

image-20231218120821976

另外一个使用场景为跟踪路由 traceroute

  • 用来测试IP数据报从源主机到达目的主机要经过哪些路由器。
  • Windows版本:
    • tracert命令
    • 应用层直接使用网际层ICMP
    • 使用了ICMP回答请求和回答报文以及差错报告报文
  • Unix版本:
    • traceroute命令
    • 在运输层使用UDP协议
    • 仅使用ICMP差错报告报文
image-20231218121302111

时间戳请求和回答

ICMP时间戳请求报文是请求某个主机或路由器回答当前的日期和时间。在ICMP时间戳回答报文中有一个32位的字段,其中写入的整数代表从1900年1月1日起到当前时刻一共有多少秒。此种询问报文用来进行时钟同步和测量时间。

虚拟专用网

虚拟专用网VPN(Virtual Private Network)。利用公用的因特网作为本机构各专用网之间的通信载体,这样的专用网又称为虚拟专用网。由于IPv4地址紧缺,一个机构能够申请到的IPv4地址数量往往远小于本机构所拥有的主机数量。因此,虚拟专用网中的各主机所分配的地址应该是本机构可自由分配的专用地址,而不是需要申请的、在因特网上使用的公有地址。

image-20231218212242329

image-20231218212629403

如下图,同一机构内不同部门的内部网络所构成的虚拟专用网VPN又称为内联网VPN。有时一个机构的VPN需要某些外部机构(通常为合作伙伴)参与进来。这样的VPN就称为外联网VPN。

在外地工作的员工需要访问公司内部的专用网络时,只要在任何地点接入到因特网,运行驻留在员工PC中的VPN软件,在员工的PC和公司的主机之间建立VPN隧道,即可访问专用网络中的资源,这种VPN称为远程接入VPN。

image-20231218212737194

网络地址转换

虽然因特网采用了无分类编址方式来减缓IPv4地址空间耗尽的速度,但由于因特网用户数目的激增,特别是大量小型办公室网络和家庭网络接入因特网的需求不断增加,IPv4地址空间即将面临耗尽的危险仍然没有被解除。

1994年提出了一种网络地址转换NAT的方法再次缓解了IPv4地址空间即将耗尽的问题。

网络地址转换NAT(Network Address Translation)能使大量使用内部专用地址的专用网络用户共享少量外部全球地址来访问因特网上的主机和资源。

!image-20231218214102695

image-20231218214212494

此时的转换方法会有一个问题:如果NAT路由器具有N个全球IP地址,则至多只能有N个内网主机可以同时和因特网上的主机通信。

由于绝大多数的网络应用都是使用运输层协议TCP或UDP来传送数据,因此可以利用运输层的端口号和IP地址一起进行转换。

这样,用一个全球IP地址就可以使多个拥有本地地址的主机同时和因特网上的主机进行通信。这种将端口号和IP地址一起进行转换的技术叫作网络地址与端口号转换NAPT(Network Address and Port Translation)。

image-20231218214649641

此外,由于NAT对外网屏蔽了内网主机的网络地址,能为内网的主机提供一定的安全保护。

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Python中if __name__ == ‘__main__‘:的原理、作用和实践

Python中if name ‘main‘:的原理、作用和实践 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程 👈 希望得到您的…

Linux---权限管理(ACL权限、特殊位和隐藏属性)

目录 1.ACT权限 1.1什么是ACT权限 1.2ACT图解 2.操作步骤 2.1添加测试目录、用户、组,并将用户添加到组 2.2修改目录的所有者和所属组 2.3设定权限 2.4为临时用户分配权限 2.4.1添加临时用户 2.4.2为临时用户分配特定权限 2.4.3查看目录权限,注…

PostgreSQL如何使用UUID

离线安装时,一般有四个包,都安装的话,只需要开启uuid的使用即可,如果工具包(即 postgresql11-contrib)没有安装的话,需要单独安装一次,再进行开启。 开启UUID方法 下面介绍一下如何开启&#…

Unity实现帧序列

一、目的 1.想实现序列帧效果 自己使用Animation一直无法实现动画播放效果 二、参考 1. Unity序列帧动画——Sprite图片集制作UI动画_unity 序列帧动画图集-CSDN博客 结果:很好用,能实现效果 三、实操 新建Image,增加Animator组件&#x…

小保司的理赔是否有保障?

《小保司的理赔是否有保障?》 预计6-7分钟读完 连续日更:第7天 作者:罗师兄 微信号:luoyun515 同一个人,同样的重疾险责任, 同样的保额,同样的缴费方式, 不同的保司保费可以相…

LLMs之Gemma:Gemma(Google开发的新一代领先的开源模型)的简介、安装、使用方法之详细攻略

LLMs之Gemma:Gemma(Google开发的新一代领先的开源模型)的简介、安装、使用方法之详细攻略 导读:此文章介绍了Google推出的新一代开源模型Gemma,旨在帮助研发人员负责任地开发AI。 背景: >> Google长期致力于为开发者和研究人…

Sora:AI视频模型的革新者

随着人工智能技术的飞速发展,AI视频模型已成为科技领域的新热点。在这个浪潮中,OpenAI推出的首个AI视频模型Sora,以其卓越的性能和前瞻性的技术,引领着AI视频领域的创新发展。本文将从Sora的技术特点、应用场景以及对未来创作方式…

深入探究node搭建socket服务器

自从上篇中sokect实现了视频通话,但是是使用ws依赖库实现的服务端,所以最近再看ws源码,不看不知道,一看很惊讶。 接下来一点点记录一下,如何搭建一个简易的服务端socket,来实现上次的视频通讯。 搭建一个…

SwiftUI 支持拖放功能的集合视图(Grid)如何捕获手指按下并抬起这一操作

功能需求 假设我们开发了一款 SwiftUI 应用,其中用户可以通过拖放 Grid 中的 Cell 来完成一些操作。现在,我们希望用户在某个 Cell 被按下并随后抬起手指时得到通知,这能够实现吗? 如上图所示,我们准确地捕获到了手指在 Grid 的 Cell 上按下再抬起这一操作!那么它是如何…

PLC_博图系列☞基本指令“赋值”

PLC_博图系列☞基本指令“赋值” 文章目录 PLC_博图系列☞基本指令“赋值”背景介绍:赋值说明参数示例 关键字: PLC、 西门子、 博图、 Siemens 、 赋值 背景介绍 这是一篇关于PLC编程的文章,特别是关于西门子的博图软件。我并不是专业的…

Jetson Xavier NX 与笔记本网线连接 ,网络共享,ssh连接到vscode

Jetson Xavier NX 与笔记本网线连接 ,网络共享,ssh连接到vscode Jetson Xavier NX桌面版需要连接显示屏、鼠标和键盘,操作起来并不方便,因此常常需要ssh远程连接到本地笔记本电脑,这里介绍一种连接方式,通过…

【区块链】联盟链

区块链中的联盟链 写在最前面**FAQs** 联盟链:区块链技术的新兴力量**联盟链的定义****联盟链的技术架构**共识机制智能合约加密技术身份认证 **联盟链的特点**高效性安全性可控性隐私保护 **联盟链的应用场景****金融服务****供应链管理****身份验证****跨境支付**…

Vue2页面转化为Vue3

vue2element-ui转化为Vue3element plus 后台管理系统&#xff1a;增删查改 vue2页面&#xff1a; <template><div class"app-container"><div><el-form:model"queryParams"ref"queryForm"size"small":inline&qu…

高级语言期末2012级A卷

1.编写函数&#xff0c;输出任意正整数n的位数&#xff08;n默认为存储十进制的整形变量&#xff09; 例如&#xff1a;正整数13&#xff0c;则输出2,&#xff1b;正整数3088&#xff0c;则输出4 #include <stdio.h>int func(int n) {int count0;while(n>0) {n/10;co…

Stable Diffusion 3 发布,AI生图效果,再次到达全新里程碑!

AI生图效果&#xff0c;再次到达全新里程碑&#xff01; Prompt&#xff1a;Epic anime artwork of a wizard atop a mountain at night casting a cosmic spell into the dark sky that says "Stable Diffusion 3" made out of colorful energy 提示&#xff08;意译…

mybatis常用标签

一.定义sql语句 1.select 标签 属性介绍: &#xff08;1&#xff09;id :唯一的标识符. &#xff08;2&#xff09;parameterType:传给此语句的参数的全路径名或别名 例:com.test.poso.User或user &#xff08;3&#xff09;resultType :语句返回值类型或别名。注意&#xff…

一周学会Django5 Python Web开发-Http请求HttpRequest请求类

锋哥原创的Python Web开发 Django5视频教程&#xff1a; 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计25条视频&#xff0c;包括&#xff1a;2024版 Django5 Python we…

架构篇36:微服务架构最佳实践 - 基础设施篇

文章目录 自动化测试自动化部署配置中心接口框架API 网关服务发现服务路由服务容错服务监控服务跟踪服务安全小结每项微服务基础设施都是一个平台、一个系统、一个解决方案,如果要自己实现,其过程和做业务系统类似,都需要经过需求分析、架构设计、开发、测试、部署上线等步骤…

document.cookie中expires 格式设置问题导致部分iphone safari上登录失效

一、问题描述 设备信息&#xff1a;iPhone 12, iOS 16.3 昨天有个小伙伴发现自己的iPhone safari打开网页登录时&#xff0c;登录页面显示登录成功&#xff0c;但实际进入首页后仍然显示未登录。多次测试&#xff0c;该问题在该设备上属于必现问题。 二、问题排查与解决 经过…

【办公类-16-10-01】“2023下学期 中4班 自主游戏观察记录(python 排班表系列)

背景需求 上学期的周安排里&#xff0c;每班每周的自主游戏会轮到多个不同的内容 因此在每周的自主游戏观察有2次记录&#xff0c;观察的项目可以写不一样的&#xff0c; 如一位老师写沙水游戏&#xff0c;另一位写表演游戏 本学期&#xff0c;中班的自主游戏全部是户外的&am…