计算机网络-网络层下篇

目录

计算机网络

六、路由选择协议

(一)路由选择协议概述

(二)路由信息协议RIP的基本工作原理

(三)开放最短路径优先OSPF的基本工作原理

(四)边界网关协议BGP的基本工作原理

七、IPv4数据报的首部格式

八、网际控制报文协议ICMP

(一)ICMP差错报文

(二)不发送ICMP差错报文的情况 

(三)ICMP询问报文 

(四)ICMP应用举例

1、分组网间探测PING

2、跟踪路由

九、虚拟专用网VPN与网络地址转换NAT

(一)虚拟专用网VPN

​(二)网络地址转换NAT

(三)问题探究 


计算机网络

接上篇:计算机网络-数据链路层下篇_zoeil的博客-CSDN博客计算机网络数据链路层下篇https://blog.csdn.net/m0_62946761/article/details/131445425?spm=1001.2014.3001.5502

六、路由选择协议

(一)路由选择协议概述

因特网所采用的路由协议的主要特点:

  1. 自适应:动态路由选择,能较好地适应网络状态的变化
  2. 分布式:路由之间交换路由i信息
  3. 分层次:将整个因特网划分为许多较小的自治系统AS(Autonomous System)

因特网采用分层次的路由选择协议

常见的路由选择协议 

 路由器的基本结构

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

(二)路由信息协议RIP的基本工作原理

路由信息协议RIP(Routing lnformation Protoco)是内部网关协议IGP中最先得到广泛使用的协议之一,其相关标准文档为RFC 1058。
RIP要求自治系统AS内的每一个路由器都要维护从它自己到AS内其他每一个网络的距离记录。这是一组距离,称为“距离向量D-V(Distance-Vector)

RIP使用跳数(Hop Count)作为度量(Metric)来衡量到达目的网络的距离

  • 路由器到直连网络的距离定义为1。
  • 路由器到非直连网络的距离定义为所经过的路由器数加1
  • 允许一条路径最多只能包含15个路由器。“距离”等于16时相当于不可达因此,RIP只适用于小型互联网

 

RIP认为好的路由就是“距离短”的路由,也就是所通过路由器数量最少的路由,如下图会R1-》R5的两条路径中会倾向于选择下面距离短的

当到达同一目的网络有多条“距离相等”的路由时,可以进行等价负载均衡,即将数据报均分发送到多条路径上

RIP包含以下三个要点

  • 和谁交换信息        交换什么信息
  • 何时交换信息        仅和相邻路由器交换信息
  • 自己的路由表        周期性交换 (例如每30秒)

RIP的基本工作过程

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

RIP的路由条目的更新规则

RIP存在“坏消息传播得慢”的问题 

R1与N1的网络连接出现故障, 此时R1将距离改为16,即不可达,但此时相邻路由器N2的交换信息到达,更新了N1的路由信息,N2后到达N1,此时信息已经被更新过了,不准确了

“坏消息传播得慢”又称为路由环路距离无穷计数问题,这是距离向量算法的一个固有问题可以采取多种措施减少出现该问题的概率或减小该问题带来的危害。

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

(三)开放最短路径优先OSPF的基本工作原理

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

  • “开放”表明OSPF协议不是受某一家厂商控制,而是公开发表的。
  • “最短路径优先”是因为使用了Dijkstra提出的最短路径算法SPF

OSPF是基于链路状态的,而不像RIP那样是基于距离向量的。OSPF采用SPF算法计算路由,从算法上保证了不会产生路由环路

OSPF不限制网络规模,更新效率高,收敛速度快

链路状态是指本路由器都和哪些路由器相邻,以及相应链路的“代价”(cost)

  • “代价”用来表示费用、距离、时延、带宽,等等。这些都由网络管理人员来决定

举例

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

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

使用OSPF的每个路由器都会产生链路状态通告LSA(Link State Advertisement)。LSA中包含以下内容:

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

LSA被封装在链路状态更新分组LSU中,采用洪泛法发送,R4的LSA经过R1和R3到达了R2

使用OSPF的每个路由器都有一个链路状态数据库LSDB,用于存储LSA。

