要点

  1. 虚拟互连网络和两种服务,两个层面的概念
  2. IP地址与MAC地址的关系
  3. 传统分类的IP地址和无分类域间路由选择CIDR
  4. 路由选择协议的工作原理

网络层的几个重要概念

网络层提供的两种服务

互联网设计思路:网络层设计得尽可能简单,向其上层只提供简单灵活、无连接的、尽最大努力交付的数据报服务。

  • 面向无连接
  • 网络层不提供服务质量的承诺。

网络层的两个层面

在路由器之间传送的信息有以下两大类

  • 转发源主机和目的主机之间所传送的数据
  • 传送路由信息:用于创建路由表

可以把网络层抽象成两个层面

  • 数据层面(转发层面)
  • 控制层面

不同路由选择协议定义了不同的协同动作方式,路由器依靠许多路由器协同合作,完成路由表的创建。
软件定义网络SDN结构中,所有的路由器都变得简单了。路由器中的路由选择软件都不存在了,因此路由器之间不再相互交换路由信息。在网络的控制层面有一个在逻辑上集中的远程控制器(在物理上可以由不同地点多个服务器组成)。远程控制器掌握各主机和整个网络的状态,能够为每一个分组计算出最佳的路由,然后再每一个路由器中生成其正确的转发表。

网际协议IP

网际协议IP是TCP/IP体系中两个最重要的协议之一。
网际协议IP是用来使互连起来的许多计算机网络能够进行通信的。
与协议IP配到使用的三个协议:

  • 地址解析协议ARP
  • 网际控制报文协议ICMP
  • 网际组管理协议IGMP

虚拟互连网络

因为用户的需求多种多样,所以没有一种单一的网络能够适应所有用户的需求,因此不能通过使用相同的网络使网络互连简单化。

网络互连需要使用一些中间设备,分为以下四种:

  1. 转发器(物理层)
  2. 网桥、桥接器、交换机(数据链路层)
  3. 路由器(网络层)
  4. 网关(网络层以上)

现在我们讨论网络互连时,都是指用路由器进行网络互连和路由选择。

ps:由于历史原因,许多有关TCP/IP的文献曾经把网络层使用的路由器成为网关。

虚拟互连网络即逻辑互连网络,互连起来的各种物理网络的异构性本来是客观存在的,但是利用协议IP就可以使这些性能各异的网络在网络层上看起来好像是一个统一的网络。

直接交付:源主机发送的IP数据报不经过任何路由器直接发送给目的主机。
间接交付:源主机发送的IP数据报经过若干个路由器转发给目的主机。

互联网可以有多种异构网络互连组成

:分组在传送图中的每一次转发都称为一“跳(hop,或译跃点)”。

IP地址

IP地址及其表示方法

整个互联网就是一个单一的、抽象的网络
IP地址就是给连接到互联网上的而每一个主机(或路由器)的每一个接口,分配
一个在全世界范围内是唯一的32位的标识符。

IP地址现在由互联网名字和数字分配机构ICANN进行分配。

**点分十进制记法:**为了提高可读性,把32位的IP地址中每隔8位插入一个空格。

32位的IP地址采用两级结构,由两个字段组成。

  1. 网络号:标志该主机所连接的网络。在整个网络范围内唯一。
  2. 主机号:标志该主机。在所连接的网络范围内唯一。
    IP地址在整个互联网范围内是唯一的
    IP地址指明了连接到某个网络上的一个主机(或路由器)

分类的IP地址

互联网发展早期使用分类的IP地址。
设网络号长度为n

IP地址类型 网络号长度 可指派的网络数 可指派的主机数 其他
A类 8 2^7-2 224−22^{24}-2224−2 单播地址
B类 16 2142^{14}214 216−22^{16}-2216−2 单播地址
C类 24 2212^{21}221 28−22^8-228−2 单播地址
D类 - - - 多播地址
E类 - - - 保留地址

特殊:

  • A类地址第一位固定为0。
  • 网络号全为0的Ip地址有特殊用途,表示“本网络”。
  • 网络号为127(即01111111)保留作为本地软件环回测试本主机的进程之间的通信使用。

在20世纪90年代,当发现IP地址在不久后将会枯竭时,一种新的无分类编址方法就问世了。

无分类编址CIDR

无分类编址方法可以推迟IP地址用尽的日子,但无法解决IP地址枯竭的问题。
全称:无分类域间路由选择CIDR

1. 网络前缀

网络号改称“网络前缀”(简称“前缀”)。
主机号也称“后缀”。

CIDR使用“斜线记法”,或称为CIDR记法:在IP地址后加上斜线“/”,斜线后是网络前缀所占位数。

2. 地址块

网络前缀都相同的所有连续的IP地址组成一个“CIDR地址块”。

3. 地址掩码

使用地址掩码从IP地址迅速算出网络地址。
地址掩码有一连串1和接着的一连串0组成,总共32位,1的个数就是前缀的长度。

把二进制的IP地址和地址掩码进行按位与运算,即可得出网络地址。
CIDR地址中三个特殊地址块:

  1. 前缀n=32,没有主机号。用于主机路由。
  2. 前缀n=31,只有两个IP地址。用于点对点链路。
  3. 前缀n=0,同时IP地址也全是0,即0.0.0.0/0,用于默认路由。

每一个CIDR地址块中的地址数一定是2的整数次幂。除最后几行外CIDR地址块都包含了多个C类地址,因此在文献中优势称CIDR编址为“构造超网”。

IP地址的特点

  1. 每一个IP地址都由网络前缀和主机号两部分组成。
  2. IP地址是标记一台主机(或路由器)和一条链路的接口。
  3. 一个网络(或子网)是指具有相同网络前缀的主机的集合,因此,用转发器或交换机连接起来的若干个局域网仍为一个网络。
  4. 在IP地址中,所有分配到网络前缀的网络都是平等的。(即互联网同等对待每一个IP地址)

IP地址由网络前缀和主机号两部分组成,从这个意义上看,IP地址是一种分等级的地址结构。分级的好处:

  • 方便IP的管理
  • 路由器仅根据目的主机所连接网络前缀来转发分组,减少转发表所占空间,缩短查找转发表时间。

注意:

  • 同一局域网上的主机或路由器IP地址必须具有相同的网络号。
  • 网络地址中主机号必为0
  • 以太网交换机式链路层设备,只有MAC地址
  • 用交换机连接的几个网段合起来仍是一个局域网
  • 路由器总具有多个IP地址。路由器每个接口的IP地址的网络前缀都不相同
  • 当两个路由器直接相连时,在连线两端的接口处,可以分配也可以不分配IP地址。如果分配了IP地址,则这一段连线就构成了一种只包含一段线路的特殊“网络”。MAC节省IP资源,常不分配IP地址,称为“无编号网络”。

IP地址和MAC地址

由于地址已固化在网卡上的ROM中,因此常常将MAC地址称为硬件地址物理地址

IP地址属于虚拟地址软件地址逻辑地址。(IP地址是用软件实现的)

IP地址是网络层以上各层使用的地址,MAC地址是数据链路层使用的地址

注意:

  1. 在IP层抽象的互联网上只能看到IP数据报
  2. 路由器只根据目的站的IP地址进行转发
  3. 在局域网的链路层,只能看到MAC帧
  4. 尽管互联在一起的网络的MAC地址体系各不相同,但IP层抽象的互联网却屏蔽了下层的细节。只要在网络层上讨论问题,就能够使用统一的、抽象的IP地址研究主机和逐渐或路由器之间的通信。

地址解析协议ARP

地址解析协议ARP用于找出IP地址相应的MAC地址。

还有一个旧协议叫做逆地址解析协议RARP,用于找出MAC地址对应的IP地址。

  • 在主机的ARP高速缓存中存放一个从IP地址到MAC地址的、经常动态更新的映射表(IP地址和MAC地址之间不存在简单的映射关系)

ARP流程如下:

