《计算机网络》学习笔记(3)——网络层

一:网络层的概念

网络层提供的服务

1:淘汰的连接方式——虚电路服务:
电信网

使用昂贵的程控交换机,用面向连接的通信方式,使电信网络能够向用户(实际上就是电话机)提供可靠传输的服务。

互联网
  1. 当两个计算机进行通信时,也应当先建立连接(但在分组交换中是建立一条虚电路),以保证双方通信所需的一切网络资源。
  2. 然后双方就沿着己建立的虚电路发送分组。这样的分组的首部不需要填写完整的目的主机地址,而只需要填写这条虚电路的编号,减少了分组的开销。
  3. 这种通信方式如果再使用可靠传输的网络协议,就可使所发送的分组无差错按序到达终点,当然也不丢失、不重复。在通信结束后要释放建立的虚电路。
2:主流的无连接方式——数据报服务:

网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。

  1. 网络在发送分组时不需要先建立连接。每一个分组(也就是IP数据报)独立发送,与其前后的分组无关(不进行编号)。
  2. 网络层不提供服务质量的承诺。也就是说,所传送的分组可能出错、丢失、重复和失序(即不按序到达终点)。
  3. 网络层不保证分组交付的时限。
  4. 由于传输网络不提供端到端的可靠传输服务,这就使网络中的路由器可以做得比较简单,而且价格低廉(与电信网的交换机相比较)。如果主机(即端系统)中的进程之间的通信需要是可靠的,那么就由网络的主机中的运输层负责(包括差错处理、流量控制等)。
虚电路服务数据报服务
连接可靠性由网络层保证由用户主机保证
连接建立必须不需要
连接终点地址分组使用短的虚电路号分组有完整的地址
分组转发同一条虚电路的分组按照同一个路由转发分组独立选择转发
转发结点故障整条虚电路无法工作可能丢失分组
分组顺序有序无序
差错处理和流量控制网络 / 用户主机 负责用户主机负责

二:网际协议——IP

与IP协议配套使用的还有三个协议:

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

1:IP网——虚拟互联网络

1:将网络互相连接起来要使用一些中间设备。

  • 转发器(物理层)
  • 网桥 / 桥接器 (数据链路层)
  • 路由器(网络层)
  • 网关(网络层以上)

2:在网络层(即IP层)采用了标准化协议。

可以把互连以后的计算机网络看成一个虚拟互连网络,所谓虚拟互连网络也就是逻辑互连网络。
虽然是互连起来的各种物理网络的异构性是客观存在的,但是我们利用IP协议就可以使这些性能各异的网络在网络层上看起来好像是一个统一的网络。

每个计算机通过使用IP协议,利用路由器转发分组,连接另一个计算机。

2:IP地址

(1):定义

IP地址就是给因特网上的每一个主机(或路由器)的每一个接口分配一个在全世界范围是唯一的32位的标识符。IP地址并不仅仅指明一个主机,而是还指明了主机所连接到的网络。

(2):编址方法
一:分类的IP地址

将IP地址划分为若干个固定类,每一类地址都由两个固定长度的字段组成。

  1. 第一个字段是网络号(net-id),它标志主机(或路由器)所连接到的网络。一个网络号在整个因特网范围内必须是唯一的。
  2. 第二个字段是主机号(host-id),它标志该主机(或路由器)。一个主机号在它前面的网络号所指明的网络范围内必须是唯一的。

记为:IP地址 ::= { 网络号 , 主机号 }

表示:

  1. 把32位的IP地址中的每8位插入一个空格(但在机器中并没有这样的空格)。
  2. 用其等效的十进制数字表示,并且在这些数字之间加上一个点。这就叫做点分十进制记法。

特点:

  1. IP地址是一种分等级的地址结构。IP地址管理机构在分配IP地址时只分配网络号(第一级),而剩下的主机号(第二级)则由得到该网络号的单位自行分配。这样就方便了 IP地址的管理。路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号),这样就可以使路由表中的项目数大幅度减少,从而减小了路由表所占的存储空间以及查找路由表的时间。
  2. IP地址是标志一个主机(或路由器)和一条链路的接口。当一个主机同时连接到两个网络上时,该主机就必须同时具有两个相应的IP地址,其网络号必须是不同的。这种主机称为多归属主机。
  3. 一个网络是指具有相同网络号net-id的主机的集合,因此,用转发器或网桥连接起来的若干个局域网仍为一个网络,因为这些局域网都具有同样的网络号。具有不同网络号的局域网必须使用路由器进行互连。
  4. 在IP地址中,所有分配到网络号的网络都是平等的,因特网同等对待每一个IP地址。

分类:

类别类别位网络号主机号
A类18位24位
B类1016位16位
C类11024位8位
D类1110多播地址
E类1111保留