通过各路由器洪泛发送封装有自己LSA的LSU分组,各路由器的LSDB最终将达到一致

 

使用OSPF的各路由器基于LSDB进行最短路径优先SPF计算,构建出各自到达其他各路由器的最短路径,即构建各自的路由表 

OSPF有以下五种分组类型

  1. 类型1,问候 (Hello) 分组,用来发现和维护邻居路由器的可达性
  2. 类型2,数据库描述(Database Description)分组,向邻居路由器给出自己的链路状态数据库中的所有链路状态项目的摘要信息
  3. 类型3,链路状态请求(Link State Request) 分组,向邻居路由器请求发送某些链路状态项目的详细信息
  4. 类型4,链路状态更新 (Link State Update)分组,路由器使用这种分组将其链路状态进行洪泛发送,即用洪泛法对全网更新链路状态。
  5. 类型5,链路状态确认 (Link State Acknowledgment) 分组,这是对链路状态更新分组的确认分组。 

OSPF的基本工作过程

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

当OSPF在多点接入网络中路由器邻居关系的建立时,如果不采用其他机制,将会产生大量的多播分组。例如以下五台路由器连接在同一个多点接入网络中,它们周期性的发送问候分组以简历和维护邻居关系。这些路由器中的任意两个路透其都互为邻居关系,邻居关系的数量为n(n-1)/2,其中n是路由器的数量,这样,每个路由器要向其他(n-1)个路由器发送问候分组和链路状态更新分组。

为了减少发送分组的数量,OSPF采用

  • 选举指定路由器DR(designated router)和备用的指定路由器BDR(backup designated router)
  • 所有的非DR/BDR只与DR/BDR建立邻居关系
  • 非DR/BDR之间通过DR/BDR交换信息
  • 若DR出现问题,则有BDR顶替DR

实现DR和BRDR的选举通常是各路由器之间交换一些选举参数,例如路由器优先级,路由器ID,接口IP地址等,然后根据选取规则选出DR和BDR。这与交换机协议选取根交换机类似。 

之前的邻居关系降低为2(n-2)+1,

为了使OSPF能够用于规模很大的网络,OSPF把一个自治系统再划分为若干个更小的范围叫做区域(Area)

主干区域用于连通其他区域,其他区域的标识符不能为0且互不相同,每个区域的规模不应太大,一般不超过200个路由器。划分区域的好处就是把利用洪范法交换链路状态信息的范围局限于每一个区域而不是整个自治系统,减少了网络上的通信量。

  • 若路由器的所有接口都在同个区域内,则成为区域内路由器IR
  • 用于连通其他区域,一个接口用于连接自身所有区域,另一个接口用于连接主干区域,称为区域边界路由器ABR
  • 主干区域内的路由器成为主干路由器BBR
  • 主干区域内专门与本自治系统外的其他自治系统交换路由信息,称为自治系统边界路由器ASBR

(四)边界网关协议BGP的基本工作原理

因特网采用分层次的路由选择协议

内部网关协议IGP(例如路由信息协议RIP或开放最短路径优先OSPF)

  • 设法使分组在一个自治系统内尽可能有效地从源网络传输到目的网络
  • 无需考虑自治系统外部其他方面的策略

外部网关协议EGP(例如边界网关协议BGP)

  • 在不同自治系统内,度量路由的“代价”(距离,带宽,费用等) 可能不同。因此,对于自治系统之间的路由选择,使用“代价”作为度量来寻找最佳路由是不行的。
  • 自治系统之间的路由选择必须考虑相关策略(政治,经济,安全等) 
  • 而并非要寻找一条最佳路由BGP只能是力求寻找一条能够到达目的网络且比较好的路由 (不能兜圈子),

在配置BGP时,每个自治系统的管理员要选择至少一个路由器作为该自治系统的“BGP发言人

不同自治系统的BGP发言人要交换路由信息,首先必须建立TCP连接,端口号为179

  • 在此TCP连接上交换BGP报文以建立BGP会话
  • 利用BGP会话交换路由信息(例如,增加新的路由,或撤销过时的路由,以及报告出错的情况等)
  • 使用TCP连接交换路由信息的两个BGP发言人,彼此称为对方的邻站(neighbor)或对等站(peer)