#mermaid-svg-MP6UDywAXNwzY2MF .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-MP6UDywAXNwzY2MF .label text{fill:#333}#mermaid-svg-MP6UDywAXNwzY2MF .node rect,#mermaid-svg-MP6UDywAXNwzY2MF .node circle,#mermaid-svg-MP6UDywAXNwzY2MF .node ellipse,#mermaid-svg-MP6UDywAXNwzY2MF .node polygon,#mermaid-svg-MP6UDywAXNwzY2MF .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-MP6UDywAXNwzY2MF .node .label{text-align:center;fill:#333}#mermaid-svg-MP6UDywAXNwzY2MF .node.clickable{cursor:pointer}#mermaid-svg-MP6UDywAXNwzY2MF .arrowheadPath{fill:#333}#mermaid-svg-MP6UDywAXNwzY2MF .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-MP6UDywAXNwzY2MF .flowchart-link{stroke:#333;fill:none}#mermaid-svg-MP6UDywAXNwzY2MF .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-MP6UDywAXNwzY2MF .edgeLabel rect{opacity:0.9}#mermaid-svg-MP6UDywAXNwzY2MF .edgeLabel span{color:#333}#mermaid-svg-MP6UDywAXNwzY2MF .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-MP6UDywAXNwzY2MF .cluster text{fill:#333}#mermaid-svg-MP6UDywAXNwzY2MF div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-MP6UDywAXNwzY2MF .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-MP6UDywAXNwzY2MF text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-MP6UDywAXNwzY2MF .actor-line{stroke:grey}#mermaid-svg-MP6UDywAXNwzY2MF .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-MP6UDywAXNwzY2MF .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-MP6UDywAXNwzY2MF #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-MP6UDywAXNwzY2MF .sequenceNumber{fill:#fff}#mermaid-svg-MP6UDywAXNwzY2MF #sequencenumber{fill:#333}#mermaid-svg-MP6UDywAXNwzY2MF #crosshead path{fill:#333;stroke:#333}#mermaid-svg-MP6UDywAXNwzY2MF .messageText{fill:#333;stroke:#333}#mermaid-svg-MP6UDywAXNwzY2MF .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-MP6UDywAXNwzY2MF .labelText,#mermaid-svg-MP6UDywAXNwzY2MF .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-MP6UDywAXNwzY2MF .loopText,#mermaid-svg-MP6UDywAXNwzY2MF .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-MP6UDywAXNwzY2MF .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-MP6UDywAXNwzY2MF .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-MP6UDywAXNwzY2MF .noteText,#mermaid-svg-MP6UDywAXNwzY2MF .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-MP6UDywAXNwzY2MF .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-MP6UDywAXNwzY2MF .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-MP6UDywAXNwzY2MF .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-MP6UDywAXNwzY2MF .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-MP6UDywAXNwzY2MF .section{stroke:none;opacity:0.2}#mermaid-svg-MP6UDywAXNwzY2MF .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-MP6UDywAXNwzY2MF .section2{fill:#fff400}#mermaid-svg-MP6UDywAXNwzY2MF .section1,#mermaid-svg-MP6UDywAXNwzY2MF .section3{fill:#fff;opacity:0.2}#mermaid-svg-MP6UDywAXNwzY2MF .sectionTitle0{fill:#333}#mermaid-svg-MP6UDywAXNwzY2MF .sectionTitle1{fill:#333}#mermaid-svg-MP6UDywAXNwzY2MF .sectionTitle2{fill:#333}#mermaid-svg-MP6UDywAXNwzY2MF .sectionTitle3{fill:#333}#mermaid-svg-MP6UDywAXNwzY2MF .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-MP6UDywAXNwzY2MF .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-MP6UDywAXNwzY2MF .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-MP6UDywAXNwzY2MF .grid path{stroke-width:0}#mermaid-svg-MP6UDywAXNwzY2MF .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-MP6UDywAXNwzY2MF .task{stroke-width:2}#mermaid-svg-MP6UDywAXNwzY2MF .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-MP6UDywAXNwzY2MF .taskText:not([font-size]){font-size:11px}#mermaid-svg-MP6UDywAXNwzY2MF .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-MP6UDywAXNwzY2MF .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-MP6UDywAXNwzY2MF .task.clickable{cursor:pointer}#mermaid-svg-MP6UDywAXNwzY2MF .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-MP6UDywAXNwzY2MF .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-MP6UDywAXNwzY2MF .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-MP6UDywAXNwzY2MF .taskText0,#mermaid-svg-MP6UDywAXNwzY2MF .taskText1,#mermaid-svg-MP6UDywAXNwzY2MF .taskText2,#mermaid-svg-MP6UDywAXNwzY2MF .taskText3{fill:#fff}#mermaid-svg-MP6UDywAXNwzY2MF .task0,#mermaid-svg-MP6UDywAXNwzY2MF .task1,#mermaid-svg-MP6UDywAXNwzY2MF .task2,#mermaid-svg-MP6UDywAXNwzY2MF .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-MP6UDywAXNwzY2MF .taskTextOutside0,#mermaid-svg-MP6UDywAXNwzY2MF .taskTextOutside2{fill:#000}#mermaid-svg-MP6UDywAXNwzY2MF .taskTextOutside1,#mermaid-svg-MP6UDywAXNwzY2MF .taskTextOutside3{fill:#000}#mermaid-svg-MP6UDywAXNwzY2MF .active0,#mermaid-svg-MP6UDywAXNwzY2MF .active1,#mermaid-svg-MP6UDywAXNwzY2MF .active2,#mermaid-svg-MP6UDywAXNwzY2MF .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-MP6UDywAXNwzY2MF .activeText0,#mermaid-svg-MP6UDywAXNwzY2MF .activeText1,#mermaid-svg-MP6UDywAXNwzY2MF .activeText2,#mermaid-svg-MP6UDywAXNwzY2MF .activeText3{fill:#000 !important}#mermaid-svg-MP6UDywAXNwzY2MF .done0,#mermaid-svg-MP6UDywAXNwzY2MF .done1,#mermaid-svg-MP6UDywAXNwzY2MF .done2,#mermaid-svg-MP6UDywAXNwzY2MF .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-MP6UDywAXNwzY2MF .doneText0,#mermaid-svg-MP6UDywAXNwzY2MF .doneText1,#mermaid-svg-MP6UDywAXNwzY2MF .doneText2,#mermaid-svg-MP6UDywAXNwzY2MF .doneText3{fill:#000 !important}#mermaid-svg-MP6UDywAXNwzY2MF .crit0,#mermaid-svg-MP6UDywAXNwzY2MF .crit1,#mermaid-svg-MP6UDywAXNwzY2MF .crit2,#mermaid-svg-MP6UDywAXNwzY2MF .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-MP6UDywAXNwzY2MF .activeCrit0,#mermaid-svg-MP6UDywAXNwzY2MF .activeCrit1,#mermaid-svg-MP6UDywAXNwzY2MF .activeCrit2,#mermaid-svg-MP6UDywAXNwzY2MF .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-MP6UDywAXNwzY2MF .doneCrit0,#mermaid-svg-MP6UDywAXNwzY2MF .doneCrit1,#mermaid-svg-MP6UDywAXNwzY2MF .doneCrit2,#mermaid-svg-MP6UDywAXNwzY2MF .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-MP6UDywAXNwzY2MF .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-MP6UDywAXNwzY2MF .milestoneText{font-style:italic}#mermaid-svg-MP6UDywAXNwzY2MF .doneCritText0,#mermaid-svg-MP6UDywAXNwzY2MF .doneCritText1,#mermaid-svg-MP6UDywAXNwzY2MF .doneCritText2,#mermaid-svg-MP6UDywAXNwzY2MF .doneCritText3{fill:#000 !important}#mermaid-svg-MP6UDywAXNwzY2MF .activeCritText0,#mermaid-svg-MP6UDywAXNwzY2MF .activeCritText1,#mermaid-svg-MP6UDywAXNwzY2MF .activeCritText2,#mermaid-svg-MP6UDywAXNwzY2MF .activeCritText3{fill:#000 !important}#mermaid-svg-MP6UDywAXNwzY2MF .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-MP6UDywAXNwzY2MF g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-MP6UDywAXNwzY2MF g.classGroup text .title{font-weight:bolder}#mermaid-svg-MP6UDywAXNwzY2MF g.clickable{cursor:pointer}#mermaid-svg-MP6UDywAXNwzY2MF g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-MP6UDywAXNwzY2MF g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-MP6UDywAXNwzY2MF .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-MP6UDywAXNwzY2MF .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-MP6UDywAXNwzY2MF .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-MP6UDywAXNwzY2MF .dashed-line{stroke-dasharray:3}#mermaid-svg-MP6UDywAXNwzY2MF #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-MP6UDywAXNwzY2MF #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-MP6UDywAXNwzY2MF #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-MP6UDywAXNwzY2MF #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-MP6UDywAXNwzY2MF #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-MP6UDywAXNwzY2MF #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-MP6UDywAXNwzY2MF #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-MP6UDywAXNwzY2MF #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-MP6UDywAXNwzY2MF .commit-id,#mermaid-svg-MP6UDywAXNwzY2MF .commit-msg,#mermaid-svg-MP6UDywAXNwzY2MF .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-MP6UDywAXNwzY2MF .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-MP6UDywAXNwzY2MF .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-MP6UDywAXNwzY2MF g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-MP6UDywAXNwzY2MF g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-MP6UDywAXNwzY2MF g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-MP6UDywAXNwzY2MF g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-MP6UDywAXNwzY2MF g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-MP6UDywAXNwzY2MF g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-MP6UDywAXNwzY2MF .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-MP6UDywAXNwzY2MF .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-MP6UDywAXNwzY2MF .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-MP6UDywAXNwzY2MF .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-MP6UDywAXNwzY2MF .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-MP6UDywAXNwzY2MF .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-MP6UDywAXNwzY2MF .edgeLabel text{fill:#333}#mermaid-svg-MP6UDywAXNwzY2MF .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-MP6UDywAXNwzY2MF .node circle.state-start{fill:black;stroke:black}#mermaid-svg-MP6UDywAXNwzY2MF .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-MP6UDywAXNwzY2MF #statediagram-barbEnd{fill:#9370db}#mermaid-svg-MP6UDywAXNwzY2MF .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-MP6UDywAXNwzY2MF .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-MP6UDywAXNwzY2MF .statediagram-state .divider{stroke:#9370db}#mermaid-svg-MP6UDywAXNwzY2MF .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-MP6UDywAXNwzY2MF .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-MP6UDywAXNwzY2MF .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-MP6UDywAXNwzY2MF .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-MP6UDywAXNwzY2MF .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-MP6UDywAXNwzY2MF .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-MP6UDywAXNwzY2MF .note-edge{stroke-dasharray:5}#mermaid-svg-MP6UDywAXNwzY2MF .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-MP6UDywAXNwzY2MF .error-icon{fill:#522}#mermaid-svg-MP6UDywAXNwzY2MF .error-text{fill:#522;stroke:#522}#mermaid-svg-MP6UDywAXNwzY2MF .edge-thickness-normal{stroke-width:2px}#mermaid-svg-MP6UDywAXNwzY2MF .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-MP6UDywAXNwzY2MF .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-MP6UDywAXNwzY2MF .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-MP6UDywAXNwzY2MF .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-MP6UDywAXNwzY2MF .marker{fill:#333}#mermaid-svg-MP6UDywAXNwzY2MF .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-MP6UDywAXNwzY2MF {color: rgba(0, 0, 0, 0.75);font: ;}

主机A要向主机B发送数据报
在ARP高速缓存中查看有无B的IP地址
查出对应的MAC地址
把MAC地址写入MAC帧
把MAC帧发往该MAC地址
ARP进程广播一个ARP请求分组
局域网上所有主机的ARP进程收到该请求分组
判断自身IP地址与请求分组中的IP地址是否一致
主机B收下该ARP请求分组
忽略该ARP请求分组
主机B向主机A发送ARP响应分组
主机A收到该响应分组
主机A在其ARP高速缓存写入主机B的映射

注意:

  • ARP对保存在高速缓存中的每一个映射地址项目都设置生存时间。
  • ARP用于解决同一个局域网上的主机或路由器的IP地址和MAC地址的映射问题。
  • 如果目的主机和源主机不在同一个局域网,则借助ARP将IP数据报向路由器转发。
  • IP地址到MAC地址的解析是自动进行的,主机的用户对这种地址解析过程是不知道的。
  • 因为世界上存在各式各样的网络,它们使用不同的MAC地址,要使这些异构的网络能够进行通信,必须进行非常复杂的MAC地址转换工作,因此使用了MAC地址和IP地址两种地址来简化。

IP数据报的格式

IP数据报说明协议IP具有什么功能,在协议IP的标准中,描述首部格式的宽度是32位(4字节)

IP数据报首部的固定部分

序号 字段名 字段长度 含义
1 版本 4位 协议IP的版本(IPv4或IPv6)
2 首部长度 4位 表示数值的单位位32位字长,最小取值为5
3 区分服务 8位 用来获得更好的服务,实际上没有被使用过
4 总长度 16位 首部和数据之和的长度,单位字节
5 标识 16位 当数据报过长被分片时,用户标识同一数据报的报片,是的最后能够正确重装为原料的数据报
6 标志 3位 第一位记为MF,为1表示“还有分片"。
第二位记为DF,为1表示”不能分片“。
第三位无意义。
7 片偏移 13位 较长分组在分片后,某片在原分组中的相对位置。(以8字节位偏移单位)。
8 生存时间TTL 8位 数据报在网络中的寿命
9 协议 8位 指出此数据报携带的数据使用何种协议
10 首部检验和 16位 检验数据报首部
11 源地址 32位 发送IP数据报的主机的IP
12 目的地址 32位 接收IP数据报的主机的IP

注意:

  • IP数据报首部必须为4字节的倍数,否则会利用填充字段进行填充。
  • IP数据报首部长度范围为20~60字节,固定部分长度为20字节,可变部分长度为0~40字节。
  • 使用尽可能长的数据报会使传输效率更高。
  • 使用短些的数据报,路由器的转发速度会更快。
  • 在进行分片时,数据报首部中的”总长度“字段是指分片后的每一个分片的首部长度和该分片的数据长度的总和。
  • IP软件在存储器中维持一个计数器,没产生一个数据报,计数器就加1。当进行分片时,标识字段的值就被复制到所有的数据报片的标识字段中。
  • 设置生存时间字段是为了繁殖无法交付的数据报无限制地在互联网中兜圈子浪费了网络资源。TTL的功能为”跳数限制“,路由器每一次转发跳数减一,减小到0时丢弃。

IP数据报首部的可变部分

选项字段,用于支持排错、测量以及安全等措施。字段长度可变,从1字节到40字不等。

IP层转发分组的过程

基于终点的转发

分组在互联网上传送和转发是基于分组首部中的目的地址的,因此这种转发方式称为基于终点的转发
分组每到达一个路由器,路由器就会根据分组中的终点得知吓一跳应当到哪一个路由器。

为了压缩转发表大小,加速分组转发,路由器不直接查找目的主机,而是根据IP地址前缀查找目的网络,向目的网络进行转发。

分组首部中没有指明“下一跳的IP地址”。
分组转发流程如下:

#mermaid-svg-aDnLa3H0nibr2IYd .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-aDnLa3H0nibr2IYd .label text{fill:#333}#mermaid-svg-aDnLa3H0nibr2IYd .node rect,#mermaid-svg-aDnLa3H0nibr2IYd .node circle,#mermaid-svg-aDnLa3H0nibr2IYd .node ellipse,#mermaid-svg-aDnLa3H0nibr2IYd .node polygon,#mermaid-svg-aDnLa3H0nibr2IYd .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-aDnLa3H0nibr2IYd .node .label{text-align:center;fill:#333}#mermaid-svg-aDnLa3H0nibr2IYd .node.clickable{cursor:pointer}#mermaid-svg-aDnLa3H0nibr2IYd .arrowheadPath{fill:#333}#mermaid-svg-aDnLa3H0nibr2IYd .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-aDnLa3H0nibr2IYd .flowchart-link{stroke:#333;fill:none}#mermaid-svg-aDnLa3H0nibr2IYd .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-aDnLa3H0nibr2IYd .edgeLabel rect{opacity:0.9}#mermaid-svg-aDnLa3H0nibr2IYd .edgeLabel span{color:#333}#mermaid-svg-aDnLa3H0nibr2IYd .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-aDnLa3H0nibr2IYd .cluster text{fill:#333}#mermaid-svg-aDnLa3H0nibr2IYd div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-aDnLa3H0nibr2IYd .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-aDnLa3H0nibr2IYd text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-aDnLa3H0nibr2IYd .actor-line{stroke:grey}#mermaid-svg-aDnLa3H0nibr2IYd .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-aDnLa3H0nibr2IYd .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-aDnLa3H0nibr2IYd #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-aDnLa3H0nibr2IYd .sequenceNumber{fill:#fff}#mermaid-svg-aDnLa3H0nibr2IYd #sequencenumber{fill:#333}#mermaid-svg-aDnLa3H0nibr2IYd #crosshead path{fill:#333;stroke:#333}#mermaid-svg-aDnLa3H0nibr2IYd .messageText{fill:#333;stroke:#333}#mermaid-svg-aDnLa3H0nibr2IYd .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-aDnLa3H0nibr2IYd .labelText,#mermaid-svg-aDnLa3H0nibr2IYd .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-aDnLa3H0nibr2IYd .loopText,#mermaid-svg-aDnLa3H0nibr2IYd .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-aDnLa3H0nibr2IYd .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-aDnLa3H0nibr2IYd .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-aDnLa3H0nibr2IYd .noteText,#mermaid-svg-aDnLa3H0nibr2IYd .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-aDnLa3H0nibr2IYd .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-aDnLa3H0nibr2IYd .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-aDnLa3H0nibr2IYd .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-aDnLa3H0nibr2IYd .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-aDnLa3H0nibr2IYd .section{stroke:none;opacity:0.2}#mermaid-svg-aDnLa3H0nibr2IYd .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-aDnLa3H0nibr2IYd .section2{fill:#fff400}#mermaid-svg-aDnLa3H0nibr2IYd .section1,#mermaid-svg-aDnLa3H0nibr2IYd .section3{fill:#fff;opacity:0.2}#mermaid-svg-aDnLa3H0nibr2IYd .sectionTitle0{fill:#333}#mermaid-svg-aDnLa3H0nibr2IYd .sectionTitle1{fill:#333}#mermaid-svg-aDnLa3H0nibr2IYd .sectionTitle2{fill:#333}#mermaid-svg-aDnLa3H0nibr2IYd .sectionTitle3{fill:#333}#mermaid-svg-aDnLa3H0nibr2IYd .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-aDnLa3H0nibr2IYd .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-aDnLa3H0nibr2IYd .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-aDnLa3H0nibr2IYd .grid path{stroke-width:0}#mermaid-svg-aDnLa3H0nibr2IYd .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-aDnLa3H0nibr2IYd .task{stroke-width:2}#mermaid-svg-aDnLa3H0nibr2IYd .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-aDnLa3H0nibr2IYd .taskText:not([font-size]){font-size:11px}#mermaid-svg-aDnLa3H0nibr2IYd .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-aDnLa3H0nibr2IYd .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-aDnLa3H0nibr2IYd .task.clickable{cursor:pointer}#mermaid-svg-aDnLa3H0nibr2IYd .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-aDnLa3H0nibr2IYd .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-aDnLa3H0nibr2IYd .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-aDnLa3H0nibr2IYd .taskText0,#mermaid-svg-aDnLa3H0nibr2IYd .taskText1,#mermaid-svg-aDnLa3H0nibr2IYd .taskText2,#mermaid-svg-aDnLa3H0nibr2IYd .taskText3{fill:#fff}#mermaid-svg-aDnLa3H0nibr2IYd .task0,#mermaid-svg-aDnLa3H0nibr2IYd .task1,#mermaid-svg-aDnLa3H0nibr2IYd .task2,#mermaid-svg-aDnLa3H0nibr2IYd .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-aDnLa3H0nibr2IYd .taskTextOutside0,#mermaid-svg-aDnLa3H0nibr2IYd .taskTextOutside2{fill:#000}#mermaid-svg-aDnLa3H0nibr2IYd .taskTextOutside1,#mermaid-svg-aDnLa3H0nibr2IYd .taskTextOutside3{fill:#000}#mermaid-svg-aDnLa3H0nibr2IYd .active0,#mermaid-svg-aDnLa3H0nibr2IYd .active1,#mermaid-svg-aDnLa3H0nibr2IYd .active2,#mermaid-svg-aDnLa3H0nibr2IYd .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-aDnLa3H0nibr2IYd .activeText0,#mermaid-svg-aDnLa3H0nibr2IYd .activeText1,#mermaid-svg-aDnLa3H0nibr2IYd .activeText2,#mermaid-svg-aDnLa3H0nibr2IYd .activeText3{fill:#000 !important}#mermaid-svg-aDnLa3H0nibr2IYd .done0,#mermaid-svg-aDnLa3H0nibr2IYd .done1,#mermaid-svg-aDnLa3H0nibr2IYd .done2,#mermaid-svg-aDnLa3H0nibr2IYd .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-aDnLa3H0nibr2IYd .doneText0,#mermaid-svg-aDnLa3H0nibr2IYd .doneText1,#mermaid-svg-aDnLa3H0nibr2IYd .doneText2,#mermaid-svg-aDnLa3H0nibr2IYd .doneText3{fill:#000 !important}#mermaid-svg-aDnLa3H0nibr2IYd .crit0,#mermaid-svg-aDnLa3H0nibr2IYd .crit1,#mermaid-svg-aDnLa3H0nibr2IYd .crit2,#mermaid-svg-aDnLa3H0nibr2IYd .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-aDnLa3H0nibr2IYd .activeCrit0,#mermaid-svg-aDnLa3H0nibr2IYd .activeCrit1,#mermaid-svg-aDnLa3H0nibr2IYd .activeCrit2,#mermaid-svg-aDnLa3H0nibr2IYd .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-aDnLa3H0nibr2IYd .doneCrit0,#mermaid-svg-aDnLa3H0nibr2IYd .doneCrit1,#mermaid-svg-aDnLa3H0nibr2IYd .doneCrit2,#mermaid-svg-aDnLa3H0nibr2IYd .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-aDnLa3H0nibr2IYd .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-aDnLa3H0nibr2IYd .milestoneText{font-style:italic}#mermaid-svg-aDnLa3H0nibr2IYd .doneCritText0,#mermaid-svg-aDnLa3H0nibr2IYd .doneCritText1,#mermaid-svg-aDnLa3H0nibr2IYd .doneCritText2,#mermaid-svg-aDnLa3H0nibr2IYd .doneCritText3{fill:#000 !important}#mermaid-svg-aDnLa3H0nibr2IYd .activeCritText0,#mermaid-svg-aDnLa3H0nibr2IYd .activeCritText1,#mermaid-svg-aDnLa3H0nibr2IYd .activeCritText2,#mermaid-svg-aDnLa3H0nibr2IYd .activeCritText3{fill:#000 !important}#mermaid-svg-aDnLa3H0nibr2IYd .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-aDnLa3H0nibr2IYd g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-aDnLa3H0nibr2IYd g.classGroup text .title{font-weight:bolder}#mermaid-svg-aDnLa3H0nibr2IYd g.clickable{cursor:pointer}#mermaid-svg-aDnLa3H0nibr2IYd g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-aDnLa3H0nibr2IYd g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-aDnLa3H0nibr2IYd .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-aDnLa3H0nibr2IYd .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-aDnLa3H0nibr2IYd .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-aDnLa3H0nibr2IYd .dashed-line{stroke-dasharray:3}#mermaid-svg-aDnLa3H0nibr2IYd #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-aDnLa3H0nibr2IYd #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-aDnLa3H0nibr2IYd #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-aDnLa3H0nibr2IYd #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-aDnLa3H0nibr2IYd #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-aDnLa3H0nibr2IYd #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-aDnLa3H0nibr2IYd #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-aDnLa3H0nibr2IYd #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-aDnLa3H0nibr2IYd .commit-id,#mermaid-svg-aDnLa3H0nibr2IYd .commit-msg,#mermaid-svg-aDnLa3H0nibr2IYd .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-aDnLa3H0nibr2IYd .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-aDnLa3H0nibr2IYd .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-aDnLa3H0nibr2IYd g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-aDnLa3H0nibr2IYd g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-aDnLa3H0nibr2IYd g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-aDnLa3H0nibr2IYd g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-aDnLa3H0nibr2IYd g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-aDnLa3H0nibr2IYd g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-aDnLa3H0nibr2IYd .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-aDnLa3H0nibr2IYd .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-aDnLa3H0nibr2IYd .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-aDnLa3H0nibr2IYd .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-aDnLa3H0nibr2IYd .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-aDnLa3H0nibr2IYd .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-aDnLa3H0nibr2IYd .edgeLabel text{fill:#333}#mermaid-svg-aDnLa3H0nibr2IYd .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-aDnLa3H0nibr2IYd .node circle.state-start{fill:black;stroke:black}#mermaid-svg-aDnLa3H0nibr2IYd .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-aDnLa3H0nibr2IYd #statediagram-barbEnd{fill:#9370db}#mermaid-svg-aDnLa3H0nibr2IYd .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-aDnLa3H0nibr2IYd .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-aDnLa3H0nibr2IYd .statediagram-state .divider{stroke:#9370db}#mermaid-svg-aDnLa3H0nibr2IYd .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-aDnLa3H0nibr2IYd .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-aDnLa3H0nibr2IYd .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-aDnLa3H0nibr2IYd .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-aDnLa3H0nibr2IYd .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-aDnLa3H0nibr2IYd .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-aDnLa3H0nibr2IYd .note-edge{stroke-dasharray:5}#mermaid-svg-aDnLa3H0nibr2IYd .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-aDnLa3H0nibr2IYd .error-icon{fill:#522}#mermaid-svg-aDnLa3H0nibr2IYd .error-text{fill:#522;stroke:#522}#mermaid-svg-aDnLa3H0nibr2IYd .edge-thickness-normal{stroke-width:2px}#mermaid-svg-aDnLa3H0nibr2IYd .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-aDnLa3H0nibr2IYd .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-aDnLa3H0nibr2IYd .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-aDnLa3H0nibr2IYd .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-aDnLa3H0nibr2IYd .marker{fill:#333}#mermaid-svg-aDnLa3H0nibr2IYd .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-aDnLa3H0nibr2IYd {color: rgba(0, 0, 0, 0.75);font: ;}

路由器收到待转发分组
从转发表得出下一跳路由器IP地址
送交数据链路层网络接口软件
网络接口软件使用ARP将路由器IP转为MAC地址
将MAC地址放在MAC帧首部
利用该MAC地址送至下一跳路由器数据链路层
MAC帧的数据部分上交网络层

最长前缀匹配

查找转发表的过程就是逐行寻找前缀匹配的过程。
为了减少路由器转发表的项目数,会采用地址聚合,把多个地址块聚合我一个地址块(如128.1.25.0/24、128.1.26.0/24、128.1.27.0/24聚合为128.1.24.0/22)。聚合后可能会出现目的地址和转发表中多个项目匹配的现象。

在采用CIDR编址时,如果一个分组在转发表中可以找到多个匹配的前缀,那么就应当选择前缀最长的一个作为匹配的前缀,这个原则被称为最长前缀匹配

实际转发表有时还可能增加两种特殊的路由

  • 主机路由(又称特定主机路由):对特定目的主机的IP地址专门指明了一个路由。
  • 默认路由:不管最终目的网络哪里,都由指定的路由器做处理。

注意:

  • 采用特定主机路由可以更方便地控制网络和测试网络,也可在需要考虑某种安全问题时采用特定主机路由。
  • 假定特定主机IP地址为a.b.c.d,则对应路由网络前缀为a.b.c.d/32。
  • 默认路由在网络只有很少的对外连接时很有用。
  • 用特殊前缀0.0.0.0/0表示默认路由。