特殊IP地址

网络号主机号源地址目的地址原因
00×表示本网络的本主机,用作源地址,获取了IP后不再使用
0host-id×表示本网络的某个主机,只作为源地址
11×只能在本网络广播,只作为目的地址,路由器不会转发
net-id1×只能在对某个网络定向广播,只作为目的地址
net-id0××标识一个网络
127非全0全1本地软件做环回测试

在这里插入图片描述

(1):A类地址(有231个,占有整个IP地址空间的50%,0-127)

1: 网络号字段。占1字节,只有7位可供使用(第一位已固定),但可指派126个(即27- 2 )。
第一,网络号字段为全0的IP地址是个保留地址,意思是“本网络”。
第二,网络号为127 (即01111111)保留作为本地软件环回测试本主机的进程之间的通信 之用。

2:主机号字段。占3字节,可指派16777214个(即224-2)。
第一,全0的主机号字段表示该IP地址是“本主机”所连接到的单个网络地址。
第二,全1的主机号字段表示该网络上的所有主机。

(2):B类地址(有230个,占整个IP地址空间的25%,128-191)

1:网络号字段。占2字节,只有14位可供使用(有两位已固定),但可指派16383个(即214-1)。
因为B类网络地址128.0.0.0是不指派的,而可以指派的B类最小网络地址是128.1.0.0
2:主机号字段。占2字节,可指派65534个(即216-2)。
因为要扣除全0和全1的主机号。

(3):C类地址(有229个,占整个IP地址空间的12.5%,192-223)

1:网络号字段。占3字节,只有21位可供使用(有三位已固定),但可指派2097151个(即221-1)。
因为B类网络地址192.0.0.0是不指派的,而可以指派的B类最小网络地址是192.0.1.0
2:主机号字段。占1字节,可指派254个(即28-2)。
因为要扣除全0和全1的主机号。

(4):D类地址(224-239)
(5):E类地址(240-255)
二:子网的划分
(1):定义

在IP地址中又增加了一个“子网号字段”,使两级IP地址变成为三级IP地址,

解决以下缺点:

  1. IP地址空间的利用率有时很低。
  2. 给每一个物理网络分配一个网络号会使路由表变得太大因而使网络性能变坏。
  3. 两级IP地址不够灵活。
(2):划分方法

一个拥有许多物理网络的单位,可将所属的物理网络划分为若干个子网:从网络的主机号借用若干位作为子网号subnet-id,主机号相应减少了同样的位数。

于是两级IP地址在本单位内部就变为三级IP地址:网络号、子网号和主机号。

记为:IP地址::={ 网络号,子网号,主机号}

若subnet-id有n位,则最大共有 2n-2个子网数,每个子网最多有216-n-2个主机
若使用较少位数的子网号,则每一个子网上可连接的主机数就较多。
反之,若使用较多位数的子网号,则子网的数目较多,子网上可连接的主机数较少。

(3):使用子网掩码接收
  1. 根据IP数据报的目的网络号找到连接在本单位网络上的路由器。
  2. 按目的网络号和子网号即子网掩码找到目的子网,把IP数据报交付目的主机。

IP地址:本机的两级IP地址结构的网络号+主机号
子网掩码(三级结构的IP地址):
本机的两级IP地址结构的网络号+子网号 = 本机的三级IP地址结构的网络号。
本机的三级IP地址结构的网络号+主机号 = 子网掩码。

子网掩码的特点:

  1. 把三级IP地址的子网掩码和收到的数据报的目的IP地址逐位相“与” (AND)可以得出所要找的子网的网络地址。
  2. 如果一个网络不划分子网, 那么该网络的子网掩码就使用默认子网掩码。默认子网掩码中1的位置和IP地址中的网络号字正好相对应。因此,若用默认子网掩码和某个不划分子网的IP地址逐位相“与” (AND),就应当能够得出该IP地址的网络地址来。这样做可以不用查找该地址的类别位就能知道这是哪一类的IP地址。
地址类别默认子网掩码
A255.0.0.0
B255.255.0.0
C255.255.255.0
  1. 子网掩码是一个网络或一个子网的重要属性。路由器在和相邻路由器交换路由信息时,必须把自己所在网络(或子网)的子网掩码告诉相邻路由器。在路由器的路由表中包含目的网络的地址和该网络的子网掩码。

划分子网个数=2子网号位数(子网位数即子网掩码与默认子网掩码的差值)

三:构成超网——无分类编址CIDR
(1):定义

CIDP是无分类的两级编址,前面的部分是“网络前缀” ,用来指明网络,后面的部分则用来指明主机。网络前缀越短,其地址块所包含的地址数就越多。