BGP发言人除了运行BGP外,还必须运行自己所在自治系统所使用的内部网关协议IGP,例如OSPF或RIP

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

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

BGP-4有以下四种报文

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

在BGP协议刚刚运行时,BGP的邻站交换整个BGP路由表。但以后只需要在发生变化时更新有变化的部分。这样做对节省网络带宽和减少路由器的处理开销都有好处。

七、IPv4数据报的首部格式

IP数据报的首部格式由20字节的固定部分最大40字节的可变部分组成。固定部分就是每个IP数据报首部都必须包含的内容。而某些IP数据报的首部除包含固定部分外,还包含一些可选的字段来增加IP数据报的功能。IP数据报的首部常以32个比特为单位进行描述,途中每一行都由32个比特(也就是4个字节)构成,每个小格子称为字段或者域,每个字段或没写字段的组合来表达IP协议的相关功能。

字段说明:

版本: 占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,以字节为单位

第二行的三个字段标识,标志,偏移量共同用于IP数据报分片

标识:占16比特,属于同一个数据报的各分片数据报应该具有相同的标识。

  • IP软件维持一个计数器,每产生一个数据报,计数器值加1,并将此值赋给标识字段。

标志:占3比特,各比特含义如下:

  • DF位: 1表示不允许分片;0表示允许分片
  • MF位:1表示“后面还有分片”;0表示“这是最后一个分片
  • 保留位: 必须为0 

片偏移:占13比特,指出分片数据报的数据载荷部分偏移其在原数据报的位置有多少个单位

  • 片偏移以8个字节为单位 

生存时间TTL:占8比特

  • 最初以秒为单位,最大生存周期为255秒;路由器转发IP数据报时,将IP数据报首部中的该字段的值减去IP数据报在本路由器上所耗费的时间,若不为0就转发,否则就丢弃。
  • 现在以“跳数”为单位,路由器转发IP数据报时,将IP数据报首部中的该字段的值减1,若不为0就转发,否则就丢弃。 
  • 作用:防止IP数据报在网络中永久兜圈。比如当出现了路由环路,IP数据报将在路由环路中兜圈直到TTL的值减少到0时被路由器丢弃!

协议:占8比特,指明IPv4数据报的数据部分是何种协议数据单元常用的一些协议和相应的协议字段值如下

  • 常用的一些协议和相应的协议字段值如下:

首部检验和:占16比特,用来检测首部在传输过程中是否出现差错。比CRC检验码简单,称为因特网检验和,

  • IP数据报每经过一个路由器,路由器都要重新计算首部检验和,因为某些字段(生存时间、标志片偏移等)的取值可能发生变化。
  • 由于IP层本身并不提供可靠传输的服务,并且计算首部校验和是一项耗时的操作,因此在IPv6中路由器不再计算首部校验和,从而更快转发IP数据报。

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

八、网际控制报文协议ICMP

为了更有效地转发IP数据报和提高交付成功的机会,在网际层使用了网际控制报文协议ICMP(Internet Control Message Protocol).

主机或路由器使用ICMP来发送差错报告报文询问报文
ICMP报文被封装在IP数据报中发送

(一)ICMP差错报文

ICMP差错报文有以下五种:

① 终点不可达

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

② 源点抑制

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

③ 时间超过

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

④ 参数问题

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

⑤改变路由(重定向)

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

比如,下图原本的H1-H2的路径是H1-R1-R2-R3-R5-H2,经过R1向H1发送ICMP差错报告改变路由后,路线变为H1-R4-R5-H2

(二)不发送ICMP差错报文的情况 

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

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

(三)ICMP询问报文 

常用的ICMP询问报文有以下两种:

  • 回送请求和回答
    • ICMP回送请求报文是由主机或路由器向一个特定的目的主机发出的询问
    • 收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文
    • 这种询问报文用来测试目的站是否可达及了解其有关状态。
  • 时间戳请求和回答
    • ICMP时间戳请求报文是请某个主机或路由器回答当前的日期和时间
    • 在ICMP时间戳回答报文中有一个32位的字段,其中写入的整数代表从1900年1月1日起到当前时刻一共有多少秒。
    • 这种询问报文用来进行时钟同步和测量时间

 (四)ICMP应用举例

