计算机网络(四)网络层详解

第四章 网络层与网络互连技术

网络层应该提供什么样的服务呢?有两种观点,一种观点借助电信网的成功经验,由网络负责可靠交付,两端设备功能则可以很简单,通信前先建立虚电路保证双方通信所需要的一切访问资源,再使用可靠的网络协议就可以使所发送的分组无差错、按需到达终点,不丢失,不重复。另一种观点是网络层只向上提供简单灵活的,尽最大努力交付的数据包服务,路由器功能比较简单,价格低廉,每个分组都独立发送,与其前后的分组无关,传送的分组可能丢失、出错、重复和失去,也不保证分组传送的时限,如果出错则由传输层负责。

网际协议IP是TCP/IP协议中最重要的协议之一,与IP协议配套使用的还有4个协议,地址解析协议ARP,网际控制报文协议ICMP,网际组管理协议IGMP和反向地址解析协议RARP,其中RARP用到的很少。

整个TCP/IP协议族呈现沙漏计时器形状,有Everything over IP和 IP over Everything的说法

  • Everything over IP:IP可为各式各样的应用程序提供服务
  • IP over Everything:IP协议可以应用到各式各样的网络上
4.1 分类的IP地址

在IP协议中IP地址是一个十分重要的概念。

IP地址就是给每个互联网网络设备分配一个唯一的32位的标识符,由互联网名字和数字分配机构进行分配。

IP地址经过了三个阶段:

  • 分类的IP地址:最基本的编址方法其标准在1981年通过
  • 子网划分:对最基本编址的改进,其标准在1985年通过
  • 构造超网:这是比较新的无编址构造方法,1993年提出后很快就得到了推广应用

每类地址严格意义上是ABC三类,都有两个固定长度的字段组成,第一个字段是网络号,它标志主机所连接到的网络,另一个字段则是主机号,它标志该主机。网络号和主机号共32位,主机号在高网络范围内是唯一的。

在这里插入图片描述

IP地址共分为ABCDE五类

  • A类地址:网络号占8位,第一位为0,取值范围为1-126,主机号占24位
  • B类地址:网络号占16位,前两位为10,取值范围为128.1-191.255,主机号占16位
  • C类地址:网络号占24位,前三位为110,取值范围为192.0.1-223.255.255,主机号占8位
  • D类地址:前四位为1110,取值范围为224.0.0.0-239.255.255.255,为多播地址,比如网络直播时所有主机的地址都是多播地址
  • E类地址:前四位为1111,取值范围为240.0.0.-255.255.255.255,保留为以后使用

32位二进制的IP地址不容易记忆,为此我们采用点分十进制记法,每8位一组转换为对应的十进制,十进制数之间加点,提高可读性。

根据IP地址的定义我们可以计算出ABC类地址的网络数以及每个网络中的最大主机数。

在这里插入图片描述

  • A类地址最大的可指派网络数为27-2,-2的原因是除去0以及回环地址127,去头去尾,每个网络中的最大主机数为224 -2,减2的原因是全0的主机号表示网络号,全1的主机号表示该网络的广播号

  • B类地址中最大的网络数为214 ,每个网络中最大的主机数为216 -2,减2原因同上。

  • C类地址中最大网络数为221 ,每个网络中的最大主机数为28 -2,减2原因同上。

我们可以看出ABC类每个网络的最大主机数过多,因此就出现了后续的子网划分。

分辨ABC类地址:看第一个十进制数,1-126为A类地址,128-191为B类地址,192-223则为C类地址。

有些特殊的IP地址不分配给设备。

  • 网络号和主机号全0的,源地址可以使用,目的地址不可以使用,它表示在本网络的本主机
  • 网络号为0,主机号正常的,源地址可以使用,目的地址不可以使用,它表示在本网络的某台主机
  • 网络号和主机号全1的地址,源地址不可以使用,目的地址可以使用,它表示只在本网络上进行广播(路由器不会进行转发)
  • 网络号正常,主机号全1的,源地址不可以使用,目的地址可以使用,表示对这个网络上的所有主机进行广播
  • 网络号为127,主机号为非全0或全1的任何书,源地址和目的地址都可以使用,但是它是用来本地软件环回测试的
4.2 ARP

ARP协议能够根据IP地址(网络层)解析出MAC地址(数据链路层)。

网络层及以上使用IP地址,链路层及以下使用MAC地址(硬件地址)

IP地址放在IP数据包的首部,而硬件地址则放在MAC帧的首部。

在这里插入图片描述

主机H1和H2通信,中间经过两台路由器R1和R2,在整个通信过程中IP地址以及MAC地址如表所示

在这里插入图片描述