记为:

  • IP地址::={ 网络前缀 ,主机号} / 前缀位数
  • IP地址::= 非零数 / 前缀位数 (中低位连续的0省略)
  • IP地址::= 网络前缀 * (中低位连续的0任意)
(2):使用地址编码获取CIDR地址块信息

地址掩码由一串1和一串0组成,而1的个数就是网络前缀的长度。也可继续称为子网掩码

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

  • CIDR地址块仍然可以在本单位内根据需要自己划分出一些子网。
  • CIDR地址块几乎包含了多个C类地址,是一个C类地址的2n倍,n是整数。(28个地址数=1个C类)
  • 可以更加有效地分配IPv4的地址空间,可根据客户的需要分配适当大小的CIDR地址块。

通过地址掩码和网络前缀位a数获取CIDR地址块的信息:

1:IP地址数:2主机号位数=32-a
2:地址块最小值/最大值:

  1. 找出地址掩码中1和0的交界处发生在地址中的第X个字节,将X转化为二进制XX。
  2. 对XX取其前(a-(X-1)×8)位
  3. 把后面的位数置0再把后面的位数置0,即为最小值。
  4. 把后面的位数置0再把后面的位数置1,即为最大值。
(3):路由聚合

在路由表中利用CIDR地址块来查找目的网络,使得路由表中的一个项目可以表示原来传 统分类地址的很多个路由。
路由聚合有利于减少路由器之间的路由选择信息的交换,提高了整个因特网的性能。

选择路由:最长前缀匹配
应当从匹配结果中选择具有最长网络前缀的路由。因为网络前缀越长,其地址块就越小,路由就越具体。

加快匹配:使用二叉线索查找路由表
-IP地址中从左到右的比特值决定了从根节点逐层向下层延伸的路径,而二叉线索中的各个路径就代表路由表中存放的各个地址,二叉线索中的每一个叶节点包含了所对应的网络前缀和子网掩码。

(3):IP地址与硬件地址
区别
  • 物理地址(MAC地址):数据链路层和物理层使用的地址。在MAC帧的首部。
    经过路由器的转发时,MAC帧首部中的源地址和目的地址要发生变化。
  • 逻辑地址(IP地址):网络层和以上各层使用的地址,是一种逻辑地址。在IP数据报的首部。
    虽然IP数据报要经过路由器的转发,但在它的首部中的源地址和目的地址不会变化。
    路由器的IP地址并不出现在IP数据报的首部中。
联系
  • 在发送数据时,使用IP地址的IP数据报一旦交给了数据链路层,就被封装成MAC帧了。MAC帧在传送时使用的源地址和目的地址都是硬件地址,这两个硬件地址都写在MAC帧的首部中。
  • 主机或路由器接收MAC帧时,其根据是MAC帧首部中的硬件地址。只有在剥去MAC帧的首部和尾部后把MAC层的数据上交给网络层后,网络层才能在IP数据报的首部中找到源IP地址和目的IP地址。

3:IP数据报

一个IP数据报由首部和数据两部分组成。

(1)首部的固定部分

在这里插入图片描述

  1. 版本:占4位,指IP协议的版本。(目前是IPv 4)
  2. 首部长度:占4位,使用的单位是 “32字长 / 4字节” ,可表示的最小十进制数值是5(5×4=20字节),最大十进制数值是15(15×4=60字节)。
  3. 区分服务:占8位,用来获得更好的服务。
  4. 总长度:占16位,总长度指首部和数据之和的长度,单位为字节。(最大长度为216- 1 = 65535字节)不能超过数据链路层所规定的MTU值,否则需要进行分片处理。
  5. 标识:占16位,使得分片后的各数据报片最后能正确地重装成为原来的数据报
  6. 标志:占3位,最低位记为MF,MF = 0表示这已是若干数据报片中的最后一个;中间的一位记为DF,当DF = 0时才允许分片。
  7. 片偏移:占13位,以8个字节为偏移单位。在较长的分组在分片后,表示某片在原分组中的相对位置。
  8. 生存时间:占8位,表明是数据报在网络中的寿命,指明数据报在因特网中至多可经过多少个路由器。单位为跳数,路由器在转发数据报之前就把TTL值减1,若TTL值减小到0,就丢弃这个数据报。(若TTL=1,则数据报只能在本局域网中传送)
  9. 协议:占8位,协议字段指出此数据报携带的数据是使用何种协议,以便使目的主机的IP层知道应将数据部分上交给哪个处理过程。
  10. 首部检验和:占16位,这个字段只检验数据报的首部,但不包括数据部分。在发送方,先把IP数据报首部划分为许多16位字的序列,并把检验和字段置0。用反码算术运算把所有16位字相加后,将得到的和的反码写入检验和字段。接收方收到数据报后,将首部的所有16位字再使用反码算术运算相加一次。将得到的和取反码, 即得出接收方检验和的计算结果。若为0,则正确。
  11. 源地址: 占32位。
  12. 目的地址: 占32位。