分组转发算法流程如下

#mermaid-svg-1K7CCtLla6ZxMnOA .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-1K7CCtLla6ZxMnOA .label text{fill:#333}#mermaid-svg-1K7CCtLla6ZxMnOA .node rect,#mermaid-svg-1K7CCtLla6ZxMnOA .node circle,#mermaid-svg-1K7CCtLla6ZxMnOA .node ellipse,#mermaid-svg-1K7CCtLla6ZxMnOA .node polygon,#mermaid-svg-1K7CCtLla6ZxMnOA .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-1K7CCtLla6ZxMnOA .node .label{text-align:center;fill:#333}#mermaid-svg-1K7CCtLla6ZxMnOA .node.clickable{cursor:pointer}#mermaid-svg-1K7CCtLla6ZxMnOA .arrowheadPath{fill:#333}#mermaid-svg-1K7CCtLla6ZxMnOA .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-1K7CCtLla6ZxMnOA .flowchart-link{stroke:#333;fill:none}#mermaid-svg-1K7CCtLla6ZxMnOA .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-1K7CCtLla6ZxMnOA .edgeLabel rect{opacity:0.9}#mermaid-svg-1K7CCtLla6ZxMnOA .edgeLabel span{color:#333}#mermaid-svg-1K7CCtLla6ZxMnOA .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-1K7CCtLla6ZxMnOA .cluster text{fill:#333}#mermaid-svg-1K7CCtLla6ZxMnOA div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-1K7CCtLla6ZxMnOA .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-1K7CCtLla6ZxMnOA text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-1K7CCtLla6ZxMnOA .actor-line{stroke:grey}#mermaid-svg-1K7CCtLla6ZxMnOA .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-1K7CCtLla6ZxMnOA .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-1K7CCtLla6ZxMnOA #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-1K7CCtLla6ZxMnOA .sequenceNumber{fill:#fff}#mermaid-svg-1K7CCtLla6ZxMnOA #sequencenumber{fill:#333}#mermaid-svg-1K7CCtLla6ZxMnOA #crosshead path{fill:#333;stroke:#333}#mermaid-svg-1K7CCtLla6ZxMnOA .messageText{fill:#333;stroke:#333}#mermaid-svg-1K7CCtLla6ZxMnOA .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-1K7CCtLla6ZxMnOA .labelText,#mermaid-svg-1K7CCtLla6ZxMnOA .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-1K7CCtLla6ZxMnOA .loopText,#mermaid-svg-1K7CCtLla6ZxMnOA .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-1K7CCtLla6ZxMnOA .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-1K7CCtLla6ZxMnOA .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-1K7CCtLla6ZxMnOA .noteText,#mermaid-svg-1K7CCtLla6ZxMnOA .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-1K7CCtLla6ZxMnOA .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-1K7CCtLla6ZxMnOA .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-1K7CCtLla6ZxMnOA .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-1K7CCtLla6ZxMnOA .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-1K7CCtLla6ZxMnOA .section{stroke:none;opacity:0.2}#mermaid-svg-1K7CCtLla6ZxMnOA .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-1K7CCtLla6ZxMnOA .section2{fill:#fff400}#mermaid-svg-1K7CCtLla6ZxMnOA .section1,#mermaid-svg-1K7CCtLla6ZxMnOA .section3{fill:#fff;opacity:0.2}#mermaid-svg-1K7CCtLla6ZxMnOA .sectionTitle0{fill:#333}#mermaid-svg-1K7CCtLla6ZxMnOA .sectionTitle1{fill:#333}#mermaid-svg-1K7CCtLla6ZxMnOA .sectionTitle2{fill:#333}#mermaid-svg-1K7CCtLla6ZxMnOA .sectionTitle3{fill:#333}#mermaid-svg-1K7CCtLla6ZxMnOA .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-1K7CCtLla6ZxMnOA .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-1K7CCtLla6ZxMnOA .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-1K7CCtLla6ZxMnOA .grid path{stroke-width:0}#mermaid-svg-1K7CCtLla6ZxMnOA .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-1K7CCtLla6ZxMnOA .task{stroke-width:2}#mermaid-svg-1K7CCtLla6ZxMnOA .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-1K7CCtLla6ZxMnOA .taskText:not([font-size]){font-size:11px}#mermaid-svg-1K7CCtLla6ZxMnOA .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-1K7CCtLla6ZxMnOA .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-1K7CCtLla6ZxMnOA .task.clickable{cursor:pointer}#mermaid-svg-1K7CCtLla6ZxMnOA .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-1K7CCtLla6ZxMnOA .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-1K7CCtLla6ZxMnOA .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-1K7CCtLla6ZxMnOA .taskText0,#mermaid-svg-1K7CCtLla6ZxMnOA .taskText1,#mermaid-svg-1K7CCtLla6ZxMnOA .taskText2,#mermaid-svg-1K7CCtLla6ZxMnOA .taskText3{fill:#fff}#mermaid-svg-1K7CCtLla6ZxMnOA .task0,#mermaid-svg-1K7CCtLla6ZxMnOA .task1,#mermaid-svg-1K7CCtLla6ZxMnOA .task2,#mermaid-svg-1K7CCtLla6ZxMnOA .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-1K7CCtLla6ZxMnOA .taskTextOutside0,#mermaid-svg-1K7CCtLla6ZxMnOA .taskTextOutside2{fill:#000}#mermaid-svg-1K7CCtLla6ZxMnOA .taskTextOutside1,#mermaid-svg-1K7CCtLla6ZxMnOA .taskTextOutside3{fill:#000}#mermaid-svg-1K7CCtLla6ZxMnOA .active0,#mermaid-svg-1K7CCtLla6ZxMnOA .active1,#mermaid-svg-1K7CCtLla6ZxMnOA .active2,#mermaid-svg-1K7CCtLla6ZxMnOA .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-1K7CCtLla6ZxMnOA .activeText0,#mermaid-svg-1K7CCtLla6ZxMnOA .activeText1,#mermaid-svg-1K7CCtLla6ZxMnOA .activeText2,#mermaid-svg-1K7CCtLla6ZxMnOA .activeText3{fill:#000 !important}#mermaid-svg-1K7CCtLla6ZxMnOA .done0,#mermaid-svg-1K7CCtLla6ZxMnOA .done1,#mermaid-svg-1K7CCtLla6ZxMnOA .done2,#mermaid-svg-1K7CCtLla6ZxMnOA .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-1K7CCtLla6ZxMnOA .doneText0,#mermaid-svg-1K7CCtLla6ZxMnOA .doneText1,#mermaid-svg-1K7CCtLla6ZxMnOA .doneText2,#mermaid-svg-1K7CCtLla6ZxMnOA .doneText3{fill:#000 !important}#mermaid-svg-1K7CCtLla6ZxMnOA .crit0,#mermaid-svg-1K7CCtLla6ZxMnOA .crit1,#mermaid-svg-1K7CCtLla6ZxMnOA .crit2,#mermaid-svg-1K7CCtLla6ZxMnOA .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-1K7CCtLla6ZxMnOA .activeCrit0,#mermaid-svg-1K7CCtLla6ZxMnOA .activeCrit1,#mermaid-svg-1K7CCtLla6ZxMnOA .activeCrit2,#mermaid-svg-1K7CCtLla6ZxMnOA .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-1K7CCtLla6ZxMnOA .doneCrit0,#mermaid-svg-1K7CCtLla6ZxMnOA .doneCrit1,#mermaid-svg-1K7CCtLla6ZxMnOA .doneCrit2,#mermaid-svg-1K7CCtLla6ZxMnOA .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-1K7CCtLla6ZxMnOA .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-1K7CCtLla6ZxMnOA .milestoneText{font-style:italic}#mermaid-svg-1K7CCtLla6ZxMnOA .doneCritText0,#mermaid-svg-1K7CCtLla6ZxMnOA .doneCritText1,#mermaid-svg-1K7CCtLla6ZxMnOA .doneCritText2,#mermaid-svg-1K7CCtLla6ZxMnOA .doneCritText3{fill:#000 !important}#mermaid-svg-1K7CCtLla6ZxMnOA .activeCritText0,#mermaid-svg-1K7CCtLla6ZxMnOA .activeCritText1,#mermaid-svg-1K7CCtLla6ZxMnOA .activeCritText2,#mermaid-svg-1K7CCtLla6ZxMnOA .activeCritText3{fill:#000 !important}#mermaid-svg-1K7CCtLla6ZxMnOA .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-1K7CCtLla6ZxMnOA g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-1K7CCtLla6ZxMnOA g.classGroup text .title{font-weight:bolder}#mermaid-svg-1K7CCtLla6ZxMnOA g.clickable{cursor:pointer}#mermaid-svg-1K7CCtLla6ZxMnOA g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-1K7CCtLla6ZxMnOA g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-1K7CCtLla6ZxMnOA .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-1K7CCtLla6ZxMnOA .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-1K7CCtLla6ZxMnOA .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-1K7CCtLla6ZxMnOA .dashed-line{stroke-dasharray:3}#mermaid-svg-1K7CCtLla6ZxMnOA #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-1K7CCtLla6ZxMnOA #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-1K7CCtLla6ZxMnOA #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-1K7CCtLla6ZxMnOA #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-1K7CCtLla6ZxMnOA #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-1K7CCtLla6ZxMnOA #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-1K7CCtLla6ZxMnOA #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-1K7CCtLla6ZxMnOA #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-1K7CCtLla6ZxMnOA .commit-id,#mermaid-svg-1K7CCtLla6ZxMnOA .commit-msg,#mermaid-svg-1K7CCtLla6ZxMnOA .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-1K7CCtLla6ZxMnOA .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-1K7CCtLla6ZxMnOA .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-1K7CCtLla6ZxMnOA g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-1K7CCtLla6ZxMnOA g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-1K7CCtLla6ZxMnOA g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-1K7CCtLla6ZxMnOA g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-1K7CCtLla6ZxMnOA g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-1K7CCtLla6ZxMnOA g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-1K7CCtLla6ZxMnOA .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-1K7CCtLla6ZxMnOA .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-1K7CCtLla6ZxMnOA .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-1K7CCtLla6ZxMnOA .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-1K7CCtLla6ZxMnOA .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-1K7CCtLla6ZxMnOA .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-1K7CCtLla6ZxMnOA .edgeLabel text{fill:#333}#mermaid-svg-1K7CCtLla6ZxMnOA .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-1K7CCtLla6ZxMnOA .node circle.state-start{fill:black;stroke:black}#mermaid-svg-1K7CCtLla6ZxMnOA .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-1K7CCtLla6ZxMnOA #statediagram-barbEnd{fill:#9370db}#mermaid-svg-1K7CCtLla6ZxMnOA .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-1K7CCtLla6ZxMnOA .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-1K7CCtLla6ZxMnOA .statediagram-state .divider{stroke:#9370db}#mermaid-svg-1K7CCtLla6ZxMnOA .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-1K7CCtLla6ZxMnOA .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-1K7CCtLla6ZxMnOA .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-1K7CCtLla6ZxMnOA .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-1K7CCtLla6ZxMnOA .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-1K7CCtLla6ZxMnOA .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-1K7CCtLla6ZxMnOA .note-edge{stroke-dasharray:5}#mermaid-svg-1K7CCtLla6ZxMnOA .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-1K7CCtLla6ZxMnOA .error-icon{fill:#522}#mermaid-svg-1K7CCtLla6ZxMnOA .error-text{fill:#522;stroke:#522}#mermaid-svg-1K7CCtLla6ZxMnOA .edge-thickness-normal{stroke-width:2px}#mermaid-svg-1K7CCtLla6ZxMnOA .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-1K7CCtLla6ZxMnOA .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-1K7CCtLla6ZxMnOA .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-1K7CCtLla6ZxMnOA .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-1K7CCtLla6ZxMnOA .marker{fill:#333}#mermaid-svg-1K7CCtLla6ZxMnOA .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-1K7CCtLla6ZxMnOA {color: rgba(0, 0, 0, 0.75);font: ;}