源IP地址和目的IP地址一直不变,源MAC地址和目的MAC地址一直发生变化,MAC地址是怎么得到的呢?这就要用到ARP协议

地址解析协议ARP:根据IP地址,解析出在数据链路层使用的MAC地址,因此ARP位于IP协议的下面

  • 不管网络层采用什么协议,在实际链路上传送数据帧时,最终必须使用MAC地址。、
  • 每一台主机或路由器都设有一个ARP高速缓存,存储局域网上的各设备IP地址与MAC地址的映射关系

当主机A想要向本局域网上的某个主机B发送IP数据包时,就先在其ARP缓存中查看有无主机B的IP地址。有就将此MAC地址写入帧,将该帧发往此MAC地址,没有就广播发送一个ARP请求分组,收到ARP相应分组后,将映射写入ARP高速缓存,并将MAC地址写入帧,将此帧发往MAC地址。

ARP请求分组(广播方式发送)包括:

  • 发送方MAC地址
  • 发送方IP地址
  • 全0的目标方MAC地址
  • 目标方IP地址

路由器不转发ARP广播,也就是说ARP只解析在同网段上设备的MAC地址,如果目标地址与发送地址不在同一个网段,发送方收到的将是该网段路由器的MAC地址。

ARP响应分组(单播方式发送)包括:

  • 发送方MAC地址
  • 发送方IP地址
  • 目标方MAC地址
  • 目标方IP地址

ARP高速缓存表

  • 发送请求时捎带自己的映射关系
  • 收到请求后存储自己的映射关系
  • 设有生存时间,以及时更新
  • ARP解析是自动进行的,此过程对用户透明

ARP注意事项

  • 当源MAC地址和目的1MAC地址在同一个网络时,直接解析目的设备的MAC地址
  • 不在同一个网络时,ARP解析出源主机的网关的MAC地址,把分组发送给网关(即路由器),网关再把分组转发给下一跳。

在这里插入图片描述

为什么不直接使用MAC地址进行通信?

  • 各式各样的网络使用不同的MAC地址,要使这些网络能够通信必须进行非常复杂的MAC地址转换功能,不现实
  • IP地址能够解决这个复杂的问题。连接到互联网的主机只需要各自拥有唯一的IP地址通信就像连接到同一个网络上那样简单方便,因为解析过程是透明的。

RARP:实现MAC地址到IP地址的转换,除了网上的无盘工作站,通常很少使用,必须设置一个RARP服务器。网管事先将映射关系写入RARP服务器的数据库中,与ARP相同,RARP请求包采用广播方式,响应包采用单播方式。

pc机发送ARP响应时,不需要先收到ARP请求报文,任何一台计算机都可以在局域网上发送自己是IP_A和MAC_A的对应者,因此就出现了ARP攻击。

ARP攻击:

  • ARP欺骗。攻击者向其他主机发出响应,告知了错误的MAC地址,导致ARP表刷新,形成错误的映射关系。
  • ARP流量攻击。利用攻击软件,发送大量ARP的请求和响应,报文中的IP地址和MAC地址均为伪造,随即填入,大量的广播流量会导致网络拥塞。
4.3 IP数据报格式

数据帧包含帧首,数据和帧尾,一个IP数据报由首部和数据两部分组成,没有尾,发送时先发送首部,再发送数据。

首部包括固定部分和可选字段,固定部分的长度为20字节,是所有IP数据包必有的,固定部分的后面是一些可选字段,1-40字节,长度可变,但必须为4字节的整数位,所有可能有填充部分。

在这里插入图片描述

  • 首部的第一个字段是版本号,占4位,指IP协议的版本,目前版本号为4(IPV4)

  • 第二个字段为首部长度,占4位,可表示的最大数值是15(单位是4字节),因此首部长度的最大值是60字节。

  • 区分服务占8位,用来获得更好的服务。只有在使用区分服务时,这个字段才起作用,一般情况下不使用这个字段。

  • 总长度占16位,指首部和数据长度之和,单位为字节,最大长度为65535字节,但是不能超过MTU,否则要分片。

  • 标识占16位,是一个计数器,用来产生IP数据包的标识。

  • 标志占3位,只有前两位由意义。最低位是MF,取值为1表示后面”还有分片“,取值为0表示最后一个分片,中间位是DF,只有DF取0才允许分片

  • 片偏移占13位,指出较长的分组在分片后某片在原分组中的相对位置,以8个字节为单位。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 生存时间占8位,记为TTL,指示数据报在网络中可通过的路由器数的最大值即最大多少跳。假设初始TTL为3,经过一个路由器就会被减1,当TTL为0时这个IP数据报就会被Internet处理掉。

  • 协议占8位,指出此数据包携带的数据使用何种协议,以便目的主机的IP层将数据部分上交给对应的处理过程。

    IP数据包可以封装多种协议PDU,可以是网络层的ICMP,IGMP以及OSPF,也可以是传输层的TCP和UDP,根据协议号进行区分。

  • 首部检验和占16位,只检验数据包的首部,不检验数据部分,不采用CRC而采用简单的计算方法。

  • 源地址和目的地址都是IP地址,各占4字节

  • IP首部的可变部分是一个选项字段,用来支持排错、测量以及安全等措施,内容很丰富,取决于所选择的项目。多个选项拼接,中间无需分隔符,用全0的填充段补齐为4字节的整数倍。增加首部的可变部分是为了增加IP数据报的功能,增加了路由器处理数据包的开销,实际上这些选项很少被使用。