(2)首部的可变部分(IPV6少用)

IP首部的可变部分就是一个选项字段。选项字段用来支持排错、测量以及安全等措施,内容很丰富。此字段的长度可变,从1个字节到40个字节不等,取决于所选择的项目。

4:ARP——地址解析协议

目的:己知同一个局域网的主机或路由器的IP地址,需要找出其相应的硬件地址。
定义:在主机ARP高速缓存中应存放一个从IP地址到硬件地址的映射表,并且这个映射表还经常动态更新(新增或超时删除)。ARP把保存在高速缓存中的每一个映射地址项目都设置生存时间。凡超过生存时间的项目就从高速缓存中删除掉。

  • 当主机A要向本局域网上的某个主机B发送IP数据报时,就先在其ARP高速缓存中查看有无主机B的IP地址。如有,就在ARP高速缓存中查出其对应的硬件地址,再把这个硬件地址写入MAC帧,然后通过局域网把该MAC帧发往此硬件地址。
  • 如果没有找到,则ARP进程在本局域网上广播发送一个ARP请求分组。
    在本局域网上的所有主机上运行的ARP进程都收到此ARP请求分组,由于主机B是目标IP地址,便向主机A发送ARP响应分组,写入自己的硬件地址。其余的所有主机则忽略这个请求分组。
    主机A收到主机B的ARP响应分组后,就在其ARP高速缓存中写入主机B的IP地址到硬件地址的映射。
  • 主机A在发送其ARP请求分组时,会把自己的IP地址到硬件地址的映射写入ARP请求分组。当主机B收到A的ARP请求分组时,就把主机A的这一地址映射写入主机B自己的ARP高速缓存中。

5:ICMP——网际控制报文协议

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

种类
  • ICMP差错报告报文
  1. 终点不可达。路由器或主机不能交付数据报
  2. 源点抑制。 路由器或主机由于拥塞而丢弃数据报
  3. 时间超过。路由器收到生存时间为零的数据报 / 终点在预先规定的时间内不能收到一个数据报的全部数据报片
  4. 参数问题。路由器或目的主机收到的数据报的首部中有的字段的值不正确
  5. 改变路由(重定向)。
  • ICMP询问报文。
  1. 回送请求和回答。来测试目的站是否可达以及了解其有关状态
  2. 时间戳请求和回答。进行时钟同步和测量时间

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

  • ICMP差错报告报文
  • 第一个分片的数据报片的所有后续数据报片
  • 具有多播地址的数据报
  • 具有特殊地址的数据报
格式
  • 前4个字节是统一的格式,共有三个字段:类型、代码、检验和。
    类型:包括差错报告报文和询问报文。
    代码字段:进一步区分某种类型中的几种不同的情况。
    检验和:用来检验整个ICMP报文。
  • 接着的4个字节的内容与ICMP的类型有关
  • 数据字段,其长度取决于ICMP的类型。(把IP数据报的首部和数据字段的前8个字节提出来)
应用:
  1. 分组网间探测PING:用来测试两个主机之间的连通性。
    (使用了 ICMP回送请求与回送回答报文)
  2. traceroute:跟踪一个分组从源点到终点的路径。
    (使用了ICMP发送时间超过的差错报文和终点不可达的差错报文)

6:IGMP——网际组管理协议

与单播相比,在一对多的通信中,IP多播可大大节约网络资源。IP多播使用D类
IP地址。IP多播需要使用网际组管理协议IGMP和多播路由选择协议。

7:IP的工作——转发分组

特点:
  • IP数据报最终一定可以找到目的主机所在目的网络上的路由器(可能要通过多次的
    间接交付,只有到达最后一个路由器时,才试图向目的主机进行直接交付)。
  • 在互联网上转发分组时,从一个路由器转发到下一个路由器。(按主机所在的网络地址和下一跳的地址来制作路由表)
流程:
一:分类的IP地址
  1. 当路由器收到一个待转发的数据报并获取目的主机IP地址X,若X就是与此路由器直接相连的某个网络地址,则进行直接交付,不需要再经过其他的路由器,直接把数据报交付目的主机(使用ARP把目的主机地址X转换为具体的硬件地址,把数据报封装为MAC帧,再发送此帧);否则就是间接交付。
  2. 判断路由表中有无目的地址为X的特定主机路由,再判断路由表中有无到达网络X的路由,若有,则把数据报传送给路由表中所指明的下一跳路由器。
  3. 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器。
  4. 报告转发分组出错。