匹配
不匹配
收到分组
提取分组的目的主机IP
逐行查找特定主机路由
该行子网掩码与目的地址按位与运算
按照该路由的下一跳转发
是否还有下一行
查找下一行
是否有默认路由
将分组传送给默认路由
报告转发分组出错

注:假定转发表按照前缀的长短排列,把前缀长的放在前面。

使用二叉线索查找转发表

查找每一个路由所需的时间是非常宝贵的,在转发表中必须使用很好的数据结构和先进的快速查找算法。
通常是把CIDR编址的转发表存放在一种层次结构中,然后自上而下地按层次查找。最常用的是二叉线索

  • 从二叉线索的根节点自顶向下的深度最多为32层,每一层对应IP地址中的一位。
  • 要将二叉线索用于转发表,还必须使二叉线索中的每一个叶节点包含所对应的网络前缀和子网掩码。
  • 为了提高二叉线索的查找速度,广泛使用了各种压缩技术。

网际控制报文协议ICMP

为了更有效地转发IP数据报和提高交付成功的机会,在网际层使用了网际控制报文协议ICMP
ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告。
ICMP报文装在IP数据报的数据部分中,但它是IP层的协议。

ICMP报文种类

ICMP报文有两种:

  • ICMP差错报告报文
  • ICMP询问报文

ICMP报文前4个字节是统一格式(3个字段):类型、代码、检验和
注意:

  • ICMP报文的代码字段用于进一步区分某种类型中的几中不同情况。
  • 检验和字段用来检验整个ICMP报文。
  • ICMP差错报告报文的数据字段具有同样的格式。把收到的需要进行差错报告的IP数据报的首部和数据字段的前8个字节提取出来,作为ICMP报文的数据字段,在加上相应ICMP差错报告报文的前8个字节,就构成了ICMP差错报告报文。

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

  • 对于ICMP差错报文
  • 对第一个分配的数据薄片的所有后续数据报片
  • 对具有多播地址的数据报
  • 对具有特殊地址的数据报(如127.0.0.0和0.0.0.0)

ICMP应用举例

ICMP的应用:

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

注意:

  • PING使用了ICMP会送请求和会送回答报文。
  • PING是应用层直接使用网络层ICMP的一个实例。
  • traceroute为UNIX命令,Windows中为tracert

IPv6

在2011年2月3日,IANA开始停止向地区互联网注册机构RIR分配IPv4地址,因为IPv4地址已经全部耗尽了。

解决IP地址耗尽的根本措施是采用具有更大地址空间的新版本IP——IPv6。

IPv6的基本首部

IPv6仍支持无连接传送。但将协议数据单元PDU称为分组,而不是IPv4的数据报。

IPv6的主要变化:

  • 更大的地址空间:地址为128位。
  • 扩展的地址层次结构:由于地址空间很大,可以划分成更多的层次。
  • 灵活的首部格式:定义了许多可扩展首部。
  • 改进的选项:IPv6允许数据报包含有选项的控制信息。
  • 允许协议继续扩充
  • 支持即插即用:即自动配置,IPv6不需要使用DHCP。
  • 支持资源的预分配:支持实时视像等要求保证一定的带宽和时延的应用。
  • 首部为8字节对齐

IPv6数据表分为两大部分:

  • 基本首部
  • 有效载荷(净载荷)

注意:

  • IPv6选项放在有效载荷中。
  • IPv6首部长度是固定的,为40字节(因此不再需要首部长度字段)。
  • 有效载荷允许零个或多个扩展首部。
  • 取消了服务类型字段,优先级流标号字段实现了其功能。
  • 取消总长度字段,改用有效载荷长度字段。
  • 取消标识、标志、片偏移字段,包含在了分片扩展首部。
  • TTL字段改名跳数限制字段。
  • 取消协议字段,改用下一个首部字段。
  • 取消了检验和字段,加快了路由器处理数据报速度。(运输层协议保证可靠性)
  • 取消了选项字段,用扩展首部实现选项功能。

IPv6基本首部的各个字段和含义:

序号 字段名 所占位数 含义
1 版本 4位 指明协议的版本,IPv6该字段为6
2 通信量类 8位 区分数据报的类别和优先级
3 流标号 20位 所有属于同一个流的数据报都具有同样的流标号
4 有效载荷长度 16位 指明数据报除基本首部意外的字节数,最大值64KB
5 下一个首部 8位 相当于IPv4的协议字段或可选字段
6 跳数限制 8位 防止数据报无限制在网络中存在
7 源地址 128位 发送端IP地址
8 目的地址 128位 接收端IP地址

:IPv6提出了“流”的概念。所谓“流”就是互联网络上从特定源点到特定终点(单播或多播)的一系列数据报,而在这个“流”所经过的路径上的路由器都保证指明的服务质量。

IPv6的地址

IPv6数据报的目的地址有三种基本类型:

  • 单播:点对点通信
  • 多播:一对多通信
  • 任播:任播的终点是一组计算机,但数据报只交付其中的一个,通常是按照路由算法得出的距离最近的一个。

IPv6使用冒号十六进制记法:把每个十六位的值用十六进制表示,各值之间用冒号分隔。
注意:

  • 在十六进制记法中,允许将数字前的0去掉。
  • 冒号十六进制允许零压缩:即一连串的零可以用一堆冒号代替(如
    FF05:0:0:0:0;0:0:B3压缩为FF05::B3,
    0:0:0:0:0:0:0:1记为::1,
    0:0:0:0:0:0:0:0:0记为::)
  • CIDR的斜线表示法仍然可用(如60位前缀12AB00000000CD3记为12AB:0:0:CD30::/60)
  • IPv6取消了子网掩码

IPv6常见地址如下

地址类型 数量 其他
未指明地址 1个 16字节全为0
环回地址 1个 ::1
多播地址 占地址总数的1/256,前缀CIDR记法为FF00::/8
本地站点单播地址 占总数的1/1024 用途和IPv6的专用地址一样
本地链路单播地址 占总数的1/1024 在单一链路上使用
全球单播地址 使用最多

从IPv4向IPv6过渡

因为现在互联网规模太大,所以从IPv4到IPv6过渡只能采用逐步演进的方法。
同时,还必须使新安装的IPv6系统能够向后兼容(能够接收和转发IPv4分组)。

两种向IPv6过渡的策略:

  • 双协议栈
  • 隧道技术

1. 双协议栈

使一部分主机(或路由器)同时装有IPv4和IPv6两种协议栈。
双协议栈主机即能和IPv6的系统通信,又能和IPv4的系统通信。
双协议栈的主机记为IPv6/IPv4,表明同时具有IPv6和IPv4地址。

双协议栈主机采用域名系统DNS查询来决定采用哪一种地址。若DNS返回的是IPv4地址,则主机使用IPv4地址。如果返回的是IPv6地址,则使用IPv6地址。

双协议栈需要付出的代价太大,因为要安装上两套协议。因此在过渡时期,最好采用隧道技术。

2. 隧道技术

在IPv6数据报要进入IPv4网络时,把IPv6数据报封装成为IPv4数据报,使整个IPv6数据报变成IPv4数据报的数据部分。当IPv4数据报离开IPv4网络中的隧道时,再把数据部分(即原IPv6数据报)交给主机IPv6协议栈。

要使双协议的主机知道IPv4数据报里面封装的数据是一个IPv6数据报,就必须在IPv4首部的协议字段的值设置为41.

ICMPv6

IPv6不保证数据报的可靠交付,需要使用ICMP来反馈一些差错信息。新版本称为ICMPv6。

ICMPv6是面向报文的协议,利用报文来报告差错,获取信息,探测邻站或管理多播通信。

ICMPv6报文归类:

  • 差错报文
  • 信息报文
  • 邻站发现报文
  • 组成员关系报文

互联网的路由选择协议

路由选择协议规定了互联网中有关的路由器应如何相互交换信息并生成路由表。

有关路由选择协议的几个基本概念

1. 理想的路由算法

  1. 算法必须是正确的和完整的。(“正确”指沿着各路由表指引的路由,最终能到达目的网络/目的主机)
  2. 算法在计算上应简单。
  3. 算法应能适应通信量和网络拓扑的变化(有自适应性、稳健性)。
  4. 算法应该具有稳定性。(网络稳定时算法收敛于一个可接受的解)
  5. 算法应是公平的。(对所有用户平等)
  6. 算法应是最佳的。(“最佳”只能是相对于某一种特定要求下得出的较为合理的选择而已)

从算法能否岁网络通信量或拓扑自适应调整变化,路由算法分为两大类:

  • 静态路由选择策略(非自适应路由选择策略):简单开销小,但不能及时适应网络状态变化,适用于小网络。
  • 动态路由选择策略(自适应路由选择策略):较好地适应网络状态变化,实现相对复杂,开销较大。适用于大网络。

2. 分层次的路由选择协议

互联网采用的路由选择协议主要是自适应的(即动态的)、分布式路由选择协议
互联网采用分层次的路由选择协议的原因:

  • 互联网规模非常大,不分层会使得路由表非常大。
  • 许多单位不愿意外界了解自己单位网络内部细节。

可以把整个互联网划分为许多较小的自治系统AS。

自治系统AS是在单一技术管理下的许多网络、IP地址以及路由器,而这些路由器使用一种自治系统内部的路由选择协议和共同的度量。每一个AS对其他AS表现出的是一个单一的和一致的路由选择策略

路由选择策略划分为两种:

  • 内部网关协议IGP:单个AS内部的路由选择策略。(具体协议有多种,如RIP和OSPF等)
  • 外部网关协议EGP:AS之间的路由选择策略。(目前使用的协议是BGP-4)

域间路由选择:自治系统之间的路由选择。
域内路由选择:自治系统内部的路由选择。

内部网关协议RIP

RIP是内部网关协议IGP中最先得到广泛使用的协议。中文译名为路由信息协议

1. 协议RIP的工作原理

  • RIP是一种分布式的基于距离向量的路由选择协议
  • RIP最大的优点是简单。
  • RIP只使用与小型互联网。
  • RIP不能在两个网络之间同时使用多条路由。
  • RIP仅和相邻路由器交换信息
  • 路由器交换的信息是当前本路由器的路由表。
  • 按固定时间间隔交换路由信息。
  • RIP可以以较快的速度收敛。(即自治系统中所有的节点都得到正确的路由选择信息)
  • 好消息传播得快,坏消息传播得慢。
  • RIP不知道全网的拓扑结构。(只知道下一跳该怎么走)
  • RIP作为UDP数据部分进行传送。

路由表中最主要的信息:

  • 到某个网络的距离
  • 应经过的下一跳地址

2. 距离向量算法

路由表更新的原则是找出到每个目的网络的最短距离,这种更新算法那称为距离向量算法

距离向量算法流程如下