4.4 ICMP

网际控制协议ICMP可以报告IP数据包传输过程中的差错。

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

ICMP报文封装在IP数据报中,但它并不是高层协议,与IP协议都位于网络层。

在这里插入图片描述

ICMP报文的格式:

  • 前4个字节都一样,第一个字段为类型,占1一个字节,第二个字段为代码。占1个字节,第三个字段为检验和占2个字节,后续为ICMP的数据部分,其长度取决于类型

ICMP报文的种类

  • 差错报告报文

在这里插入图片描述

当路由器收到TTL为0的报文时,丢弃此报文,并向原点发送超时报文。

参数问题:收到的数据包首段中的数据出现错误,弃此报文,并向原点发送参数问题报文。

路由发送改变路由报文给源点主机,让主机知道下次应该发送报文给另外的路由器。

在这里插入图片描述

  • ICMP的前8个字节,包括类型,代码,校验和以及后续的四个字节,其次是出错IP报文的20个字节,然后再提取IP报文的后续8个字节,是为了得到传输层传输口或UDP的端口号以及TCP报文的序号以便汇报给上层。
  • 整个ICMP报文作为IP的数据字段装入IP报文中,发送给源点。

并不是所有的出错报文都通知到源点,对于以下几种情况就不再发送

  • ICMP差错报告报文。

  • 第一个分片的数据报片的所有后续数据报片

  • 具有多播地址D类的数据报

  • 具有特殊地址的数据报

  • 询问报文
    在这里插入图片描述

ICMP的应用

  1. 分组网间探测Ping

    用来测试两台主机或者路由器之间的连通性。

    基于ICMP询问报文中的回送请求和回送应答报文。

    是应用层直接使用网络层ICMP的例子,没有通过传输层。

    • ping[-t]target_name:不断向目标主机发送回送请求报文,直到用户中断
    • ping[-n count]target_name:由count指定Ping多少次,缺省值(默认值的计算机术语)为4
    • ping[-l size]target_name:数据包大小,默认为32字节,最大值是65,527
    • ping[-w timeout]target_name:指定超时时间间隔,单位为毫秒,默认为4000毫秒
    • target:指定要ping的远程计算机,可以是域名,也可以是IP地址

    测试本机与新浪邮件服务的连通性,所有参数都采用默认值

在这里插入图片描述

ICMP与IP协议的关系

在这里插入图片描述

192.168.1.10发送请求给192.168.1.20,因为请求报文中无任何实际有意义的数据,通常用abcd等填充,假定标识符为0200,序号为0100,类型值为08,代码为00,校验码为十六进制的4a5c,这些构成ICMP报文,作为IP报文的数据

在这里插入图片描述

IP报文中的协议字段取值为01,表示封装的数据为ICMP报文,源地址为192.168.1.10对应的十六进制c0a8010a,目标IP地址为192.168.1.20对应的十六进制c0a80114。

192.168.1.10向192.168.1.20发送应答报文,报文内容与请求报文基本一致,类型值修改为00,校验值也发生了变化

在这里插入图片描述

IP报文中的目标地址与源地址互换。

  1. Traceroute/Tracert(追踪从源点到终点的路由)

    在Windows中该命令是tracert,UNIX或路由器中为raceroute。利用IP数据包中的TTL字段和ICMP超时差错报告报文,源点发送的第一个UDP报文TTL值为1,到达第一台路由后将其减1,减为0后第一台路由器将此报文丢弃,并向源点发送超时报告报文,这样就得到了第一台路由器的地址,这样一直继续下去得到剩下所有路由器的地址,当最后一个数据包到达目的主机时,数据报的TTL的为1,主机不转发数据报,也不把TTL减一。但是由于IP数据包中封装的是无法正常交付的UDP数据报,使用了非法的端口号,主机须向源主机发送ICMP终点不可达差错报文,我们就得到了目的主机的IP地址,于是我们就得到了从源点到终点的路径。

    • tracert[-d]traget_name:不解析目标主机的名称

    • tracert[-h]traget_name:指定搜索到目标地址的最大跳数,默认30

    • tracert[-j]traget_name:与主机列表一起的松散源路由

    • tracert[-w]traget_name:指定超时时间间隔,默认单位是毫秒,默认5秒