路由器选择方式:

  • 一般情况:基于目的主机所在的网络选择路由。
  • 特定主机路由:对特定的目的主机指明一个路由。
  • 默认路由:在一个网络只有很少的对外连接时使用。
二:划分子网

子网掩码转发分组:

  1. 路由器收到一个待转发的数据报并获取目的主机IP地址X
  2. 对路由器直接相连的网络逐个进行检查:用各网络的子网掩码和X逐位相“与”(AND操作),看结果是否和相应的网络地址匹配。若匹配则进行直接交付,不需要再经过其他的路由器,直接把数据报交付目的主机(使用ARP把目的主机地址X转换为具体的硬件地址,把数据报封装为MAC帧,再发送此帧);否则就是间接交付。
  3. 判断路由表中有无目的地址为X的特定主机路由,再用路由表中的每一行的子网掩码和X逐位相“与”(AND操作),看其结果与无到达网络X的路由是否相匹配,若有,则把数据报传送给路由表中所指明的下一跳路由器。
  4. 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器。
  5. 报告转发分组出错。
三:构成超网
  1. 从二叉线索的根节点自顶向下寻找与网络前缀匹配的结点。
  2. 当搜索到一个叶节点时,就必须将寻找匹配的目的地址和该叶节点的子网掩码进行逐位“与”运算,看结果是否与对应的网络前缀相匹配。若匹配,就按下一跳的接口转发该分组。否则,就丢弃该分组。

8:路由的选择

一:选择策略
  • 静态路由选择也叫做非自适应路由选择,其特点是简单和开销较小,但不能及时适应网络状态的变化。对于很简单的小网络,完全可以采用静态路由选择,用人工配置每一条路由。
  • 动态路由选择也叫做自适应路由选择,其特点是能较好地适应网络状态的变化,但实现起来较为复杂,开销也比较大。因此,动态路由选择适用于较复杂的大网络。
二:分层次的路由选择协议

因特网将整个互联网划分为许多小的自治系统AS:在单一的技术管理下的一组路由器。

这些路由器使用一种AS 内部的路由选择协议和共同的度量 ,以确定分组在该AS内的路由;同时还使用一种AS 之间的路由选择协议 ,用以确定分组在AS之间的路由,但是一个AS对其他AS表现出的是一个 单一的和一致的路由选择策略

自治系统之间的路由选择也叫做域间路由选择,而在自治系统内部的路由选择叫做域内路由选择。

  • 内部网关协议IGP:在一个自治系统内部使用的路由选择协议,如RIP和OSPF。
  • 外部网关协议EGP:源主机和目的主机处在不同的自治系统中,如BGP-4。
内部网关协议RIP——路由信息协议
定义

RIP是一种分布式的基于距离向量的路由选择协议,是因特网的标准协议。
最大优点就是简单,只适用于小型互联网。
最大缺点是好消息传播得快,而坏消息传播得慢。网络出故障的传播时间往往需要较长的时间。

要求

它要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离向量,并
不断更新其路由表,使得从每一个路由器到每一个目的网络的路由都是最短的。所有的路由器最终都拥有了整个自治系统的全局路由信息。

“距离向量” / 跳数的定义:

  • 从一路由器到直接连接的网络的距离定义为1。
  • 从一路由器到非直接连接的网络的距离定义为所经过的路由器数加1。

距离向量算法:

  1. 对地址为X的相邻路由器发来的RIP报文,先修改此报文中的所有项目:把“下一跳”字段中的地址都改为X,并把所有的“距离”字段的值加1,每一个项目都有三个关键数据,即:到目的网络N,距离是d,下一跳路由器是X。
  2. 若原来的路由表中没有目的网络N,则把该项目添加到路由表中。否则,若下一跳路由器地址也是X,则把收到的项目替换原路由表中的项目,否则,若收到的项目中的距离d小于路由表中的距离,则进行对X和d更新。
  3. 若3分钟还没有收到相邻路由器的更新路由表,则把此相邻路由器记为不可达的路
    由器,即把距离置为16。
  4. 返回。

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

RIP会选择一条具有最少路由器的路由。

特点
  • 仅和相邻路由器交换信息
  • 路由器交换的信息是当前本路由器所知道的全部信息,即自己的路由表(距离+下一跳地址)。
  • 按固定的时间间隔交换路由信息
报文

RIP报文由首部和路由部分组成。使用运输层的用户数据报UDP进行传送

  • 首部:占4个字节。包括命令、版本、必为0三个字段。
    命令:指出报文的意义。
    版本:指出报文的版本。
    必为0:为了对其字节
  • 路由部分:由若干个路由信息组成,每个路由信息需要用20个字节,最多可包括25个路由。包括地址族标识符、路由标记、某个网络地址、该网络的子网掩码、下一跳路由器地址以及到此网络的距离。
    地址族标识符 / 地址类别:标志使用的地址协议(可能不是TCP/IP)
    路由标记:填入自治系统号ASN
    如果要使用RIP的鉴别功能,则将第一个路由信息的位置用作鉴别(地址族标识符全为1,路由标记写入鉴别的类型)