1、分组网间探测PING

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

2、跟踪路由

用来测试IP数据报从源主机到达目的主机要经过哪些路由器

  • Windows版本
    • tracert命令
    • 应用层直接使用网际层ICMP
    • 使用了ICMP回送请求和回答报文以及差错报告报文
  • Unix版本
    • traceroute命令
    • 在运输层使用UDP协议
    • 仅使用ICMP差错报告报文

跟踪路由实现原理

主机每次发送ICMP回送请求报文,其TTL一开始设置为1,然后到达第一个路由后,对比目标IP不是自己,TTL减为0,此时该路由丢弃数据报并给源主机发送ICMP差错报告(时间超过),这样源主机就知道了第一站。接着发送TTL为2的ICMP回送请求报文,以此类推。当发送到目的主机,发送ICMP回送回答,源主机就知道跟踪结束了。

九、虚拟专用网VPN与网络地址转换NAT

(一)虚拟专用网VPN

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

如下:部门A分配的网络为10.1.0.0,部门B分配的网络为10.2.0.0.每个网络间至少要有一个路由器具有真正的因特网IP,与因特网相连。

如下图北京中的10.1.0.3(A)发送数据报给上海中的10.2.0.3(B),A发出的报文(源地址为自己IP,目的地址为B的IP),报文发送到路由R1后,其知道需要发送到另一个网络,因此对数据报进行加密后,加上首部(源地址为路由自己的IP,目的地址为目标网络对外路由的IP),当目标网络的路由收到后,进行解密,然后将报文发送至目的地址。 

如下图所示,同一机构内不同部门的内部网络所构成的虚拟专用网VPN又称为内联网VPN

有时一个机构的VPN需要有某些外部机构(通常就是合作伙伴)参加进来。这样的VPN就称为外联网VPN

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

(二)网络地址转换NAT

虽然因特网采用了无分类编址方式来减缓IPv4地址空间耗尽的速度,但由于因特网用户数目的激增,特别是大量小型办公室网络和家庭网络接入因特网的需求不断增加,IPv4地址空间即将面临耗尽的危险仍然没有被解除。
1994年提出了一种网络地址转换NAT的方法再次缓解了IPv4地址空间即将耗尽的问题
NAT能使大量使用内部专用地址的专用网络用户共享少量外部全球地址来访问因特网上的主机和资源 

应用实例:内部网络192.168.0.2想要发送数据报给因特网中的具备真实IP的主机218.75.230.30,该如何?

使用NAT路由器,内网中的主机发送的数据报到达NAT路由器,会被分配一个真实IP,会将数据报中的源地址修改,并记录对应关系在路由器的表中,然后转发数据报。 

外网向内网发送IP数据报,经过NAT路由器,查询表中对应关系进行转发。 

该转换方法存在一个问题: 如果NAT路由器具有N个全球IP地址,那么至多只能有N个内网主机能够同时和因特网上的主机通信

由于绝大多数的网络应用都是使用运输层协议TCP或UDP来传送数据,因此可以利用运输层的端口号和IP地址一起进行转换。这样,用一个全球IP地址就可以使多个拥有本地地址的主机同时和因特网上的主机进行通信。这种将端口号和IP地址一起进行转换的技术叫作网络地址与端口号转换NAPT(Network Address and Port Translation)。

(三)问题探究 

那么。如果外网首先向内网的某台主机发起通信,可以吗?不可行,此时NAT路由器的表中没有对应关系,无法转发

对于一些P2P网络应用,需要外网主机主动与内网主机进行通信,在通过NAT时会遇到问题,需要网络应用自己使用一些特殊的NAT穿越技术来解决问题。
另外,由于NAT对外网屏蔽了内网主机的网络地址,能为内网的主机提供一定的安全保护。

猜你喜欢

转载自blog.csdn.net/m0_62946761/article/details/131486857