在这里插入图片描述

4.5 划分子网

划分子网的基本思路:从主机号的高位中连续借用若干个子位作为子网号,而主机号也就相应减少了若干个位,这样IP地址就从两级变成了三级。

在这里插入图片描述

从主机中借用几位来划分子网呢?我们使用子网掩码来作为标识。

子网掩码是一个非常重要的概念,网络号和子网号对应的部分取1,主机号对应的部分取0

在这里插入图片描述

(IP地址)AND(子网掩码)=网络地址

子网掩码中掩的作用是把主机号掩掉。

默认子网掩码

如果ABC类地址没有划分,我们就称为默认子网掩码。

在这里插入图片描述

A类默认:8个1和24个0

B类默认:16个1和16个0

C类默认:24个1和8个0

子网划分方法

  • 固定长度子网

    所有子网的子网掩码都是相同的

    B类地址的子网划分

在这里插入图片描述

子网号的位数没有15和16这两种情况。

子网号不能占15位,因为此时主机号只剩下1位,主机号只能取0和1这两种特殊情况,子网号也不能占16位,此时就没有主机号了。

在这里插入图片描述

在这里插入图片描述

不同的子网掩码可能会得到相同的网络地址,但不同的子网掩码的效果是不同的。

等长子网划分方法

  • 确定子网数

  • 根据子网数和获得的IP地址控件确定子网掩码

  • 确定每个子网的网络地址(主机号全0)主机地址范围 广播地址(主机号全1)

  • 为每台主机分配地址

  • 确定范围
    开始的时候子网位数都为0,子网号从0开始往上递增,直至所有的子网位数都为1,计算十进制网络号和广播号时注意后面的主机号全为0或全为1。

在这里插入图片描述

在这里插入图片描述

  • 变长子网(VLSM)

    所有子网的子网掩码不一定相同,产生不同大小的子网,能够高效分配IP地址。

    例题

    假定已经将172.16.0.0/16进行了子网划分,其中国有一个子网为172.16.32.0/20,现欲将该子网继续划分,要求每个网段50台主机。

    解题步骤:确定主机位:2^N-2>=50得到主机位,得到主机号为6位,新子网号为6位。

在这里插入图片描述

虽然划分子网增加了灵活性,减少了地址浪费,但是也减少了能够连接在网络上的主机总数。

4.6 构造超网

虽然划分子网提高了对IP地址的使用,但是还是存在一些问题。

  • B类地址在1994年3月全部分配完毕
  • 主干网上的路由表中的项目数急剧增长
  • 整个IPV4的地址空间最终将全部耗尽

所以采取了一种无分类编址方法,也称为无分类域间路由CIDR,构造超网。

CIDR的特点:

  • 更有效分配IPV4地址
  • 使用网络前缀
  • CIDR地址块

CIDR地址块中的所有网络聚合起来称为路由聚合

聚合后,一条路由可以代表多条,缩小了路由表。

路由聚合有利于减少路由器之间的信息交换,提高了互联网的性能。

路由聚合也称为构造超网

CIDR虽然不使用子网了,但仍然使用”掩码“。

CIDR记法的其他形式

10.0.0.0/10可以简写为10/10,把点分十进制中地位连续的0省略。

网络前缀的后面加一个星号*的表示方法。

如0000101000*,在星号 * 之前是网络前缀,而星号 *表示IP地址中的主机号,可以是任意合法值。

常用到的CIDR地址块

在这里插入图片描述

网络前缀越短,其包含的网络数就越多。

第一个为例:

包含的地址数:2^(32-13),2 ^9/2 ^16=2 ^3个B类地址,2 ^19/2 ^8=2 ^11个C类地址

构造超网

划分子网会使网络前缀变成,构造超网使得网络前缀变短。

在这里插入图片描述

这四个地址,前23位都是相同的,所以聚合时前23位都不变,后9位都设为0,得到聚合后的地址为206.0.68.0/23

使用CIDR时,路由表中的每个项目都由网络前缀和下一跳地址组成,在查找路由表时可能会得到不止一个匹配结果。

我们应当从匹配结果中选择具有最长网络前缀的路由,即最长前缀匹配。

网络前缀越长,其地址块就越小,路由就越具体。

在这里插入图片描述