内部网关协议OSPF——开放最短路径优先
定义

OSPF是使用分布式的链路状态协议。
最大优点是更新过程收敛得快,用于规模很大的网络。

要求

当一个路由器的链路状态发生变化时,向本自治系统中所有路由器发送信息。
洪泛法:路由器向所有相邻的路由器发送 与本路由器相邻的所有路由器 的链路状态。而每一个相邻路由器又再将此信息发往其所有的相邻路由器(但不再发送给刚刚发来信息的那个路由器)。这样,最终整个区域中所有的路由器都得到了这个信息的一个副本。

链路状态:本路由器都和哪些路由器相邻,以及该链路的“度量”(费用、距离、时延、带宽等)。

OSPF协议对多点接入的局域网采用了指定的路由器的方法,指定的路由器代表该局域网上所有的链路向连接到该网络上的各路由器发送状态信息。

特点
  • 所有的路由器最终都能建立一个链路状态数据库,即全网的拓扑结构图。这个拓扑结构图在全网范围内是一致的(这称为链路状态数据库的同步)。
    每一个路由器都可以通过链路状态数据库中的数据,构造出自己的路由表。
  • OSPF允许管理员给每条路由指派不同的代价。OSPF对于不同类型的业务可计算出不同的路由。
  • 如果到同一个目的网络有多条相同代价的路径,那么可以将通信量分配给这几条路
    径。这叫作多路径间的负载平衡。
  • 所有在OSPF路由器之间交换的分组(例如,链路状态更新分组)都具有鉴别的功
    能,因而保证了仅在可信赖的路由器之间交换链路状态信息。
  • OSPF支持可变长度的子网划分和无分类的编址CIDR。
  • OSPF让每一个链路状态都带上一个32位的序号,序号越大状态就越新。
分层

OSPF使用层次结构的区域划分,将一个自治系统再划分为若干个更小的范围,减少了整个网络上的通信量。在一个区域内部的路由器只知道本区域的完整网络拓扑,而不知道其他区域的网络拓扑的情况。

在上层的区域叫作主干区域,主干区域的标识符规定为0.0.0.0。主干区域使用路由器连通其他在下层的区域。

  • 主干路由器:在主干区域内的路由器。
  • 区域边界路由器:概况从其他区域来的信息,每一个区域至少应当有一个。
  • 自治系统边界路由器:和本自治系统外的其他自治系统交换路由信息。
报文

报文由首部和OSRF分组构成,OSPF不用UDP而是直接用IP数据报传送。

  • 首部:固定24字节,由以下部分组成。
    版本:当前OSRF的版本
    类型:可以是五种类型分组中的一种
    分组长度:包括OSPF首部在内的分组长度,以字节为单位。
    路由器标识符: 标志发送该分组的路由器的接口的IP地址。
    区域标识符 :分组属于的区域的标识符。
    检验和:用来检测分组中的差错。
    鉴别类型:目前只有两种。0 (不用)和1 (口令)。
    鉴别:鉴别类型为0时就填入0。鉴别类型为1则填入8个字符的口令。
  • OSRF分组类型:
  1. 类型1:问候分组,用来发现和维持邻站的可达性。每两个相邻路由器每隔10秒钟要交换一次。
  2. 类型2:数据库描述分组,向邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息。
  3. 类型3,链路状态请求分组,向对方请求发送某些链路状态项目的详细信息。
  4. 类型4:链路状态更新分组,用洪泛法对全网更新链路状态。路由器使用这种分组将其链路状态通知给邻站。
  5. 类型5:链路状态确认分组,对链路更新分组的确认。

当一个路由器刚开始工作时,它只能通过问候分组得知它有哪些相邻的路由器在工作,以及将数据发往相邻路由器所需的“代价”。
接下来,每一个路由器用数据库描述分组和相邻路由器交换本数据库中已有的链路状态 摘要信息。
然后,路由器就使用链路状态请求分组,向对方请求发送自己所缺少的某些链路状态项目的详细信息。
当有一个路由器的链路状态发生变化,该路由器就要使用链路状态更新分组,用洪泛法向全网更新链路状态,其他路由器使用链路状态确认分组,确定更新。

外部网关协议BGP——寻求较好路径
定义

BGP采用了基于路径向量的路由选择协议。

配置

1:选择发言人
在配置BGP时,每一个自治系统的管理员要选择至少一个路由器作为该自治系统的“BGP发言人” 。 一般说来,两个BGP发言人都是通过一个共享网络连接在一起的,而BGP发言人往往就是BGP边界路由器,但也可以不是BGP边界路由器。