#mermaid-svg-RsdELuIYkh955kgE .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-RsdELuIYkh955kgE .label text{fill:#333}#mermaid-svg-RsdELuIYkh955kgE .node rect,#mermaid-svg-RsdELuIYkh955kgE .node circle,#mermaid-svg-RsdELuIYkh955kgE .node ellipse,#mermaid-svg-RsdELuIYkh955kgE .node polygon,#mermaid-svg-RsdELuIYkh955kgE .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-RsdELuIYkh955kgE .node .label{text-align:center;fill:#333}#mermaid-svg-RsdELuIYkh955kgE .node.clickable{cursor:pointer}#mermaid-svg-RsdELuIYkh955kgE .arrowheadPath{fill:#333}#mermaid-svg-RsdELuIYkh955kgE .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-RsdELuIYkh955kgE .flowchart-link{stroke:#333;fill:none}#mermaid-svg-RsdELuIYkh955kgE .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-RsdELuIYkh955kgE .edgeLabel rect{opacity:0.9}#mermaid-svg-RsdELuIYkh955kgE .edgeLabel span{color:#333}#mermaid-svg-RsdELuIYkh955kgE .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-RsdELuIYkh955kgE .cluster text{fill:#333}#mermaid-svg-RsdELuIYkh955kgE div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-RsdELuIYkh955kgE .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-RsdELuIYkh955kgE text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-RsdELuIYkh955kgE .actor-line{stroke:grey}#mermaid-svg-RsdELuIYkh955kgE .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-RsdELuIYkh955kgE .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-RsdELuIYkh955kgE #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-RsdELuIYkh955kgE .sequenceNumber{fill:#fff}#mermaid-svg-RsdELuIYkh955kgE #sequencenumber{fill:#333}#mermaid-svg-RsdELuIYkh955kgE #crosshead path{fill:#333;stroke:#333}#mermaid-svg-RsdELuIYkh955kgE .messageText{fill:#333;stroke:#333}#mermaid-svg-RsdELuIYkh955kgE .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-RsdELuIYkh955kgE .labelText,#mermaid-svg-RsdELuIYkh955kgE .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-RsdELuIYkh955kgE .loopText,#mermaid-svg-RsdELuIYkh955kgE .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-RsdELuIYkh955kgE .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-RsdELuIYkh955kgE .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-RsdELuIYkh955kgE .noteText,#mermaid-svg-RsdELuIYkh955kgE .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-RsdELuIYkh955kgE .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-RsdELuIYkh955kgE .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-RsdELuIYkh955kgE .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-RsdELuIYkh955kgE .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-RsdELuIYkh955kgE .section{stroke:none;opacity:0.2}#mermaid-svg-RsdELuIYkh955kgE .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-RsdELuIYkh955kgE .section2{fill:#fff400}#mermaid-svg-RsdELuIYkh955kgE .section1,#mermaid-svg-RsdELuIYkh955kgE .section3{fill:#fff;opacity:0.2}#mermaid-svg-RsdELuIYkh955kgE .sectionTitle0{fill:#333}#mermaid-svg-RsdELuIYkh955kgE .sectionTitle1{fill:#333}#mermaid-svg-RsdELuIYkh955kgE .sectionTitle2{fill:#333}#mermaid-svg-RsdELuIYkh955kgE .sectionTitle3{fill:#333}#mermaid-svg-RsdELuIYkh955kgE .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-RsdELuIYkh955kgE .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-RsdELuIYkh955kgE .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-RsdELuIYkh955kgE .grid path{stroke-width:0}#mermaid-svg-RsdELuIYkh955kgE .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-RsdELuIYkh955kgE .task{stroke-width:2}#mermaid-svg-RsdELuIYkh955kgE .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-RsdELuIYkh955kgE .taskText:not([font-size]){font-size:11px}#mermaid-svg-RsdELuIYkh955kgE .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-RsdELuIYkh955kgE .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-RsdELuIYkh955kgE .task.clickable{cursor:pointer}#mermaid-svg-RsdELuIYkh955kgE .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-RsdELuIYkh955kgE .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-RsdELuIYkh955kgE .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-RsdELuIYkh955kgE .taskText0,#mermaid-svg-RsdELuIYkh955kgE .taskText1,#mermaid-svg-RsdELuIYkh955kgE .taskText2,#mermaid-svg-RsdELuIYkh955kgE .taskText3{fill:#fff}#mermaid-svg-RsdELuIYkh955kgE .task0,#mermaid-svg-RsdELuIYkh955kgE .task1,#mermaid-svg-RsdELuIYkh955kgE .task2,#mermaid-svg-RsdELuIYkh955kgE .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-RsdELuIYkh955kgE .taskTextOutside0,#mermaid-svg-RsdELuIYkh955kgE .taskTextOutside2{fill:#000}#mermaid-svg-RsdELuIYkh955kgE .taskTextOutside1,#mermaid-svg-RsdELuIYkh955kgE .taskTextOutside3{fill:#000}#mermaid-svg-RsdELuIYkh955kgE .active0,#mermaid-svg-RsdELuIYkh955kgE .active1,#mermaid-svg-RsdELuIYkh955kgE .active2,#mermaid-svg-RsdELuIYkh955kgE .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-RsdELuIYkh955kgE .activeText0,#mermaid-svg-RsdELuIYkh955kgE .activeText1,#mermaid-svg-RsdELuIYkh955kgE .activeText2,#mermaid-svg-RsdELuIYkh955kgE .activeText3{fill:#000 !important}#mermaid-svg-RsdELuIYkh955kgE .done0,#mermaid-svg-RsdELuIYkh955kgE .done1,#mermaid-svg-RsdELuIYkh955kgE .done2,#mermaid-svg-RsdELuIYkh955kgE .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-RsdELuIYkh955kgE .doneText0,#mermaid-svg-RsdELuIYkh955kgE .doneText1,#mermaid-svg-RsdELuIYkh955kgE .doneText2,#mermaid-svg-RsdELuIYkh955kgE .doneText3{fill:#000 !important}#mermaid-svg-RsdELuIYkh955kgE .crit0,#mermaid-svg-RsdELuIYkh955kgE .crit1,#mermaid-svg-RsdELuIYkh955kgE .crit2,#mermaid-svg-RsdELuIYkh955kgE .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-RsdELuIYkh955kgE .activeCrit0,#mermaid-svg-RsdELuIYkh955kgE .activeCrit1,#mermaid-svg-RsdELuIYkh955kgE .activeCrit2,#mermaid-svg-RsdELuIYkh955kgE .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-RsdELuIYkh955kgE .doneCrit0,#mermaid-svg-RsdELuIYkh955kgE .doneCrit1,#mermaid-svg-RsdELuIYkh955kgE .doneCrit2,#mermaid-svg-RsdELuIYkh955kgE .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-RsdELuIYkh955kgE .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-RsdELuIYkh955kgE .milestoneText{font-style:italic}#mermaid-svg-RsdELuIYkh955kgE .doneCritText0,#mermaid-svg-RsdELuIYkh955kgE .doneCritText1,#mermaid-svg-RsdELuIYkh955kgE .doneCritText2,#mermaid-svg-RsdELuIYkh955kgE .doneCritText3{fill:#000 !important}#mermaid-svg-RsdELuIYkh955kgE .activeCritText0,#mermaid-svg-RsdELuIYkh955kgE .activeCritText1,#mermaid-svg-RsdELuIYkh955kgE .activeCritText2,#mermaid-svg-RsdELuIYkh955kgE .activeCritText3{fill:#000 !important}#mermaid-svg-RsdELuIYkh955kgE .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-RsdELuIYkh955kgE g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-RsdELuIYkh955kgE g.classGroup text .title{font-weight:bolder}#mermaid-svg-RsdELuIYkh955kgE g.clickable{cursor:pointer}#mermaid-svg-RsdELuIYkh955kgE g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-RsdELuIYkh955kgE g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-RsdELuIYkh955kgE .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-RsdELuIYkh955kgE .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-RsdELuIYkh955kgE .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-RsdELuIYkh955kgE .dashed-line{stroke-dasharray:3}#mermaid-svg-RsdELuIYkh955kgE #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-RsdELuIYkh955kgE #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-RsdELuIYkh955kgE #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-RsdELuIYkh955kgE #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-RsdELuIYkh955kgE #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-RsdELuIYkh955kgE #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-RsdELuIYkh955kgE #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-RsdELuIYkh955kgE #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-RsdELuIYkh955kgE .commit-id,#mermaid-svg-RsdELuIYkh955kgE .commit-msg,#mermaid-svg-RsdELuIYkh955kgE .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-RsdELuIYkh955kgE .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-RsdELuIYkh955kgE .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-RsdELuIYkh955kgE g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-RsdELuIYkh955kgE g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-RsdELuIYkh955kgE g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-RsdELuIYkh955kgE g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-RsdELuIYkh955kgE g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-RsdELuIYkh955kgE g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-RsdELuIYkh955kgE .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-RsdELuIYkh955kgE .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-RsdELuIYkh955kgE .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-RsdELuIYkh955kgE .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-RsdELuIYkh955kgE .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-RsdELuIYkh955kgE .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-RsdELuIYkh955kgE .edgeLabel text{fill:#333}#mermaid-svg-RsdELuIYkh955kgE .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-RsdELuIYkh955kgE .node circle.state-start{fill:black;stroke:black}#mermaid-svg-RsdELuIYkh955kgE .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-RsdELuIYkh955kgE #statediagram-barbEnd{fill:#9370db}#mermaid-svg-RsdELuIYkh955kgE .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-RsdELuIYkh955kgE .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-RsdELuIYkh955kgE .statediagram-state .divider{stroke:#9370db}#mermaid-svg-RsdELuIYkh955kgE .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-RsdELuIYkh955kgE .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-RsdELuIYkh955kgE .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-RsdELuIYkh955kgE .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-RsdELuIYkh955kgE .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-RsdELuIYkh955kgE .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-RsdELuIYkh955kgE .note-edge{stroke-dasharray:5}#mermaid-svg-RsdELuIYkh955kgE .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-RsdELuIYkh955kgE .error-icon{fill:#522}#mermaid-svg-RsdELuIYkh955kgE .error-text{fill:#522;stroke:#522}#mermaid-svg-RsdELuIYkh955kgE .edge-thickness-normal{stroke-width:2px}#mermaid-svg-RsdELuIYkh955kgE .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-RsdELuIYkh955kgE .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-RsdELuIYkh955kgE .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-RsdELuIYkh955kgE .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-RsdELuIYkh955kgE .marker{fill:#333}#mermaid-svg-RsdELuIYkh955kgE .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-RsdELuIYkh955kgE {color: rgba(0, 0, 0, 0.75);font: ;}

地址为X的相邻路由器发来RIP报文
修改报文中所有项目
查看原路由表中是否有目的网络Net
把该项目添加到路由表中
查看路由表项目中下一跳地址是否为X
用新项目替换原项目
判断新项目距离是否更小
不做更改
三分钟没有收到相邻路由器更新路由表
标记该路由器不可达

RIP报文更改具体操作:

#mermaid-svg-Et9z6B5GRwVKc3eq .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-Et9z6B5GRwVKc3eq .label text{fill:#333}#mermaid-svg-Et9z6B5GRwVKc3eq .node rect,#mermaid-svg-Et9z6B5GRwVKc3eq .node circle,#mermaid-svg-Et9z6B5GRwVKc3eq .node ellipse,#mermaid-svg-Et9z6B5GRwVKc3eq .node polygon,#mermaid-svg-Et9z6B5GRwVKc3eq .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-Et9z6B5GRwVKc3eq .node .label{text-align:center;fill:#333}#mermaid-svg-Et9z6B5GRwVKc3eq .node.clickable{cursor:pointer}#mermaid-svg-Et9z6B5GRwVKc3eq .arrowheadPath{fill:#333}#mermaid-svg-Et9z6B5GRwVKc3eq .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-Et9z6B5GRwVKc3eq .flowchart-link{stroke:#333;fill:none}#mermaid-svg-Et9z6B5GRwVKc3eq .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-Et9z6B5GRwVKc3eq .edgeLabel rect{opacity:0.9}#mermaid-svg-Et9z6B5GRwVKc3eq .edgeLabel span{color:#333}#mermaid-svg-Et9z6B5GRwVKc3eq .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-Et9z6B5GRwVKc3eq .cluster text{fill:#333}#mermaid-svg-Et9z6B5GRwVKc3eq div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-Et9z6B5GRwVKc3eq .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-Et9z6B5GRwVKc3eq text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-Et9z6B5GRwVKc3eq .actor-line{stroke:grey}#mermaid-svg-Et9z6B5GRwVKc3eq .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-Et9z6B5GRwVKc3eq .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-Et9z6B5GRwVKc3eq #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-Et9z6B5GRwVKc3eq .sequenceNumber{fill:#fff}#mermaid-svg-Et9z6B5GRwVKc3eq #sequencenumber{fill:#333}#mermaid-svg-Et9z6B5GRwVKc3eq #crosshead path{fill:#333;stroke:#333}#mermaid-svg-Et9z6B5GRwVKc3eq .messageText{fill:#333;stroke:#333}#mermaid-svg-Et9z6B5GRwVKc3eq .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-Et9z6B5GRwVKc3eq .labelText,#mermaid-svg-Et9z6B5GRwVKc3eq .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-Et9z6B5GRwVKc3eq .loopText,#mermaid-svg-Et9z6B5GRwVKc3eq .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-Et9z6B5GRwVKc3eq .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-Et9z6B5GRwVKc3eq .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-Et9z6B5GRwVKc3eq .noteText,#mermaid-svg-Et9z6B5GRwVKc3eq .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-Et9z6B5GRwVKc3eq .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-Et9z6B5GRwVKc3eq .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-Et9z6B5GRwVKc3eq .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-Et9z6B5GRwVKc3eq .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Et9z6B5GRwVKc3eq .section{stroke:none;opacity:0.2}#mermaid-svg-Et9z6B5GRwVKc3eq .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-Et9z6B5GRwVKc3eq .section2{fill:#fff400}#mermaid-svg-Et9z6B5GRwVKc3eq .section1,#mermaid-svg-Et9z6B5GRwVKc3eq .section3{fill:#fff;opacity:0.2}#mermaid-svg-Et9z6B5GRwVKc3eq .sectionTitle0{fill:#333}#mermaid-svg-Et9z6B5GRwVKc3eq .sectionTitle1{fill:#333}#mermaid-svg-Et9z6B5GRwVKc3eq .sectionTitle2{fill:#333}#mermaid-svg-Et9z6B5GRwVKc3eq .sectionTitle3{fill:#333}#mermaid-svg-Et9z6B5GRwVKc3eq .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Et9z6B5GRwVKc3eq .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-Et9z6B5GRwVKc3eq .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Et9z6B5GRwVKc3eq .grid path{stroke-width:0}#mermaid-svg-Et9z6B5GRwVKc3eq .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-Et9z6B5GRwVKc3eq .task{stroke-width:2}#mermaid-svg-Et9z6B5GRwVKc3eq .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Et9z6B5GRwVKc3eq .taskText:not([font-size]){font-size:11px}#mermaid-svg-Et9z6B5GRwVKc3eq .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Et9z6B5GRwVKc3eq .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-Et9z6B5GRwVKc3eq .task.clickable{cursor:pointer}#mermaid-svg-Et9z6B5GRwVKc3eq .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-Et9z6B5GRwVKc3eq .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-Et9z6B5GRwVKc3eq .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-Et9z6B5GRwVKc3eq .taskText0,#mermaid-svg-Et9z6B5GRwVKc3eq .taskText1,#mermaid-svg-Et9z6B5GRwVKc3eq .taskText2,#mermaid-svg-Et9z6B5GRwVKc3eq .taskText3{fill:#fff}#mermaid-svg-Et9z6B5GRwVKc3eq .task0,#mermaid-svg-Et9z6B5GRwVKc3eq .task1,#mermaid-svg-Et9z6B5GRwVKc3eq .task2,#mermaid-svg-Et9z6B5GRwVKc3eq .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-Et9z6B5GRwVKc3eq .taskTextOutside0,#mermaid-svg-Et9z6B5GRwVKc3eq .taskTextOutside2{fill:#000}#mermaid-svg-Et9z6B5GRwVKc3eq .taskTextOutside1,#mermaid-svg-Et9z6B5GRwVKc3eq .taskTextOutside3{fill:#000}#mermaid-svg-Et9z6B5GRwVKc3eq .active0,#mermaid-svg-Et9z6B5GRwVKc3eq .active1,#mermaid-svg-Et9z6B5GRwVKc3eq .active2,#mermaid-svg-Et9z6B5GRwVKc3eq .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-Et9z6B5GRwVKc3eq .activeText0,#mermaid-svg-Et9z6B5GRwVKc3eq .activeText1,#mermaid-svg-Et9z6B5GRwVKc3eq .activeText2,#mermaid-svg-Et9z6B5GRwVKc3eq .activeText3{fill:#000 !important}#mermaid-svg-Et9z6B5GRwVKc3eq .done0,#mermaid-svg-Et9z6B5GRwVKc3eq .done1,#mermaid-svg-Et9z6B5GRwVKc3eq .done2,#mermaid-svg-Et9z6B5GRwVKc3eq .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-Et9z6B5GRwVKc3eq .doneText0,#mermaid-svg-Et9z6B5GRwVKc3eq .doneText1,#mermaid-svg-Et9z6B5GRwVKc3eq .doneText2,#mermaid-svg-Et9z6B5GRwVKc3eq .doneText3{fill:#000 !important}#mermaid-svg-Et9z6B5GRwVKc3eq .crit0,#mermaid-svg-Et9z6B5GRwVKc3eq .crit1,#mermaid-svg-Et9z6B5GRwVKc3eq .crit2,#mermaid-svg-Et9z6B5GRwVKc3eq .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-Et9z6B5GRwVKc3eq .activeCrit0,#mermaid-svg-Et9z6B5GRwVKc3eq .activeCrit1,#mermaid-svg-Et9z6B5GRwVKc3eq .activeCrit2,#mermaid-svg-Et9z6B5GRwVKc3eq .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-Et9z6B5GRwVKc3eq .doneCrit0,#mermaid-svg-Et9z6B5GRwVKc3eq .doneCrit1,#mermaid-svg-Et9z6B5GRwVKc3eq .doneCrit2,#mermaid-svg-Et9z6B5GRwVKc3eq .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-Et9z6B5GRwVKc3eq .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-Et9z6B5GRwVKc3eq .milestoneText{font-style:italic}#mermaid-svg-Et9z6B5GRwVKc3eq .doneCritText0,#mermaid-svg-Et9z6B5GRwVKc3eq .doneCritText1,#mermaid-svg-Et9z6B5GRwVKc3eq .doneCritText2,#mermaid-svg-Et9z6B5GRwVKc3eq .doneCritText3{fill:#000 !important}#mermaid-svg-Et9z6B5GRwVKc3eq .activeCritText0,#mermaid-svg-Et9z6B5GRwVKc3eq .activeCritText1,#mermaid-svg-Et9z6B5GRwVKc3eq .activeCritText2,#mermaid-svg-Et9z6B5GRwVKc3eq .activeCritText3{fill:#000 !important}#mermaid-svg-Et9z6B5GRwVKc3eq .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Et9z6B5GRwVKc3eq g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-Et9z6B5GRwVKc3eq g.classGroup text .title{font-weight:bolder}#mermaid-svg-Et9z6B5GRwVKc3eq g.clickable{cursor:pointer}#mermaid-svg-Et9z6B5GRwVKc3eq g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-Et9z6B5GRwVKc3eq g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-Et9z6B5GRwVKc3eq .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-Et9z6B5GRwVKc3eq .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-Et9z6B5GRwVKc3eq .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-Et9z6B5GRwVKc3eq .dashed-line{stroke-dasharray:3}#mermaid-svg-Et9z6B5GRwVKc3eq #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-Et9z6B5GRwVKc3eq #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-Et9z6B5GRwVKc3eq #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-Et9z6B5GRwVKc3eq #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-Et9z6B5GRwVKc3eq #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-Et9z6B5GRwVKc3eq #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-Et9z6B5GRwVKc3eq #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-Et9z6B5GRwVKc3eq #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-Et9z6B5GRwVKc3eq .commit-id,#mermaid-svg-Et9z6B5GRwVKc3eq .commit-msg,#mermaid-svg-Et9z6B5GRwVKc3eq .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Et9z6B5GRwVKc3eq .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Et9z6B5GRwVKc3eq .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Et9z6B5GRwVKc3eq g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Et9z6B5GRwVKc3eq g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-Et9z6B5GRwVKc3eq g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-Et9z6B5GRwVKc3eq g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-Et9z6B5GRwVKc3eq g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-Et9z6B5GRwVKc3eq g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-Et9z6B5GRwVKc3eq .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-Et9z6B5GRwVKc3eq .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-Et9z6B5GRwVKc3eq .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-Et9z6B5GRwVKc3eq .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-Et9z6B5GRwVKc3eq .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-Et9z6B5GRwVKc3eq .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-Et9z6B5GRwVKc3eq .edgeLabel text{fill:#333}#mermaid-svg-Et9z6B5GRwVKc3eq .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Et9z6B5GRwVKc3eq .node circle.state-start{fill:black;stroke:black}#mermaid-svg-Et9z6B5GRwVKc3eq .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-Et9z6B5GRwVKc3eq #statediagram-barbEnd{fill:#9370db}#mermaid-svg-Et9z6B5GRwVKc3eq .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-Et9z6B5GRwVKc3eq .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-Et9z6B5GRwVKc3eq .statediagram-state .divider{stroke:#9370db}#mermaid-svg-Et9z6B5GRwVKc3eq .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-Et9z6B5GRwVKc3eq .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-Et9z6B5GRwVKc3eq .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-Et9z6B5GRwVKc3eq .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-Et9z6B5GRwVKc3eq .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-Et9z6B5GRwVKc3eq .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-Et9z6B5GRwVKc3eq .note-edge{stroke-dasharray:5}#mermaid-svg-Et9z6B5GRwVKc3eq .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-Et9z6B5GRwVKc3eq .error-icon{fill:#522}#mermaid-svg-Et9z6B5GRwVKc3eq .error-text{fill:#522;stroke:#522}#mermaid-svg-Et9z6B5GRwVKc3eq .edge-thickness-normal{stroke-width:2px}#mermaid-svg-Et9z6B5GRwVKc3eq .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-Et9z6B5GRwVKc3eq .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-Et9z6B5GRwVKc3eq .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-Et9z6B5GRwVKc3eq .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-Et9z6B5GRwVKc3eq .marker{fill:#333}#mermaid-svg-Et9z6B5GRwVKc3eq .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-Et9z6B5GRwVKc3eq {color: rgba(0, 0, 0, 0.75);font: ;}

地址为X的相邻路由器发来RIP报文
把下一跳字段地址都改为X
把所有距离字段值加1

RIP报文由首部路由部分组成。

在路由部分中有自治系统号ASN(因为可能收到本自治系统以外的路由选择信息)

3. 坏消息传播得慢

RIP存在的一个问题是坏消息传播得慢。即当网络出现故障时,要经过比较长的时间才能将此信息传到所有的路由器。

解决方案:
如让路由器记录收到的某特定路由信息的接口,而不让同一路由信息再通过此接口向反方向传送。

内部网关协议OSPF

1. 协议OSPF的基本特点

OSPF中文译名为开放最短路径优先
它是为了克服RIP缺点而开发的。

  • OSPF最主要的特征是使用链路状态协议
  • 向本自治系统中所有路由器发送信息
  • 发送的信息就是与本路由器相邻的所有路由器的链路状态
  • 当链路状态发生变化或每隔一段时间,路由器向所有路由器用洪泛法发送链路状态信息。
  • OSPF的更新过程收敛得快是其重要优点。
  • OSPF分组作为IP数据报的数据部分进行传输

其他特点:

  • OSPF允许管理员给每条路由指派不同代价,更加灵活。
  • 如有多条同代价的路径,可以将通信量分配给这几条路径——多路径间的负载均衡。
  • 在OSPF路由器间交换的分组都具有鉴别功能,保证了可依赖的交换信息。
  • OSPF支持可变长度的子网划分和无分类编址CIDR。
  • OSPF让每一个链路状态都带上一个32位序号,序号越大表示状态越新。

注意:

  • “链路状态”就是说明本路由器和哪些路由器相邻,以及该链路的度量(表示费用、距离、时延、宽带等,即代价)。
  • 所有路由器最终都能建立一个链路状态数据库(实际上就是全网的拓扑结构图)。

2. OSPF的五种分组类型

  1. 问候分组:发现和维持邻站可达性
  2. 数据库描述分组:向邻站给出自己链路状态数据库的项目摘要。
  3. 链路状态请求分组:向对方请求发送某些链路状态项目的详细信息。
  4. 链路状态更新分组:用洪泛法对全网更新链路状态。
  5. 链路状态确认分组:对链路更新分组的确认。