将目的IP地址和掩码地址转化为二进制,按位相与,结果与目标网络地址相匹配

在这里插入图片描述

两个都比较匹配,应该选择两个匹配地址中更具体的一个,即选择最长前缀的地址。

RFC建议

整个世界被分为四个地区,每个地区拥有一段连续的CIDR地址块,这样就可以大大压缩路由表中的项目数。

然而在CIDR提出之前,IP地址的分配与地理位置并没有建立联系,而且将已分配的IP地址回收分配非常困难,因此此方案并未实际实施。

4.7 路由器

交换机:链路层,只对局域网中的帧进行转发

路由器:网络层,用来连接不同的网络,选择最佳路由,提高通信速度

路由器包含两部分:路由选择和分组转发

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

分组转发由三部分组成:

  • 一组输入端口
  • 一组输出端口
  • 交换结构

从某个输入端口输入转发表,将分组转发表转发到合适的输出端口,从而转发给下一跳路由器。

转发:基于转发表,将IP数据报从端口转发出去,仅涉及一个路由器。

路由选择:按照分布式算法,根据从相邻路由得到网络拓扑的变化情况,动态改变路由并构造完整的路由表。

路由表基于路由选择算法,而转发表基于路由表,二者采用不同的数据结构,一般我们并不区别。

虽然我们说路由器属于网络层的设备,但其实输入输出端口还涉及物理层和链路层。

输入端口从线路的物理层接收到分组,数据链路层剥去帧首和帧尾,将分组送到网络层的队列中排队等待处理。

分组有两种情况:

  • 路由器间的路由信息,将分组送交路由选择控制机,用来更新和维护路由表。
  • 数据分组,按照分组选择中的目的地址查找转发表,经过交换结构最终到达合适的输出端口。

输入端口设有缓冲区,对数据分组进行查找和转发,是路由器中最重要的功能。

在这里插入图片描述

输出端口也设有缓冲区,当分组进入速率大于路由器处理队列速率时,来不及发送的分组就暂存在这个队列中。链路层加上帧首和帧尾,交给物理层后发送到外面的线路。

分组丢弃的原因

  • 路由器中找不到合适的路由
  • 处理速率低,存储空间减为0,缓冲区溢出,丢弃后续分组。

交换结构把数据从一个输入端口转发到某个合适的输出端口,交换结构是交换机的关键构件,常用方式有三种:

  • 通过存储器

在这里插入图片描述

当输入端口收到一个分组时,就用中断的方式通知路由选择处理机将分组从输入端口复制到存储器中,路由选择处理机从分组首部提取目的地址,查找路由表,再将分组复制到合适输出端口的缓存中,实际用的并不多。

  • 通过总线

在这里插入图片描述

数据报通过输入端口通过共享总线直接传送到合适的输出端口,不需要路由选择处理机的干预,因为每一个要转发的分组都要通过这一条总线,因此路由器的转发带宽受总线的限制。

  • 通过网络

在这里插入图片描述

它有2n条总线,可以使n个输入端口和n个输出端口相连,当输入端口收到一个分组时,就将它发送到与该输入端口连接的水平总线上,若通向所要转发的输出端口的垂直总线是空闲的,则在这个结点将水平总线和垂直总线连通,然后将该分组转发到这个输出端口,但若这个垂直总线已被占用,则后到达的分组就会被阻塞,必须在输入端口排队,后来采用ASIC硬件来实现,并采用了共享内存的方式解决了内部交换的问题,目前路由器都采用这种交换方式。

4.8 RIP

路由器的作用就是路由选择,那么什么是最佳路由?首先明确一点,不存在绝对的最佳路由算法,所谓最佳只能是尽可能接近理想的算法。

路由选择是个非常复杂的问题:

  • 它是网络所有节点共同协调工作的结果
  • 网络环境往往是不断变化的,这种变化有时无法预知

从路由算法的自适应性考虑:

  • 静态路由选择

    非自适应路由选择,简单,开销较小,不能及时适应网络状态的变化,适用于小型、简单的网络。

  • 动态路由选择

    自适应路由选择,较好地适应网络状态的变化,实现起来复杂,开销较大,适用于大型、复杂的网络。

互联网采用自适应的分层次的分布式的路由选择协议

  • 互联网规模非常大,如果让所有的路由器知道应如何到达,路由表将非常大,同时路由器之间交换信息所需的带宽也会使路由器的通信链路饱和。
  • 很多单位在连接到互联网的同时不希望网络拓扑结构及网络协议为外部所知道。

自治系统AS

AS间的1路由使用AS间的网络协议。

AS内的路由选择叫做内部网关协议,如RIP和OSPF