2:建立会话
一个BGP发言人与其他AS的BGP发言人彼此成为对方的邻站或对等站。
就要先建立TCP连接,然后在此连接上交换BGP报文,以建立BGP会话,利用BGP会话交换路由信息和网络可达性(要到达某个网络所要经过的一系列自治系统)

3:选择路由
当BGP发言人互相交换了网络可达性的信息后,各BGP发言人就根据所采用的策略从收到的路由信息中找出到达各自治系统的较好路由。

BGP支持无分类域间路由选择CIDR,因此BGP的路由表也就应当包括目的网络前缀、下一跳路由器,以及到达该目的网络所要经过的自治系统序列。

报文

格式:由通用首部和主体两部分组成。

  • 首部:其长度为19字节
    标记字段:来鉴别收到的BGP报文。(不使用鉴别时,标记字段要置为全1)
    长度字段:指出包括通用首部在内的整个BGP报文以字节为单位的长度,最小值是19,最大值是4096。
    类型字段:指出报文类型。
  • 主体

分类:

  • OPEN(打开)报文,用来与相邻的另一个BGP发言人建立关系,使通信初始化。
    有6个字段,即版本、本自治系统号、保持时间、BGP标识符(通常就是该路由器的IP地址)、可选参数长度和可选参数。
  • UPDATE(更新)报文,用来通告某一路由的信息,以及列出要撤消的多条路由。
    有5个字段,即不可行路由长度(指明下一个字段的长度)、撤消的路由(列出所有要撤消的路由)、路径属性总长度(指明下一个字段的长度)、路径属性(定义在这个报文中增加的路径的属性)和网络层可达性信息NLRI(定义发出此报文的网络,包括网络前缀的位数、IP地址前缀)
  • KEEPALIVE (保活)报文,用来周期性地证实邻站的连通性。
    无字段
  • NOTIFICATION (通知)报文,用来发送检测到的差错。
    有3个字段,即差错代码、差错子代码和差错数据(给出有关差错的诊断信息)。
  1. 首先,BGP发言人向邻站进行商谈,发送 OPEN报文 。如果邻站接受这种邻站关系,就用 KEEPALIVE报文 响应。这样,两个BGP发言人的邻站关系就建立了。
  2. 两个BGP发言人彼此要周期性地交换 KEEPALIVE报文,继续维持这种关系。
  3. BGP发言人可以用 UPDATE报文 撤消它以前曾经通知过的路由,也可以宣布增加新的路由。撤消路由可以一次撤消许多条,但增加新路由时,每个更新报文只能增加一条。

9:路由的构成

定义

路由器是一种具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组。
从路由器某个输入端口收到的分组,按照分组要去的目的地(即目的网络),把该分组从路由器的某个合适的输出端口转发给下一跳路由器。下一跳路由器也按照这种方法处理分组,直到该分组到达终点为止。

结构
(1):路由选择部分(路由选择协议+路由表)

路由选择部分也叫做控制部分,其核心构件是路由选择处理机。
路由选择处理机的任务是根据所选定的路由选择协议构造出路由表,同时经常或定期地和相邻路由器交换路由信息而不断地更新和维护路由表。

(2):分组转发部分(交换结构+输入端口+输出端口)

1:交换结构
又称为交换组织,它的作用就是根据转发表对分组进行处理。将某个输入端口进入的分组从一个合适的输出端口转发出去。交换结构本身就是一种网络,但这种网络完全包含在路由器之中,因此交换结构可看成是“在路由器中的网络”。
分类:

  • 通过存储器交换:路由器就是计算机,用计算机的CPU作为路由选择处理机。当路由器的某个输入端口收到一个分组时,就用中断方式通知路由选择处理机。然后查表,复制分组到存储器的缓存。
  • 通过总线交换:数据报从输入端口通过共享的总线直接传送到合适的输出端口,而不需要路由选择处理机的干预,但是在同一时间只能有一个分组在总线上传送。
  • 通过纵横交换结构交换:当输入端口收到一个分组时,就将它发送到与该输入端口相连的水平总线上。若通向输出端口的垂直总线是空闲的,则在这个结点将垂直总线与水平总线接通,然后将该分组转发到这个输出端口。

2:转发表
转发表的每一行必须包含 从目的网络到输出端口的映射和某些MAC地址信息的映射

3:输入和输出端口
里面包含物理层、数据链路层和网络层的处理模块。