外部网关协议BGP

1. 协议BGP的主要特点

为什么在不同AS间不能使用RIP或OSPF协议?

  • 互联网规模太大,使得AS间路由选择非常困难。

  • AS间的路由选择必须考虑有关策略。(由于相互连接的网络的性能相差很大,根据最短路径找出来的路径,可能并不合适)

  • 边界网关协议BGP只能力求选择出一条能够到达目的网路前缀且比较好的路由,并非要计算出一条最佳路由。

  • BGP采用了路径向量路由选择协议

  • BGP协议并非只运行在AS之间,还要运行在AS内部。

2. BGP路由

自治系统中有两种不同功能的路由器:

  • 边界路由器(边界网关)

  • 内部路由器

  • eBGP连接:当两个边界路由器进行通信时,必须先建立TCP连接(端口号179),这种连接称为eBGP连接。

  • iEGP连接:边界路由器把获得的BGP路由,转发给AS内部的其他路由器。在AS内部,两个路由器间还需要建立iBGP连接(iBGP使用TCP连接传送BGP报文)。

注意:

  • iBGP必须是全连通的。
  • eBGP和iBGP并不是两个不同的协议,这两种连接都遵循同样的协议BGP,使用同样的报文格式和具有同样的属性类型。唯一不同点是在发送BGP路由通告时的规则有所不同。

BGP路由的格式:
BGP路由="前缀,BGP属性”=“前缀,AS−PATH,NEXT−HOP”BGP路由 = "前缀,BGP属性” = “前缀,AS-PATH,NEXT-HOP” BGP路由="前缀,BGP属性”=“前缀,AS−PATH,NEXT−HOP”

  • 前缀:通告的BGP路由终点
  • BGP属性最重要的是AS-PATH和NEXT-HOP
  • AS-PATH(自治系统路径)是通告的BGP路由所经过的自治系统
  • NEXT-HOP(下一跳)是通告的BGP路由起点。

3. 三种不同的自治系统AS

AS可归类为三大类:

AS类别 是否付费 特点
末梢AS 必须向所连接的AS付费 比较小的AS。
直接发送或直接接受分组,不会把其他AS的分组再转发到另一个AS
穿越AS 为其他AS有偿转发分组 往往拥有很好告诉通信干线的主干AS。任务是为其他AS转发分组
对等AS 彼此不收费 经过事先商量的两个AS互相转发分组

4. BGP的路由选择

假如有多条BGP路由可供选择,那么会根据以下原则,按照先后次序,选择一条较好的BGP路由。

  1. 本地偏好LOCAL-PREF值最高的路由要首先选择。
  2. 选择具有AS跳数最少的路由。
  3. 使用热土豆路由选择算法。
  4. 选择路由器BGP便是福的数值最小的路由。

5. BGP的四种报文

  • OPEN(打开)报文:用来与BGP连接对等端建立关系

  • UPDATE(更新)报文:用来通告某一路由的信息,以及列出要撤销的路由。

  • KEEPALIVE(保活)报文:用来周期性地正是与对等端的连通性

  • NOTIFICATION(通知)报文:用来发送检测到的差错

  • BGP报文作为TCP报文的数据部分传送。

路由器的构成

1. 路由器的结构

路由器是一种具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组。

路由器的转发分组正是网络层的主要工作。

路由器结构可以分为两大部分:

  • 路由选择部分(控制部分、控制层面):核心构件是路由选择处理机。
  • 分组转发部分(数据层面):由交换结构、一组输入端口、一组输出端口(这里端口值硬件接口)组成。

注意:

  • 路由选择处理机的任务是根据所选定的路由选择结构构造出路由表,同时经常或定期地和相邻路由器交换路由信息更新路由表。
  • “转发”和“路由选择”是有区别的。
  • “转发”就是路由器根据转发表把收到的IP数据报从路由器合适的端口转发出去。
  • “路由选择”是许多路由器协同工作,这些路由器按照路由算法,得出整个网络的拓扑变化情况,动态改变所选择的路由。
  • 路由表一般包含从目的网络到下一跳的映射,而转发表是从路由表得出的。
  • 当没有多余的存储空间给新到达的分组,该分组只能被丢弃

2. 交换结构

交换结构(交换组织)的作用是根据转发表对分组进行处理,将某个输入端口进入的分组从一个合适的输出端口转发出去。
交换结构把分组从一个输入端口转移到合适的输出端口,实现交换主要有三种常见的方法:

  • 通过存储器
  • 通过总线
  • 通过互连网络

IP多播(非考点,暂略)
IP多播的基本概念
在局域网上进行硬件多播
网际组管理协议IGMP和多播路由选择协议


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

虚拟专用网VPN

本地地址:在机构内部使用的计算机,由本机构自行分配的IP地址。
全球地址:向互联网管理机构申请的全球唯一有效IP地址。

为了防止本地IP地址和互联网中的IP地址重合出现的地址二义性,RFC1918指明了一些专用地址
专用地址只能用作本地地址而不能用作全球地址。

在互联网中的所有路由器,对目的地址是专用地址的数据报,一律不进行转发。

三个IPv4专用地址块:

  • 10.0.0.0/8
  • 172.16.0.0/12
  • 192.168.0.0/16

采用这样的专用IP地址的互连网络称为专用互联网本地互联网(简称专用网)。

当机构的许多部分分布的范围很广,可以使用虚拟专用网VPN
VPN利用公用的互联网作为本机构专用网之间的通信载体。

内联网:有场所A和B的内部网路所构成的VPN。(AB属于同一个机构)
外联网:一个机构的VPN有某些外部机构(如合作伙伴)参加进来。

注意:

  • 内联网和外联网都是基于TCP/IP协议的。

远程接入VPN:用于在外地的员工与公司主机建立VPN隧道。

网络地址转换

采用网络地址转换,可以实现让已经分配了本地IP地址的主机和互联网上的主机通信。

使用NAT,需要在专用网连接到互联网上的路由器上安装NAT软件,这个路由器需要有至少一个有效的外部全球IP地址。

注意:

  • 当NAT路由器具有n个全球IP地址时,专用网最多可以同时有n台主机接入到互联网。
  • NAT路由器的通信必须由专用网内的主机发起。因此,专用网内部主机不能直接充当路由器。

现在常用的NAT转换表把运输层的端口号也利用上,可以使多个拥有本地地址的主机共用一个全球主机IP地址。

网络地址与端口号NAPT:使用端口号的NAT。
传统的NAT:不适用端口号的NAT。


多协议标签交换MPLS(非考点,暂略)
MPLSDE工作原理
MPLS首部的位置与格式
新一代的MPLS
软件定义网络SDN简介


本文是对《计算机网络(第八版)》谢希仁著的学习总结

[计算机网络][内容梳理]四、网络层相关推荐

  1. [计算机网络][内容梳理]一、计算机网络概述

    要点 互联网边缘部分和核心部分的作用,其中包含分组交换的概念. 计算机网路的性能指标 计算机网络分层次的体系结构,包含协议和服务的概念. 网络分类 电信网络 有线网络 计算机网络**(发展最快)** ...

  2. 计算机网络自顶向下第四章:网络层

    网络层 一. 网络层概述 a) 转发和路由选择 b) 网络服务模型 二.虚电路和数据报网络 a) 虚电路网络 b) 数据报网络 c) 数据报网络与虚电路网络对比 三.路由器工作原理 a) 输入端口: ...

  3. 【计算机网络】第四部分 网络层(20) IP协议

    文章目录 20.1 网际互联 20.1.1 网络层需求 20.1.2 作为数据报网络的因特网 20.1.3 作为无连接网络的因特网 20.2 IPv4 20.2.1 数据报 1. 版本 `VER` . ...

  4. 计算机网络基础昆明理工大学,昆明理工大学 计算机网络基础 实验四

    昆明理工大学 计算机网络基础 实验四 昆明理工大学信息工程与自动化学院学生实验报告 ( 2013 -2014 学年 第2 学期 ) 课程名称:计算机网络 开课实验室:信自楼442 2014年6月2日 ...

  5. 计算机网络云南大学实验四,云南大学软件学计算机网络原理实验四.doc

    云南大学软件学计算机网络原理实验四 实验四.web服务器套接字编程实验指导 1.实验目的: 编写一个WEB服务器程序,可以接受来自浏览器的访问,并传输页面(包含多个对象)到浏览器.掌握Socket编程 ...

  6. 原理 msc_计算机网络原理梳理丨无线与移动网络

    目录 无线网络 移动网络 IEEE802.11 蜂窝网络 移动IP网络 其它典型无线网络介绍 无线网络 无线网络的基本结构 无线主机 无线链路 基站 网络基础设施 自组织网络(Ad Hoc网络) 无线 ...

  7. 【信管1.6】计算机网络基础(四)网络规划与数据软件

    计算机网络基础(四)网络规划与数据软件 在之前的课程中,我们已经学习了基础的网络知识,IP地址的知识,网络存储和网络接入相关的知识.是感觉到意犹未尽呢?还是想赶紧远离这个大魔王赶紧学习其它的内容呢?别 ...

  8. 《清单革命》内容梳理随笔

    <清单革命>内容梳理&随笔 起 书即是将四散的知识按照逻辑和网状联系编排起来.你应该这样去读,高屋建瓴.层次有秩.显得貌似自己有经验(褒义)的读,读出一些感想和方法论,无论是读出书 ...

  9. 计算机网络传播时延公式,计算机网络时延的四种时延类型都有哪些

    时延是计算机网络信息传输的时候都会存在的一个问题,而今天我们就一起来了解一下,计算机网络时延的四种时延类型都有哪些. 计算机网络中的分组从一台主机(源)出发,经过一系列路由器传输,在另一个端系统中结束 ...

  10. 计算机网络云南大学实验四,云南大学软件学院计算机网络原理实验四.doc

    云南大学软件学院计算机网络原理实验四 实验四.web服务器套接字编程实验指导 1.实验目的: 编写一个WEB服务器程序,可以接受来自浏览器的访问,并传输页面(包含多个对象)到浏览器.掌握Socket编 ...

最新文章

  1. oracle 删掉虚拟目录,创建虚拟目录失败,必须为服务器名称指定“localhost”
  2. SQL Server 备份还原造成孤立用户的问题
  3. win10计算机无法启动mfc7450,解决联想M7650,7600,M7450,7400驱动WIN10系统下不能用固件...
  4. Solr在Weblogic中部署遇到的问题
  5. C++ UTF8和UTF16互转代码
  6. 【年终总结】有三AI至今在人脸图像算法领域都分享了哪些内容?
  7. Wordpress如何打开调试模式
  8. postgresql_PostgreSQL开放自由
  9. jpa 实体映射视图_JPA教程:实体映射-第2部分
  10. 不能启动的问题 社区版安装后_CentOS7下安装docker(亲测+完整)
  11. androidstudio新建项目中在布局文件中不显示title的方法
  12. LeetCode 240. 搜索二维矩阵 II(二分查找 分治)
  13. python shape函数_Python中的多态及抽象类
  14. 函数setState是React的未来
  15. Anaconda:使用pip安装第三方库:keras、TensorFlow、h5py
  16. javascript学习-常用内置对象
  17. java docx4j 目录_使用Docx4j创建word文档
  18. 关于BPSK、QPSK的一些理解,以及MATLAB实现
  19. Win10正式版怎么卸载IE浏览器?
  20. 给老孙做了个排班表!

热门文章

  1. privoxy基本配置-简洁版
  2. php7.2 加密,php 7.2 aes 128 ECB 加密
  3. python项目如何打包_python项目怎么打包运行?
  4. 2017年二级计算机c真题语言,2017全国计算机二级C考试真题
  5. 【CSDN最全java项目实战500篇】练手/项目经验/毕设刚需
  6. 仿微信源代码android,android 最新版超高仿微信源码。
  7. django2.2-form表单详解
  8. Windows程序设计_Chap03_窗口与消息_学习笔记
  9. 数控加工中心编程和UG编程和什么区别
  10. matlab 自动交易系统设计2