AS间的路由选择叫做外部网关协议,如IBGP-4

RIP

是分布式、基于距离的向量,是互联网的标准协议,简单却很少应用,几近淘汰。

每个路由器都要维护从自己到每个目的网络的最短距离,及距离向量。

最短距离

  • 从一个路由器到直连网络的距离定义为0
  • 从一个路由器到非直连网络的距离定义为所经过的路由器数
  • 距离也称为跳数,每经过一个路由器,跳数就加1
  • RIP规定一条路径最多只能包含15台路由器,16跳就不可达,因此只适用于小型网络。
  • RIP不能在两个网络之间同时使用多条路由,无法实现负载均衡
  • 选择一条具有最少路由器的路由,哪怕还存在另一条高速、低时延但路由器较多的路由

RIP协议的三个要点

  • 仅和相邻路由器交换信息
  • 交换的信息是本路由器知道的全部信息,即自己的整张路由表
  • 按固定的时间间隔交换路由信息,例如每隔30s
  • 当网络拓扑发生变化时,路由器也即时向相邻路由器通告拓扑变化后的路由信息

路由表的建立过程

  • 路由器在刚开始工作时,路由表是空的,只知道到直连网络的距离为0
  • 每个路由器也只和数目非常有限的相邻路由交换并更新路由信息
  • 经过若干次更新后,所有路由器都知道到达本AS内所有网络的最短距离和下一跳网络的地址
  • RIP协议收敛过程较快。收敛就是在AS所有路由器中都得到正确信息的过程

距离向量算法路由表的更新过程

没有则加入,下一跳更新则替换,下一跳不同有两种情况,跳数变小则替换,跳数相同或不变则不变。

  1. 路由器收到相邻路由器X的RIP报文,先修改此报文中的所有项目,把下一跳的字段地址都改为x,并把所有距离字段的值加1,最终路由项目有三个关键数据,目的网络N,距离d,下一跳路由器x。

  2. 对修改后的RIP报文的每一个项目重复以下步骤:

    若目的网络不在路由表中,则把该项目加到路由表中,否则若下一跳字段给出路由器的地址相同,则用收到的项目替换原路由表中的项目,无论距离变大还是变小,否则若收到的项目中的距离小于路由表中的距离,则进行更新,否则什么也不做,保留路由表中的原有信息。

  3. 若3分钟还没有收到相邻路由器的路由表,则将此相邻路由器连接的网络记为不可达,即将距离置为16。

在这里插入图片描述

RIPv2的报文格式

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

在这里插入图片描述

  • 首部占4个字节,命令字段指出报文的意义。1表示请求路由信息,2表示响应或路由更新报文,版本字段指出RIP的版本是1还是2,后续部分置为0.
  • 路由部分由若干条路由信息组成,每条路由信息占用20字节,地址族标志字段用来表示标志所使用的地址协议,IP地址为2,路由标记号填入AS号,因为有可能收到AS外的信息。在后面指出网络地址,该网络的子网掩码,下一跳的路由器地址以及到此网络的距离。

一个RIP报文最多可以包含25个路由,IP报文中数据最大长度为512字节,减去UDP首部的8字节和RIP首部的4字节,剩余500字节,500/20=25,因此RIP最大报文长度为4+20*25=504字节,如超过必须再用一个RIP报文传送。

RIPv2具有简单的鉴别功能,将原来写入第一个路由信息的位置用作鉴别,此时地址符标识符全1,而路由标记写入鉴别类型,余下16字节为鉴别数据,在鉴别数据之后才写入路由信息,但这时最多只能放入24条路由信息。

RIP协议特点

好消息传的快,坏消息传的慢。

优点:实现简单,开销较小

缺点:

(1)限制了网络规模

(2)路由器之间交换完整的路由表,随着网络规模的扩大开销也就增加

(3)坏消息传播的慢,更新过程的收敛时间过长。

4.9 OSPF

是为克服RIP的缺点开发的,它的原理简单但是实现起来较复杂。

  • 开放表明该协议不受某厂商控制,而是公开发表的。
  • 最短路径优先使用了最短路径算法SPF,注意SPF只是一个协议的名字,并不表明其他协议不是最短路径优先。
  • 采用分布式链路状态协议

协议三要点

  • 刚开始向本AS中所有路由器洪泛发送信息,发送的信息是与本路由器相邻的路由器的链路状态,但这只是路由器知道的部分信息
  • 链路状态:本路由器都和哪些路由器相连以及该链路的度量,度量值与费用、距离、时延和带宽等相关。
  • 后续只有当链路状态发生变化时,才用洪泛法向所有路由器发送信息。