(1)输入端口:
输入端口接收分组,进行查找和转发。

  1. 物理层进行比特的接收。
  2. 数据链路层则按照链路层协议接收传送分组的帧。在把帧的首部和尾部剥去后,分组就被送入网络层的处理模块。
  3. 网络层判断分组:
    在网络层的处理模块中设有一个缓冲区,实际上它就是一个队列。当一个分组正在查找转发表时,后面又紧跟着从这个输入端口收到另一个分组。这个后到的分组就必须在队列中排队等待,因而产生了一定的时延。
  • 若接收到的分组是路由器之间交换路由信息的分组(如RIP或OSPF分组等),则把这种分组送交路由器的路由选择部分中的路由选择处理机。
  • 若接收到的是数据分组,则按照分组首部中的目的地址查找转发表,根据得出的结果,分组就经过交换结构到达合适的输出端口。

另外,为了使输入端口的交换功能分散化,往往把复制的转发表放在每一个输入端口中。路由选择处理机负责对各转发表的副本进行更新。

(2)输出端口:
输出端口从交换结构接收分组,然后把它们发送到路由器外面的线路上。

  1. 在网络层的处理模块中设有一个缓冲区,实际上它就是一个队列。当交换结构传送过来的分组的速率超过输出链路的发送速率时,来不及发送的分组就必须暂时存放在这个队列中。
  2. 数据链路层处理模块把分组加上链路层的首部和尾部。
  3. 物理层后发送到外部线路。

10:专用网

一:VPN——虚拟专用网
(1)专用IP地址 / 可重用地址:只能用作本地地址而不能用作全球地址。

用于机构内的主机之间进行通信,且不需要申请全球唯一的IP地址。

  • 10.0.0.0 到 10.255.255.255 (或记为 10.0.0.0/8,它又称为 24 位块)
  • 172.16.0.0 到 172.31.255.255 (或记为 172.16.0.0/12,它又称为 20 位块)
  • 192.168.0.0 到 192.168.255.255 (或记为 192.168.0.0/16,它又称为 16 位块)
(2)虚拟专用网:各专用网之间的通信载体

用于机构内分布在不同地点的专用网之间利用公用的因特网进行通信。
每一个地点至少要有一个路由器具有合法的全球IP地址,同时还可以对数据加密,重新加上数据报的首部,封装成为在因特网上发送的外部数据报。

分类:

  • 内联网:内部网络所构成的虚拟专用网VPN又称为内联网。
  • 外联网:某些外部机构(通常就是合作伙伴)参加进来的VPN。
  • 远程接入VPN:远程通过拨号接入因特网,建立VPN隧道。
二:NAT——网络地址转换
(1)NAT路由器

在专用网内部的主机可以通过NAT路由器(装有NAT软件的路由器,至少有一个有效的外部全球IP地址)和因特网上的主机通信。

NAT路由器:NAT路由器收到IP数据报时,通过NAT地址转换表进行IP地址的转换。
(通过NAT路由器的通信必须由专用网内的主机发起)

(2)NAPT——网络地址与端口号转换

使用端口号的NAT:使多个拥有本地地址 + 端口号的主机,通过不同的端口号共用一个NAT路由器上的全球IP地址。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你好!感谢提问。下面是有关 K210 学习笔记五中串口通信的一些内容: 在 K210 开发板上,串口是一种常见的通信接口,用于将数据从一个设备传输到另一个设备。串口通信通常使用 UART (Universal Asynchronous Receiver/Transmitter) 协议。 要在 K210 上进行串口通信,首先需要使用两个引脚:一个用于接收数据(RX),一个用于发送数据(TX)。这些引脚可以通过 GPIO 端口与外部设备连接。 在 K210 的开发环境中,可以使用 MaixPy 或者 Kendryte Standalone SDK 进行串口编程。 在 MaixPy 中,可以使用 `uart` 模块来进行串口通信。例如,要初始化一个串口对象并设置波特率为 115200,可以使用以下代码: ```python from machine import UART uart = UART(UART.UART1, 115200) ``` 然后,可以使用 `uart.write()` 函数发送数据,使用 `uart.read()` 函数接收数据。例如: ```python uart.write("Hello, world!\n") data = uart.read(10) ``` 在 Kendryte Standalone SDK 中,可以使用 `uart.h` 头文件中的函数来进行串口通信。例如,要初始化一个串口对象并设置波特率为 115200,可以使用以下代码: ```c #include "uart.h" uart_init(UART_DEVICE_1, 115200); ``` 然后,可以使用 `uart_send_data()` 函数发送数据,使用 `uart_receive_data()` 函数接收数据。例如: ```c uart_send_data(UART_DEVICE_1, "Hello, world!\n", 14); char buffer[10]; uart_receive_data(UART_DEVICE_1, buffer, 10); ``` 以上是关于 K210 学习笔记五中串口通信的简要介绍。如果你有更具体的问题,请随时提问!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值