由于各路由器之间频繁地交换链路状态信息,所有的路由器最终都能建立一个链路状态数据库,即全网的拓扑结构图,它在全网范围内是一致的。

OSPF的链路数据库能较快地进行更新,使各个路由器能及时更新其路由表。

OSPF的更新过程收敛快是其重要优点。

为了使OSPF能应用于规模很大的网络,OSPF将一个AS划分为若干更小的范围叫做区域,每个区域都有32位的区域标识符,区域也不能太大,在一个区域的路由器最好不要超过200个。

OSPF使用层次结构进行区域划分,与其他AS区域相邻的区域称为主干区域,其标识符为4个0,用来连通其他的非主干区域。

在这里插入图片描述

为什么要划分区域呢?将洪泛法交换链路信息的范围局限于每个区域,而不是整个AS,大大减少了整个网络上的通信量。在一个区域内部的路由器只需要知道本区域的完整网络拓扑,而不需要知道其他区域的网络拓扑。

根据路由器所处位置的不同,将位于主干区域的路由器叫做主干路由器,如图中的R3-R7,将同时位于两个区域的路由器叫做区域边界路由器,如R3,R4和R7,将与其他AS连接的路由器叫做AS边界路由器,如R6。

OSPF不用UDP而是直接用IP数据报传送,首部协议字段值为89。OSPF构成的数据报很短,这样做可以减少路由信息的通信量,同时不必将长的数据报进行分片。

OSPF分组格式

在这里插入图片描述

版本目前为2,类型是5种类型中的一种,分组长度包含首部在内以字节为单位,路由器标识符是本路由器接口的IP地址,区域标识符是分组所属区域的标识符,检验和检验分组中的差错,鉴别类型有2种,取0无须鉴别,取1需要鉴别,鉴别区鉴别类型为0时填入0,鉴别类型为1时填入8个字符的口令。

OSPF的其他特点:

  • 对不同的业务可计算出不同的路由
  • 可以实现负载均衡
  • 分组具有鉴别功能,保证了信息的安全性
  • 每一个链路状态都有一个32位的序号,序号越大状态就越新。

OSPF的五类分组

  • 类型1,问候分组。发现和维持连接站点的可达性。
  • 类型2,数据库描述分组。向邻居站点发送自己的链路状态数据库中项目的摘要信息
  • 类型3,链路状态请求分组。向对方请求发送某些链路状态项目的详细信息。
  • 类型4,链路状态更新分组。用洪泛法向全网更新链路状态,是OSPF最核心最复杂的部分。
  • 类型5,链路状态确认分组。对链路更新分组的确认。

OSPF基本操作
在这里插入图片描述

首先,R1和R2使用问候分组确认邻居关系,然后R1和R2互相发送数据库描述分组,假定R1的数据库中有一些项目不在R2发送的数据库描述分组中,R1就向R2发送某些链路请求分组,R2向R1发送其请求对应的相应信息,即链路状态更新分组,R1收到后向R2发送链路状态更新确认分组。

OSPF使用可靠的洪泛法发送更新分组

OSPF的其他特点:

  • 每30分钟刷新数据库中的链路状态
  • 当互联网规模很大时,OSPF比RIP好得多
  • 没有“坏消息传得慢”的问题
4.10 外部网关协议BGP

对于AS之间的路径要寻找最佳路由不现实,一条路径通过几个不同的AS时,对这样的路径计算代价也不现实,比较合理的做法就是在AS之间交换可达性信息。

AS之间的协议必须考虑有关策略,包括政治安全或经济方面,寻找一条能够到达目的网络且比较好的路由,即不兜圈子而并非寻找一条最佳路由,因此选择路径向量路由选择协议。

每一个AS至少有一台路由器作为BGP发言人,两个BGP发言人通过一个共享网络连接在一起,BGP发言人往往就是BGP边界路由器,但也可以不是。

BGP发言人与AS之间的关系

在这里插入图片描述

发言人之间建立TCP连接以此交换路由信息,路由的增加和撤销以及报告出错等情况。TCP连接能够提供给可靠的服务,也简化了路由选择协议。两个BGP发言人彼此成为对方的邻站或对等站。

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

BGP协议的特点

  • BGP交换信息的节点数量是AS数的量级,比AS中的网络数小很多。
  • 每个AS中的BGP发言人数目很少,使AS间的路由选择不会过分复杂。
  • BGP发言人需检查其他BGP发言人发来的路径通知中本AS是否已在其中,若在其中则此条路由将被丢弃或忽略
  • 在BGP刚刚运行时,BGP的邻站交换整张BGP路由表
  • 以后只需要在发生变化时更新发生变化的部分,节省网络带宽,减小路由器的开销。

BGP-4使用的报文

  • 打开报文,用来和邻站建立关系

  • 更新报文,用来发送某一路由的信息,并列出要撤销的多条路由

  • 保活报文,确认打开报文,周期性地证实邻站关系

  • 通知报文,发送检测到的差错

RIP基于UDP,OSPF基于IP,BGP基于TCP

  • RIP只和邻站交换信息,UDP虽然不可靠,但开销小,周期性克服UDP不可靠的缺点。
  • OSPF使用可靠的洪泛法,直接使用IP,灵活性小,开销小
  • BGP交换整个路由表和更新信息,TCP确保可靠,无需周期性。
4.11 VPN和NAT

一个公司和分支机构如果不在同一个地方该如何通信呢?一个员工在外地如何连接工作单位呢?

本地地址:仅在机构内部使用的IP地址,可由本机构自行分配,无需向互联网的管理机构申请,一般指私网地址,有三类:

  • A类地址:10.0.0.0到10.255.255.255及10.0.0.0/8
  • B类地址:172.16.0.0到172.31.255.255及172.16.0.0/12
  • C类地址:192.168.0.0到192.168.255.255及192.168.0.0/16

全球地址:全球唯一的IP地址,必须向互联网的管理机构申请,一般指公网地址。

IP地址紧缺,一个机构所能申请到的IP地址数往往小于本机构所拥有的主机数,考虑到互联网并不安全,一个机构内也不需要把所有的主机接入互联网。专用地址只能用作本地地址,而不能用作全球地址,路由器对目的地址是专用地址的数据报一律不进行转发。

VPN

采用专用IP地址的互连网络称做专用互联网,简称专用网。

利用互联网作为本机构各专用网之间的通信载体,又称为虚拟专用网VPN,该网络是为本机构的主机进行本机构的通信,不是用于和网络外非本机构的主机通信。

VPN中的虚拟是并没有使用通信专线,但是效果上和真正的专用网一样。

VPN构建

  • 有保密需求,数据必须加密
  • 专门的硬件和软件

用隧道技术实现VPN

在这里插入图片描述

部门A和部门B距离很远,比如跨市跨省甚至跨国家,内部都使用A类私网地址,现在A部门的主机X要和B部门的主机Y通信,两部门之间通过搭建隧道实现数据的加密。X的私网地址10.1.0.1在进入隧道前需要将其转化为公网地址125.1.2.3,X要访问主机Y,但其目的地址并不是私网地址10.2.0.3,而是公网地址194.4.5.6,也就是说隧道内的源地址和目标地址都是公网地址,数据通过隧道后到达B网络,再将公网地址194.4.5.6转换为私网地址10.2.0.3,从而实现两个专用网之间的通信。

在这里插入图片描述

内联网和外联网

由部门A和B所构成的内部网络所构成的VPN称为内联网,表示部门A和B都是在一个机构的内部,一个机构和某些外部机构共同建立的VPN称为外联网。

远程接入VPN

某个流动员工需要远程接入VPN访问公司网络:该员工接入互联网,基于VPN软件在员工的PC机和公司的主机之间建立VPN隧道,通信内容是加密的,感觉好像在使用公司内部的本地网络。

NAT

要将私网地址和公网地址转换,这种地址转换就叫做网络地址转换NAT,需要在将专用网连接的互联网的路由器上安装NAT软件,该路由器就叫做NAT路由器,它至少有一个公网IP地址,所有使用私网地址的主机和外界通信时都要在NAT路由器上将私网地址转换为公网地址,当互联网回应后必须将公网地址转换为私网地址才能找到内部某主机。

在内外主机通信时,NAT路由器共发生了两次地址转换。

  1. 离开专用网时:替换源地址,将私网地址替换为公网地址

  2. 进入专用网时:替换目的地址,将公网地址替换为私网地址

NAT转换分类

  • 静态转换:某个私网IP地址只转换为某个公网IP地址,是一成不变的,一对一,服务器采用该方式
  • 动态转换:IP地址对是随机的,是不确定的,所有合法的私网IP地址均可随机转换为合法的IP地址,属于多对多的关系。如果IP地址略少于VPN内部主机数量时,可以采用动态转换的方式,但VPN内部主机不能同时连接互联网,一般主机采用该方式
  • NAPT/PAT:为了更加有效利用公网IP地址,我们可以利用传输层的端口号,内部网络的有线主机均可共享一个合法的公网IP地址。

PAT最大限度地节约IP地址,又可隐藏网络内部的所有主机,有效避免网络攻击。

目前网络中应用最多的就是PAT(普通设备)和静态转换(服务器)

在这里插入图片描述

  • 14
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值