计算机网络之网络层笔记

网络层


前提

参考书:谢希仁《计算机网络(第7版)》、王道计网课程等。
建议:慢慢啃。


1 网络层的简介

1.1 网络层的功能

(1)网络层的主要任务是:把分组从源端传到目的端,为分组交换网上的不同主机提供通信服务。网络层传输单位是数据报

(2)网络层的功能:

  • 功能一:路由选择与分组转发 最佳路径
  • 功能二:异构网络互联
  • 功能三:拥塞控制
    • 若所有结点都来不及接受分组,而要丢弃大量分组的话,网络就处于拥塞状态。因此,要采取一定措施,缓解这种拥塞。

    • WAY1:开环控制 静

    • WAY2:闭环控制 动

1.2 几种传输单元名词辨析

应用层——报文

传输层——报文段 将报文进行分割形成报文段

网络层——IP数据报,分组 报文段封装上网络层的IP地址(包括源地址、目的地址)形成IP数据报,IP数据报较大,就进行分割,形成分组。

数据链路层——数据帧 分组封装上头部和尾部,形成数据帧

物理层——比特流


2 数据交换方式

2.1 前提

(1)如何使数据通过网络核心【路由器】从源主机到目的主机?

答:数据交换。

(2)几个名词的解释:

  • 无连接服务:不事先为分组的传输确定传输路径,每个分组独立确定传输路径,不同分组传输路径可能不同。

  • 连接服务:首先为分组的传输确定传输路径(建立连接),然后沿该路径(连接)传输系列分组,系列分组传输路径相同,传输结束后拆除连接。

  • 数据报方式为网络层提供无连接服务。

  • 虚电路方式为网络层提供连接服务。

2.2 三种数据交换方式

  • 电路交换
  • 报文交换
  • 分组交换
    • 数据报方式
    • 虚电路方式
2.2.1 电路交换

在这里插入图片描述

电路交换的阶段:
在这里插入图片描述

# 优点:
1. 通信时延小
2. 有序传输
3. 没有冲突
4. 实时性强

# 缺点:
1. 建立连接时间长
2. 线路独占,使用效率低
3. 灵活性差
4. 无差错控制能力
2.2.2 报文交换

报文:源应用发送的信息整体。
在这里插入图片描述

# 优点:
1. 无需建立连接
2. 存储转发,动态分配线路
3. 线路可靠性较高
4. 线路利用率较高
5. 多目标服务

# 缺点:
1. 有存储转发时延
2. 报文大小不定,需要网络节点有较大的缓存空间
2.2.3 分组交换

分组:把大的数据块分割成小的数据块。

在这里插入图片描述

# 优点:
1. 无需建立连接
2. 存储转发,动态分配线路
3. 线路可靠性较高
4. 线路利用率较高
5. 相对于报文交换,存储管理更容易

# 缺点:
1. 有存储转发时延
2. 需要传输额外的信息量
3. 乱序到目的主机时,要对分组排序重组

2.3 报文交换 VS 分组交换(题目)

在这里插入图片描述

# 问题:所有链路传输速率为1000bps(即1000bit/s),报文交换中一个报文为10000bit,分组交换中一个分组分为10bit,(这里1000个分组相当于一个报文,不考虑传播时延、接收时延等),求两种交换各自的最少的(发送)传输时间。

在这里插入图片描述

2.4 三种数据交换方式比较总结

在这里插入图片描述

  1. 报文交换和分组交换都采用存储转发。
  2. 传送数据量大,且传送时间远大于呼叫时,选择电路交换。电路交换传输时延最小。
  3. 从信道利用率看,报文交换和分组交换优于电路交换,其中分组交换时延更小。

2.5 数据报方式(因特网在用)

(1)数据报方式的简介

  • 无连接服务:不事先为分组的传输确定传输路径,每个分组独立确定传输路径,不同分组传输路径可能不同。

  • 每个分组携带源地址、目的地址;

  • 路由器根据分组的目的地址转发分组:基于路由协议/算法构建转发表;检索转发表;每个分组独立选路。

  • 路由器的转发表/路由表:看不懂就暂时搁着!

目的网络IP地址 子网掩码 下一跳IP地址 接口

(2)数据报方式的特点:

  1. 数据报方式为网络提供无连接服务。发送方可随时发送分组。
  2. 同一报文的不同分组达到目的结点时可能发生乱序、重复与丢失。
  3. 每个分组在传输过程中都必须携带源地址和目的地址,以及分组号。
  4. 分组在交换结点存储转发时,需要排队等候处理,这会带来一定的时延。当通过交换结点的通信量较大或网络发生拥塞时,这种时延会大大增加,交换结点还可根据情况丢弃部分分组。
  5. 网络具有冗余路径,当某一交换结点或一段链路出现故障时,可相应地更新转发表,寻找另一条路径转发分组,对故障的适应能力强,适用于突发性通信,不适合于长报文、会话式通信。

2.6 虚电路方式

(1)虚电路方式的简介

  • 虚电路将数据报方式和电路交换方式结合,来发挥两者的优点。
  • 虚电路:一条源主机到目的主机类似于电路的路径(逻辑连接),路径上所有结点都要维持这条虚电路的建立,都维持一张虚电路表,每一项记录了一个打开的虚电路的信息。
  • 通信过程:
    在这里插入图片描述
  1. 每个分组携带虚电路号,分组号、检测和等控制信息,而非目的地址。
  2. 源主机发送"呼叫请求"分组并收到"呼叫应答"分组后才算建立连接。
  3. (全双工)通信
  4. 源主机发送"释放请求"分组以拆除虚电路。

(2)虚电路方式的特点:

  1. 虚电路方式为网络层提供连接服务。源结点与目的结点之间建立一条逻辑连接,而非实际物理连接。
  2. 一次通信的所有分组都通过虚电路顺序传送,分组不需要携带地址、目的地址等信息,包含虚电路号,相对数据报方式开销小,同一报文的不同分组到达目的结点时不会乱序、重复或丢失。
  3. 致命弱点:当网络中的某个结点或某条链路出现故障而彻底失效时,则所有经过该结点或该链路的虚电路将遭到破坏。

2.7 数据报 VS 虚电路

数据报服务 虚电路服务
建立连接 没有 必须有
目的地址 每个分组都有完善的目的地址。 仅在建立连接阶段使用,之后每个分组使用长度较短的虚电路号。
路由选择 每个分组独立地进行路由选择和转发。 属于同一条虚电路的分组按照同一路由转发。
分组顺序 不保证分组的有序到达。 保证分组的有序到达。
可靠性 不保证可靠通信,可靠性由用户主机来保证。 可靠性由网络保证。
对网络故障的适应性 出故障的结点丢失分组,其它分组路径发生变化,可正常传输。 所有经过故障结点的虚电路均不能正常工作。
差错处理和流量控制 由用户主机进行流量控制,不保证数据报的可靠性。 可由分组交换网负责,也可由用户主机负责。

3 IP数据报格式

3.1 TCP/IP协议栈

在这里插入图片描述

3.2 最大传送单元MTU

(1)最大传送单元MTU:链路层数据可封装数据的上限。如以太网的MTU是1500字节。

(2)如果所传送的数据报长度超过某链路的MTU值,要怎么处理?

答:当IP数据报比链路的最大传输单元大时,就可以被分解为很多的足够小片段,以便能够在其上进行传输。即分片

3.3 IP数据报格式

在这里插入图片描述

在这里插入图片描述

  1. 版本字段:IPv4或IPv6。
  2. 首部长度字段:单位是4B,最小为5。
  3. 区分服务字段:指示期望获得哪种类型的服务。
  4. 总长度字段:首部+数据,单位是1B。
  5. 标识字段:同一数据报的分片使用同一标识。
  6. 标志字段:只有2位有意义。即X _ _ 。
    • 中间位 DF(Don’t Fragment):
      • DF = 1,禁止分片。
      • DF = 0,允许分片。
    • 最低位 MF (More Fragment):
      • MF = 1,后面"还有分片"。
      • MF = 0,代表最后一片/没分片。
  7. 片偏移字段:指出较长分组分片后,某片在原分组中的相对位置。以8B为单位。除了最后一个分片,每个分片长度一定是8B的整数倍。
  8. 生存时间字段(TTL):IP分组的保质期。经过一个路由器 -1,变成0则丢弃。
  9. 协议字段:数据部分的协议。
  10. 首部检验和字段:只检查首部。
  11. 源IP地址和目的IP地址字段:32位。
  12. 可选字段:0~40B,用来支持排错、测量以及安全等措施。
  13. 填充字段:全0,把首部补成4B的整数倍

在这里插入图片描述

# 注意:
1. 总长度单位是1B。即比如总长度字段的值为125,相乘得,总长度的实际长度为125B。
2. 片偏移单位是8B。
3. 首部长度单位是4B。

4 IPv4

4.1 IP地址

(1)互联网协议地址(简称IP地址)是分配给连接到使用互联网协议进行通信的计算机网络的每个设备的数字标签。一个IP地址有两个主要功能:主机或网络接口识别和位置寻址。

(2)要想给一台主机通信?需要知道什么?

答:主机在哪个网络?在该网络中的哪个主机?

4.2 IP地址的历史阶段

  1. 分类的IP地址
  2. 子网的划分
  3. 构成超网(无分类编址方法),CIDR

4.3 分类的IP地址(IPv4)

(1)IP地址:全世界唯一的32位/4字节标识符,标识路由器主机的接口。

(2)IP地址::={<网络号><主机号>}

在这里插入图片描述

(3)分类的IP地址情况:
在这里插入图片描述
在这里插入图片描述

(4)特殊IP地址:

在这里插入图片描述

(5)私有IP地址:

在这里插入图片描述

# 路由器对目的地址是私有IP地址的数据报一律不进行转发。

(6)不同类别的网络对应的最大可用网络数:
在这里插入图片描述

1. 如果网络号变为全零,即本网络,这个网络号是不可使用的;全1,即127,环回地址,也不能使用;2的7次减2。
主机号:全0,即本主机所连接到的网络地址,也就是本网的网络号,这个是特殊IP地址,是不能指派到某个主机或路由器的接口上,全1,即广播地址。
2. 全0,不能指派。
主机号:全0,即本主机所连接到的网络地址,也就是本网的网络号,这个是特殊IP地址,是不能指派到某个主机或路由器的接口上,全1,即广播地址。
3. 192.0.0,不能指派。
主机号:全0,即本主机所连接到的网络地址,也就是本网的网络号,这个是特殊IP地址,是不能指派到某个主机或路由器的接口上,全1,即广播地址。

(7)分类IP的地址的不足:

  1. IP地址空间的利用率有时很低。
  2. 两级IP地址不够灵活。两级IP地址即网络号+主机号

在这里插入图片描述

4.4 子网划分

(1)由于分类IP地址的弱点,人们想出了子网划分。两级IP地址到三级IP地址。

(2)某单位划分子网后,对外仍表现为一个网络,即本单位外的网络看不见本单位内子网的划分。
在这里插入图片描述
在这里插入图片描述

4.5 子网掩码

  • 仔细看图与看教科书~

在这里插入图片描述

  • 记住以下的二进制数对应的十进制数的互换,方便计算~

在这里插入图片描述

  • 计算题小测试

(1)已知IP地址是141.14.72.24,当子网掩码是255.255.192.0,求网络地址。当子网掩码是255.255.224.0,求网络地址。

(2)某主机的IP地址为180.80.77.55,子网掩码为255.255.255.0。若该主机向其所在子网发送广播分组,则目的地址可以是什么?

A、180.80.76.0 B、180.80.76.255 C、180.80.77.255 D、180.80.79.255


答案:(1)141.14.64.0 141.14.64.0

答案:(2)D

1. 同样的IP地址跟不同的子网掩码按位相与,得到的网络地址可以是相同的,但是这两种子网掩码达到的效果是不一样的,对于11000000这个子网掩码的子网号占了2位,剩下的位是主机号(6+8),对于11100000这个子网掩码的子网号占了3位,剩下的位是主机号(5+8)。因此,这两个子网掩码当中,可以划分的子网个数以及每个子网当中可以使用的最大主机数是不同的。不同的点主要在CIDR技术中了解到。

# 子网掩码与IP地址相与,得到网络地址。
  • 使用子网分组的转发时的重要知识点

路由表中存着的主要内容:

  1. 目的网络地址
  2. 目的网络子网掩码
  3. 下一跳地址

路由器转发分组的算法:

  1. 提取目的IP地址
  2. 是否直接交付
  3. 特定主机路由
  4. 检测路由表中有无路径
  5. 默认路由0.0.0.0
  6. 丢弃,报告转发分组出错

在这里插入图片描述

1. 路由器会提取分组中的目的IP地址,得到目的IP地址,路由器根据IP地址判断是否可以直接交付。
2. 直接交付:我可以直接给路由器所连的子网或者所连的网络内。
3. 间接交付:路由器正连接的网络当中并不存在我这个目的地址,所以需要从这个路由器再转到下一个路由器。
4. 判断方法:用目的IP地址跟子网掩码进行相与的操作,得到的结果与这个子网中的网络地址相匹配,

4.6 NAT(网络地址转换)

  • NAT,全称Network Address Translation,即网络地址转换。
  • NAT:是在专用网连接到因特网的路由器上安装NAT软件,安装了NAT软件的路由器叫做NAT路由器,它至少有一个有效的外部全球IP地址。是一种为解决地址耗尽而提出的一种措施。

在这里插入图片描述

以上的40001为端口号主要是在传输层里涉及的,端口号可以唯一标识主机中的某个具体进程,比如我们在一个主机上打开了QQ、微信,QQ、微信进程都会有使用一个端口号,在同一主机内不同的进程的端口号是不同的,可是在不同主机内不同的进程的端口号可以是相同的。

4.7 CIDR(无分类编址)

(1) CIDR的简介:

  • 现行的IPv4的地址将耗尽,与NAT用途相似,这是一种为解决地址耗尽而提出的一种措施。它是将好几个IP网络结合在一起,使用一种无分类的域间路由选择算法,可以减少由核心路由器运载的路由选择信息的数量。

  • CIDR(无分类的域间路由选择,Classless Inter-Domain Routing)是一个在Internet上创建附加地址的方法,这些地址提供给服务提供商(ISP),再由ISP分配给客户。CIDR将路由集中起来,使一个IP地址代表主要骨干提供商服务的几千个IP地址,从而减轻Internet路由器的负担。所有发送到这些地址的信息包都被送到如MCI或Sprint等ISP。

  • 1990年,Internet上约有2000个路由。五年后,Internet上有3万多个路由。如果没有CIDR,路由器就不能支持Internet网站的增多。 CIDR采用13~27位可变网络ID,而不是A-B-C类网络ID所用的固定的7、14和21位。例如,CIDR地址204.12.01.42/24表示前24位用作网络ID。

(2)CIDR的特点:

  1. 消除了传统的A类,B类和C类地址以及划分子网的概念。

    • CIDR记法:IP地址后加上"/",然后写上网络前缀(可以任意长度)的位数。例如:128.14.32.0/20
    • 这个过程也启示:书应该越读越薄!
    • 在这里插入图片描述
  2. 融合子网地址与子网掩码,方便子网划分。

    • CIDR把网络前缀都相同的连续的IP地址组成一个"CIDR地址块"。
    • 128.14.35.7/20是某CIDR地址中的一个地址。
    • 在这里插入图片描述
192.199.170.82/27
即(192.199.170.010)(27位)10000
最小:192.199.170.64
最大:192.199.170.95

4.8 构成超网

  • 将多个子网聚合成一个较大的子网,叫做构成超网,或路由聚合。

  • 方法:将网络前缀缩短。

在这里插入图片描述

4.9 最长前缀匹配

使用CIDR时,查找路由表可能得到几个匹配结果,应选择具有最长网络前缀的路由。前缀越长,地址块越小。

小试一手

(1)路由器R0的路由表见下表:若进入路由器R0的分组的目的地址为132.19.237.5,请问该分组应该被转发到哪一个下一跳路由器()。

A、R1 B、R2 C、R3 D、R4

在这里插入图片描述

(2)某网络的IP地址空间为192.168.5.0/24,采用定长子网划分,子网掩码为255.255.255.248,则该网络中的最大子网个数、每个子网内的最大可分配地址个数分别是()。

A、32,8 B、32,6 C、8,32 D、8,30


答:(1)B (2)B。


5 ARP协议

5.1 ARP协议的引入

我们知道,当我们在浏览器里面输入网址时,DNS服务器会自动把它解析为IP地址,浏览器实际上查找的是IP地址而不是网址。那么IP地址是如何转换为第二层物理地址(即MAC地址)的呢?在局域网中,这是通过ARP协议来完成的。ARP协议对网络安全具有重要的意义。通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量使网络阻塞。所以网管们应深入理解ARP协议。

在这里插入图片描述

5.2 ARP的简介

  • ARP,全称Address Resolution Protocol,地址解析协议。在局域网中,网络中实际传输的是“帧”,帧里面是有目标主机的MAC地址的。在以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址。

  • 但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议获得的。所谓“地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行

在这里插入图片描述

5.3 ARP高速缓存(发送数据过程的IP地址与MAC地址的映射)

(1)在每台安装有TCP/IP协议的电脑里都有一个ARP缓存表,表里的IP地址与MAC地址是一一对应的,如下表所示。

IP地址 MAC地址
192.168.1.1 00-aa-00-62-c6-09
192.168.1.2 00-aa-00-62-c6-03
192.168.1.3 00-aa-00-62-c6-06
…… ……

(2)我们以主机A(192.168.1.5)向主机B(192.168.1.1)发送数据为例。当发送数据时,主机A会在自己的ARP缓存表中寻找是否有目标IP地址。

(3)如果找到了,也就知道了目标MAC地址,直接把目标MAC地址写入帧里面发送就可以了;

(4)如果在ARP缓存表中没有找到相对应的IP地址,主机A就会在网络上发送一个广播,目标MAC地

是“FF.FF.FF.FF.FF.FF”,这表示向同一网段内的所有主机发出这样的询问:“192.168.1.1的MAC地址是什么?”。网络上其他主机并不响应ARP询问,只有主机B接收到这个帧时,才向主机A做出这样的回应:“192.168.1.1的MAC地址是00-aa-00-62-c6-09”。

(5)这样,主机A就知道了主机B的MAC地址,它就可以向主机B发送信息了。同时它还更新了自己的ARP缓存表,下次再向主机B发送信息时,直接从ARP缓存表里查找就可以了。ARP缓存表采用了老化机制,在一段时间内如果表中的某一行没有使用,就会被删除,这样可以大大减少ARP缓存表的长度,加快查询速度。

5.4 如何查看ARP缓存表

ARP缓存表是可以查看的,也可以添加和修改。在命令提示符下,输入“arp -a”就可以查看ARP缓存表中的内容了,如下图所示。

在这里插入图片描述

用“arp -d”命令可以删除ARP表中某一行的内容;用“arp -s”可以手动在ARP表中指定IP地址与MAC地址的对应。

5.5 APR协议的浅析

(1)由于在实际网络的链路上传送数据帧时,最终必须使用MAC地址。

(2)ARP协议:完成主机或路由器IP地址到MAC地址的映射。解决下一跳走哪的问题

(3)ARP协议的使用过程:

  • 检查ARP高速缓存,有对应表项则写入MAC帧,没有则用目的MAC地址为FF-FF-FF-FF-FF-FF的帧封装并广播ARP请求同一局域网中所有主机都能收到该请求。目的主机收到请求后就会向源主机单播一个ARP响应分组,源主机收到后将此映射写入ARP缓存(10~20ming更新一次)。

(4)ARP协议的4种典型情况:

  1. 主机A发给本网络上的主机B:用ARP找到主机B的硬件地址;
  2. 主机A发给另一网络上的主机B:用ARP找到本网络上一个路由器(网关)的硬件地址;
  3. 路由器发给本网络的主机A:用ARP找到主机A的硬件地址;
  4. 路由器发给另一网络的主机B:用ARP找到本网络上的一个路由器的硬件地址。
# ARP协议自动进行

(5)ARP协议练习题

主机发送IP数据报给主机B,经过了5个路由器,请问此过程共使用了几次ARP协议?提示:ARP协议解决下一跳走哪的问题。


答:6次。


6 DHCP协议

6.1 主机如何获得IP地址?

主机在通信之前,一定要具备一个IP地址,那主机就必须要获得一个IP地址。

主机获取IP地址的方式:

  • 静态配置

如高校里面的机房,每一台主机都是固定好位置的,则网络管理员就可以静态地分配IP地址。给每台主机配置一个固定的IP地址,包括IP地址、子网掩码、默认网关等。默认网关,即这个局域网内的所有主机跟外界交流或者说数据得以进入外界的关口,通常指的是一个路由器的一个接口的IP地址。

  • 动态配置

如你的笔记本、手机都是随身携带的,你不是长期不移动,是需要移动各处的,因而是移动的IP,就需要动态地给你的笔记本、手机分配IP地址来通信。这分配者就是DHCP服务来当担的。

在这里插入图片描述
在这里插入图片描述

6.2 DHCP协议的简介

(1)动态主机配置协议(Dynamic Host Configuration Protocol),简称DHCP,是一个应用于局域网的网络协议,该协议允许服务器向客户端动态分配IP地址和配置信息。该协议位于OSI模型的应用层,使用UDP协议工作,主要有两个用途,一个是用于内部网或网络服务供应商自动分配IP地址给用户,另一个是用于内部网管理员作为对所有电脑作中央管理的手段。

(2)DHCP具有以下功能:

  1. 保证任何IP地址在同一时刻只能由一台DHCP客户机所使用。
  2. DHCP应当可以给用户分配永久固定的IP地址。
  3. DHCP应当可以同用其他方法获得IP地址的 主机共存(如手工配置IP地址的主机)。
  4. DHCP 服务器应当向现有的BOOTP 客户端提供服务。

(3)DHCP有三种机制分配IP地址:

  1. 自动分配方式(Automatic Allocation),DHCP服务器为主机指定一个永久性的IP地址,一旦DHCP客户端第一次成功从DHCP服务器端租用到IP地址后,就可以永久性的使用该地址。
  2. 动态分配方式(Dynamic Allocation),DHCP服务器给主机指定一个具有时间限制的IP地址,时间到期或主机明确表示放弃该地址时,该地址可以被其他主机使用。
  3. 手工分配方式(Manual Allocation),客户端的IP地址是由网络管理员指定的,DHCP服务器只是将指定的IP地址告诉客户端主机。
  • 三种地址分配方式中,只有动态分配可以重复使用客户端不再需要的地址。

DHCP消息的格式是基于BOOTP消息格式的,这就要求设备具有BOOTP中继代理的功能,并能够与BOOTP客户端和DHCP服务器实现交互。BOOTP中继代理的功能,使得没有必要在每个物理网络都部署一个DHCP服务器。RFC 951和RFC 1542对BOOTP协议进行了详细描述。

6.3 DHCP协议的重点知识

(1)动态主机配置协议DHCP是应用层协议,使用客户/服务器方式,客户端和服务端通过广播方式进行交互,基于UDP

之所以把DHCP协议先在网络层提及,是因为它为网络层的通信提供了一个基础,只有有了DHPC协议,才可以有IP地址,才能够衍生出子网掩码、超网等。

(2)DHCP提供即插即用联网的机制,主机可以从服务动态获取IP地址、子网掩码、默认网关、DNS服务器名称与IP地址,允许地址重用,支持移动用户加入网络,支持在用地址续租

在这里插入图片描述

(3)DHCP协议的工作流程:

  1. 主机广播DHCP发现报文。
    "有没有DHCP服务器?" 试图找到网络中的服务器,服务器获得一个IP地址。
  2. DHCP服务器广播DHCP提供报文。
    “有,有,有。” 服务器拟分配给主机一个IP地址及相关配置,先到先得。
  3. 主机广播DHCP请求报文。
    "我用你给我的IP地址啦?" 主机向服务器请求提供IP地址。
  4. DHPC服务器广播DHCP确认报文。
    "用吧!" 正式将IP地址分配给主机。
地址重用?
1. 每个DHCP服务器都有一个IP地址池,这个地址池包含很多IP地址,现在有一台主机进入该局域网中,DHCP服务器就给它分配一个IP地址,等它走了并移动到下一个场所,但又有新的主机进来了,DHCP协议可以把刚才的IP地址再给新的主机用,即地址重用。
在用地址续租?
2. DHCP服务器分配的IP地址的使用时间不是永久的,是有时间性的。换句话说,就是租用期。在用地址续租也由此而生。

7 ICMP协议

7.1 回顾TCP/IP协议栈

在这里插入图片描述

为了更有效地转发IP数据报和提高交付成功的机会…

7.2 ICMP协议的简介

(1)ICMP,全称为Internet Control Message Protocol,即网际控制报文协议、网际控制消息协议。

(2)它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传输起着重要的作用。我们在网络中经常会使用到ICMP协议,只不过我们察觉不到。比如,我们经常使用的用于检查网络通不通的ping命令,这个ping命令的执行过程实际上就是ICMP协议工作的过程。

(3)ICMP协议的工作:

在这里插入图片描述

(4)ICMP报文:

在这里插入图片描述

7.3 ICMP差错报告报文(5种)

  1. 终点不可达:当路由器或主机不能交付数据报时,就向源点发送终点不可达报文。无法交付
  2. 源点抑制:当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送率放慢。 拥塞丢数据 老谢的书、实际应用中已被淘汰
  3. 时间超过:当路由器收到生存时间TTL=0的数据报时,除丢弃该数据报外,还要向源点发送时间超过报文。当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,并向源点发送时间超过报文。TTL=0
  4. 参数问题:当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。首部字段有问题
  5. 改变路由(重定向):路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)。值得更好的路由

7.4 ICMP差错报告报文数据字段

在这里插入图片描述

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

  1. ICMP差错报告报文不再发送ICMP差错报告报文。
  2. 对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文。
  3. 对具有组播地址的数据报都不发送ICMP差错报告报文。
    • 组播地址对应是发给一批主机,广播地址对应是发给全部主机。
  4. 对具有特殊地址(如127.0.00或0.0.0.0)的数据报不发送ICMP差错报告报文。

7.6 ICMP询问报文

  1. 回送请求和回答报文
    • 主机或路由器向特定目的主机发出的询问,收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文。测试目的站是否可达以及了解其相关状态。
  2. 时间戳请求和回答报文
    • 请某个主机或路由器回答当前的日期和时间。用来进行时钟同步和测量时间。
  3. 掩码地址请求和回答报文。已经不再使用了
  4. 路由器询问和通告报文。已经不再使用了

7.7 ICMP的应用

PING:测试两个主机的连通性,使用了ICMP回送请求和回答报文

Tranceroute:跟踪一个分组从源点到终点的路径,使用了ICMP时间超过差错报告报文


8 路由算法、路由协议

8.1 路由算法基于路由表/转发表

在这里插入图片描述

最佳路由:"最佳"只能是相对于某一种特定要求下得出的较为合理的选择而已。 实时根据具体情况

8.2 路由算法的分类

在这里插入图片描述

8.3 分层次的路由选择协议

(1)为什么选择分层次的路由选择协议?

  1. 因特网规模大;
  2. 许多单位不想让外界知道自己的路由选择协议,但还想连入因特网;

因选择分层次的路由选择协议出现了自制系统AS

(2)自制系统AS:在单一的技术管理下的一组路由器,而这些路由器使用一种AS内部的路由选择协议和共同的度量以确定分组在该AS内的路由,同时还使用一种AS之间的路由协议以确认在AS之间的路由。

(3)一个AS内的所有网络都属于一个行政单位来管辖,一个自治系统的所有路由器在本自治系统内都必须连通。自治系统内部使用一些协议、自治系统外部使用一些协议,不同自治系统内部可以使用不同的路由协议,内部是看不到外部协议的,外部也是看不到内部协议的。

在这里插入图片描述
(4)根据AS,路由选择协议分为内部网关协议 IGP (主要包括 RIP、OSPF协议)与外部网关协议 EGPIGP即Interior Gateway Protocol; EGP即Exterior Gateway Protocol。

在这里插入图片描述


9 IPv6

9.1 IPv6的出现

由于32位的IPv4地址空间已分配殆尽,CIDR、NAT本质是还是治标标不治本,因而出现了IPv6,IPv6从根本上解决了地址耗尽的问题。

IPv6的特性:

  • 改进首部格式;
  • 快速处理/转发数据报。
  • 支持QoS。
    • QoS(Quality of Service,服务质量)指一个网络能够利用各种基础技术,为指定的网络通信提供更好的服务能力,是网络的一种安全机制,是用来解决网络延迟和阻塞等问题的一种技术。

9.2 IPv6的数据报格式

在这里插入图片描述
在这里插入图片描述

(1)版本字段:指明了协议版本,总是6。

(2)优先级字段:区分数据报的类别和优先级。

(3)流标签字段:"流"是互联网上从特定源点到特定终点的一系列数据报。所有属于同一个流的数据报都具有同样的流标签。

(4)下一个首部字段:标识下一个扩展首部或上层协议首部。

(5)跳数限制字段:相当于IPv4的TTL。

9.3 IPv4和IPv6

  1. IPv6将地址从32位(4B)扩大到128位(16B),更大的地址空间。
  2. IPv6将IPv4的校验和字段彻底移除,以减少每跳的处理时间。
  3. IPv6将IPv4的可选字段移出首部,变成了扩展首部,成为灵活的首部格式,路由器通常不对扩展首部进行检查,大大提高了路由器的处理速率。
  4. IPv6支持即插即用(即自动设置),不需要DHCP协议。
  5. IPv6首部长度必须是8B的整数倍,IPv4首部是4B的整数倍。
  6. IPv6只能在主机处分片,IPv4可以在路由器和主机处分片。
  7. ICMPv6:附加报文类型"分组过大"。
  8. IPv6支持资源的预分配,支持实时视像等要求,保证一定的带宽和时延的应用。
  9. IPv6取消了协议字段,改成了下一个首部字段。
  10. IPv6取消了总长度字段,改用有效载荷长度字段。
  11. IPv6取消了服务类型字段。

9.4 IPv6地址表示形式

一般形式:冒号十六进制记法:
4BF5:AA12:0126:FEBC:BA5F:039A:BE9A:2107

压缩形式:原本的4BF5:0000:0000:0000:BA5F:000A:BE9A:2107
进行零压缩=>   4BF5:0:0:0:BA5F:A:BE9A:2107

# 进行零压缩时,一连串连续的0可以被一对冒号取代,但是此冒号表示法在一个地址仅可出现一次。
如:FF05:0:0:0:0:B3:0:ADB3
进行冒号表示法零压缩=>  FF05::B3:0:ADB3

9.5 IPv6基本地址类型

  • 单播:一对一通信,可做源地址、目的地址。
  • 多播:一对多通信,可做目的地址。
  • 任播:一对多中的一个通信,可做目的地址。

9.6 IPv6向IPv4过渡的策略

  • 双栈协议:就是指在一台设备上同时启用IPv4协议栈和IPv6协议栈。这样的话,这台设备既能和IPv4网络通信,又能和IPv6网络通信。如果这台设备是一个路由器,那么这台路由器的不同接口上,分别分配了IPv4地址和IPv6地址,并很可能分别连接了IPv4网络和IPv6网络。如果这台设备是一个计算机,那么它将同时拥有IPv4地址和IPv6地址,并具备同时处理这两个协议地址的功能。
  • 隧道技术:通过使用互联网的基础设施在网络之间传递数据的方式。使用隧道传递的数据(或负载)可以是不同协议的数据帧或包。隧道协议将其它协议的数据帧或包重新封装,然后通过隧道发送。

在这里插入图片描述

9.7 小结

在这里插入图片描述


8 RIP协议及距离向量算法

在这里插入图片描述

8.1 RIP协议

  • RIP,全称Routing Information Protocol,即路由信息协议。
  • RIP是一种分布式的基于距离向量的路由选择协议,是因特网的协议标准,最大优点的简单。
  • RIP协议要求网络中每一个路由器都维护从它自己到其它每一个目的网络的唯一最佳距离记录(即一组距离)。
  • 距离:通常为"跳数",即从源端口到目的窗口所经过的路由器个数,经过一个路由器跳数+1。特别地,从一路由器到直接连接的网络距离为1。RIP允许一条路由最多只能包含15个路由器,因此距离为16表示网络不可达。
  • RIP协议只适合用于小互联网。

8.2 RIP协议和谁交换?多久交换一次?交换什么?

  1. 仅和相邻路由器交换信息。
  2. 路由器交换的信息是自己的路由表
  3. 每30秒交换一次信息,然后路由器根据新信息更新路由表。若超过180秒没收到邻居路由器的通告,则判定邻居没了,并更新自己路由表。

路由表刚开始工作时,只知道直接连接的网络的距离(距离为1),接着每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息。

“收敛”:经过若干次更新后,所有路由器最终都会知道到达本自治系统中任何一个网络的最短路径和下一跳路由器的地址,即"收敛"。

8.3 RIP协议的报文格式

  • 一个RIP报文最多可包括25个路由,若是超过,则必须再用一个RIP报文传送。

  • RIP是应用层协议,使用UDP传送数据。

在这里插入图片描述

8.4 RIP协议好消息传得快,坏消息传得慢

RIP的特点:当网络出现故障时,要经过比较长的时间(例如数分钟)才能将此信息传送到所有的路由器,即"慢收敛"。

正常情况:

(1)

在这里插入图片描述

(2)
在这里插入图片描述

网1出现故障:

(1)

在这里插入图片描述

(2)

在这里插入图片描述

(3)

在这里插入图片描述

(4)

在这里插入图片描述

8.5 距离向量算法

温馨提示:难点!

  1. 修改相邻路由器发来的RIP报文中的所有表项,对地址为X的相邻路由器发来的RIP报文,修改此报文中的所有表项:把"下一跳"字段中的地址改为X,并把所有的"距离"字段+1。
  2. 对修改后的RIP报文中的每一个项目,进行以下步骤:
    • R1路由表中若没有Net3,则把该项目填入R1路由表;
    • R1路由表中若有Net3,则查看下一跳路由器地址:
      • 若是下一跳是X,则用收到的项目替换源路由表中的项目;
      • 若是下一跳不是X,原来距离比从X走的距离远则更新,否则不作处理。
  3. 若180秒还没收到邻居路由器X的更新路由表,则把X记为不可达的路由器,即把距离设置为16。
  4. 返回。

在这里插入图片描述

温馨提示:以下建议会些基本数据结构、C或C++语言的知识看,不然会吃不消的感觉!

1. 上面的给出的距离向量算法的基础就是Bellman-Ford算法。它的核心之一:设P是节点A到节点B的最短路径上的一个节点,若是把路径A->B拆为两段路径A->P和P->B,则每一段路径A->P和P->也都分别是节点A到节点P和节点P到节点B的最短路径。
2. 贝尔曼-福特算法(Bellman-Ford)是由理查德·贝尔曼(Richard Bellman) 和 莱斯特·福特 创立的,求解单源最短路径问题的一种算法。有时候这种算法也被称为 Moore-Bellman-Ford 算法,因为 Edward F. Moore 也为这个算法的发展做出了贡献。它的原理是对图进行V-1次松弛操作,得到所有可能的最短路径。其优于Dijkstra算法的方面是边的权值可以为负数、实现简单,缺点是时间复杂度过高,高达O(VE)。但算法可以进行若干种优化,提高了效率。
3. Dijkstra算法无法判断含负权边的图的最短路。如果遇到负权,在没有负权回路(回路的权值和为负,即便有负权的边)存在时,也可以采用Bellman - Ford算法正确求出最短路径。
4. Bellman-Ford算法能在更普遍的情况下(存在负权边)解决单源点最短路径问题。对于给定的带权(有向或无向)图 G=(V,E), 其源点为s,加权函数 w是 边集 E 的映射。对图G运行Bellman - Ford算法的结果是一个布尔值,表明图中是否存在着一个从源点s可达的负权回路。若不存在这样的回路,算法将给出从源点s到 图G的任意顶点v的最短路径d[v]。
5. 贝尔曼-福特算法与Dijkstra算法类似,都以松弛操作为基础,即估计的最短路径值渐渐地被更加准确的值替代,直至得到最优解。在两个算法中,计算时每个边之间的估计距离值都比真实值大,并且被新找到路径的最小长度替代。 然而,Dijkstra算法以贪心法选取未被处理的具有最小权值的节点,然后对其的出边进行松弛操作;而贝尔曼-福特算法简单地对所有边进行松弛操作,共 |V|-1次,其中 |V|是图的点的数量。在重复地计算中,已计算得到正确的距离的边的数量不断增加,直到所有边都计算得到了正确的路径。这样的策略使得贝尔曼-福特算法比Dijkstra算法适用于更多种类的输入。

循环的提前跳出,出现了队列优化

  • 在实际操作中,贝尔曼-福特算法经常会在未达到 |V|-1次前就出解, |V|-1其实是最大值。于是可以在循环中设置判定,在某次循环不再进行松弛时,直接退出循环,进行负权环判定。

  • 出现了最短路径快速算法(Shortest Path Faster Algorithm),即SPFA。它是Bellman-Ford算法的一种队列优化,减少了不必要的冗余计算。西南交通大学的段凡丁于1994年提出了用队列来优化的算法。松弛操作必定只会发生在最短路径前导节点松弛成功过的节点上,用一个队列记录松弛过的节点,可以避免了冗余计算。但该结论被证明不适于于所有情况。

C++代码(队列优化Bellman-Ford算法):

int SPFA(int s) {
     queue<int> q; 
     bool inq[maxn] = {false}; 
     for(int i = 1; i <= N; i++) dis[i] = 2147483647; 
     dis[s] = 0; 
     q.push(s); inq[s] = true; 
     while(!q.empty()) { 
         int x = q.front(); q.pop(); 
         inq[x] = false;
         for(int i = front[x]; i !=0 ; i = e[i].next) {
             int k = e[i].v;
             if(dis[k] > dis[x] + e[i].w) {
                 dis[k] = dis[x] + e[i].w;
                 if(!inq[k]) {
                     inq[k] = true;
                     q.push(k);
                 }
             }
         }
     }
    for(int i =  1; i <= N; i++) cout << dis[i] << ' ';
    cout << endl;
    return 0;
}

伪代码:

bool Bellman-Ford(G,w,s)        //图G ,边集 函数 w ,s为源点
  for each vertex v ∈ V(G):     //初始化距离源点距离均为无穷大
    d[v] ←+∞
  d[s] ←0                       //源点距离自身为0
  for i = 1 → |V|:              //松弛操作需要重复多次
    for each edge (u,v) ∈ E(G):
      if d[v] > d[u] + w(u,v):
        d[v] = d[u] + w(u,v)
  for each edge(u,v) ∈ E(G):    //判断是否存在负权环路
    if d[v] > d[u] + w(u,v):
      return false
  return true

C++(较全):

#include<iostream>  
#include<cstdio>  
using namespace std;  
   
#define MAX 0x3f3f3f3f  
#define N 1010  
int nodenum, edgenum, original; //点,边,起点  
   
typedef struct Edge //边  
{  
    int u, v;  
    int cost;  
}Edge;  
   
Edge edge[N];  
int dis[N], pre[N];  
   
bool Bellman_Ford()  
{  
    for(int i = 1; i <= nodenum; ++i) //初始化  
        dis[i] = (i == original ? 0 : MAX);  
    for(int i = 1; i <= nodenum - 1; ++i)  
        for(int j = 1; j <= edgenum; ++j)  
            if(dis[edge[j].v] > dis[edge[j].u] + edge[j].cost) //松弛(顺序一定不能反~)  
            {  
                dis[edge[j].v] = dis[edge[j].u] + edge[j].cost;  
                pre[edge[j].v] = edge[j].u;  
            }  
    bool flag = 1; //判断是否含有负权回路  
    for(int i = 1; i <= edgenum; ++i)  
        if(dis[edge[i].v] > dis[edge[i].u] + edge[i].cost)  
        {  
            flag = 0;  
            break;  
        }  
        return flag;  
}  
   
void print_path(int root) //打印最短路的路径(反向)  
{  
    while(root != pre[root]) //前驱  
    {  
        printf("%d-->", root);  
        root = pre[root];  
    }  
    if(root == pre[root])  
        printf("%d\n", root);  
}  
   
int main()  
{  
    scanf("%d%d%d", &nodenum, &edgenum, &original);  
    pre[original] = original;  
    for(int i = 1; i <= edgenum; ++i)  
    {  
        scanf("%d%d%d", &edge[i].u, &edge[i].v, &edge[i].cost);  
    }  
    if(Bellman_Ford())  
        for(int i = 1; i <= nodenum; ++i) //每个点最短路  
        {  
            printf("%d\n", dis[i]);  
            printf("Path:");  
            print_path(i);  
        }  
    else  
        printf("have negative circle\n");  
    return 0;  
}  

8.6 距离向量算法题

(1)已知路由器R6的路由表,现收到相邻路由器R4发来的路由更新信息,试更新路由器R6的路由表。

在这里插入图片描述

(2)选择题

在这里插入图片描述

解:

在这里插入图片描述

8.7 小结

在这里插入图片描述


9 OSPF协议及链路状态算法

在这里插入图片描述

9.1 OSPF协议

(1)OSPF协议:全称Open Shortest Path First 协议,即开放最短路径优先协议。

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

(3)OSPF最主要的特征是:使用分布式的链路状态协议

(4)OSPF的特点:

  1. 使用洪泛法向自治系统内所有路由器发送信息,即路由器通过输出端口向所有相邻的路由器发送信息,而每一个相邻路由器又再次将此信息发往其所有的相邻路由器。广播
    • 最终整个区域内所有路由器都得到了这个信息的一个副本。
  2. 发送的信息就是与本路由器相邻的所有路由器的链路状态(本路由器和哪些路由器相邻,以及该链路的度量/代价——费用、距离、时延、带宽等)。
  3. 只有当链路状态发生变化时,路由器才向所有路由器洪泛发送此信息。

最后,所有路由器都能建立一个链路状态数据库,即全网拓扑图

9.2 链路状态路由算法

  1. 每个路由器发现它的邻居节点【HELLO问候分组】,并了解邻居节点的网络地址。
  2. 设置到它的每个邻居的成本变量 metric。
  3. 构造【DD数据库描述分组】,向邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息。
  4. 如果DD分组中的摘要自己都有,则邻站不做处理;如果是没有的或者是更新的,则发送【LSR链路状态请求分组】请求自己没有的和比自己更新的信息。
  5. 收到邻站的LSR分组后,发送【LSU链路状态更新分组】进行更新。
  6. 更新完毕后,邻站返回一个【LSAck链路状态确认分组】进行确认。只要一个路由器的链路状态发送变化。
  7. 泛洪发送【LSU链路状态更新分组】进行更新。
  8. 更新完毕后,其它站返回一个【LSAck链路状态确认分组】进行确认。
  9. 使用Dijkstra根据自己的链路状态数据库构造到其它节点间的最短路径。

9.3 OSPF的区域

  • 为了使OSPF能够用于规模很大的网络,OSPF将一个自治系统再划分为若干个更小的范围,叫做区域。每一个区域都有一个32位的区域标识符(用点十进制表示)。

  • 区域也不能太大,在一个区域内的路由器最好不超过200个。

在这里插入图片描述

9.4 OSPF分组

OSPF直接用IP数据报传送。

在这里插入图片描述

9.5 OSPF其它特点

  1. 每隔30min,要刷新一次数据库中的链路状态。
  2. 由于一个路由器的链路状态只涉及到与相邻路由器的连通状态,因而与整个互联网的规模并无直接关系。因此当互联网规模很大时,OSPF 协议要比距离向量协议 RIP 好得多。
  3. OSPF不存在坏消息传得慢的问题,它的收敛速度很快

10 BGP协议

在这里插入图片描述

10.1 BGP协议

BGP:全称为Border Gateway Protocol,即边界网关协议。

在这里插入图片描述

1. 和谁交换? 答:与其它AS的邻站BGP发言人交换信息。
2. 交换什么? 答:交换的网络可达性的信息,即要到达某个网站所要经过的一系列AS。
3. 多久交换? 答:发生变化时,更新有变化的部分。

10.2 BGP协议的交换信息过程

(1)BGP所交换的网络可达性的信息:就是要到达某个网络所要经过的一系列AS。当BPG发言人互相交换了可达性的信息后,各BGP发言人就根据所采用的策略收到的路由信息中找出到达各AS的较好路由

在这里插入图片描述

(2)BGP发言人交换路由向量:

  • 自治系统AS(2)的BGP发言人通知主干网AS(1)的BGP发言人:“要到达网络N1、N2、N3和N4可经过AS(2)。”

  • 主干网还可发出通知:“要到达网络N5、N6、N7可沿着路径{AS(1),AS(3)}”

在这里插入图片描述

10.3 BGP协议的报文格式

(1)一个BGP发言人与其它自治系统的BGP发言人要交换路由信息,就要先建立TCP连接,即通过TCP传送,然后在此连接上交换BGP报文以建立BGP会话(session),利用BGP会话交换路由信息。

(2)BGP是应用层协议,借助TCP协议。

在这里插入图片描述

10.4 BGP协议的特点

(1)BGP支持CIDR,因此BGP的路由表也就应当包括目的网络前缀、下一跳路由器、到达该目的网络所要经过的各个自治系统序列。

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

10.5 BGP-4 的四种报文

  1. OPEN(打开)报文:用来与相邻的另一个BGP发言人建立关系,并认证发送方。
  2. UPDATE(更新)报文:通告新路径或撤销原路径。
  3. KEEPALIVE(保活)报文:在无UPDATE时,周期性证实邻站的连通性,也作为OPEN的确认。
  4. NOTIFICATION(通知)报文:报告先前报文的差错,也被用于关闭连接。

10.6 三种路由协议的比较

  • RIP是一种分布式的基于距离向量的内部网关路由选择协议,通过广播UDP报文来交换路由信息。

  • OSPF是一个内部网关协议,要交换的信息量较大,应使报文的长度尽量短,所以不使用传输层协议(如UDP或TCP),而是直接采用网络层协议IP。

  • BGP是一个外部网关协议,在不同的自治系统之间交换路由信息,由于网络环境复杂,需要保证可靠传输,所以采用TCP。

来个表瞧瞧:

在这里插入图片描述


11 IP组播

11.1 IP数据报的三种传输方式:

  • 单播
    • 单播用于发送数据到单个目的地,且每发送一份单播报文都使用一个单播IP地址作为目的地址。是一种点对点传输方式。
    • 单播在发送者和每一接收者之间需要单独的数据信道
  • 广播
    • 广播是指发送数据到同一广播域或子网内的所有设备的一种数据传输方式。是一种点对多点的传输方式。
  • 组播(多播)
    • 当网络中的某些用户需要特定数据时,组播数据发送者仅发送一次数据,借助组播路由协议为组播数据包建立组播分发树,被传递的数据到达距离用户端尽可能近的节点后才开始复制和分发,是一种点对多点传输方式。
    • 组播提高了数据传送效率,减少了主干网出现拥塞的可能性。组播组中的主机可以是在同一个物理网络,也可以来自不同的物理网络(需要有组播路由器的支持,即运行组播协议的路由器)。

图示:

在这里插入图片描述

11.2 IP组播地址

(1)IP组播地址让源设备能够将分组发送给一组设备。属于多播组的设备将被分配一个组播组IP地址(一群共同需求主机的相同标识)。

(2)组播地址范围为224.0.0.0~239.255.255.255(D类地址),一个D类地址表示一个组播组。只能用作分组的目标地址。源地址总是为单播地址

  1. 组播数据报也是"尽最大努力交付",不提供可靠交付,应用于UDP。UDP是传输层的协议
  2. 对组播数据报不产生ICMP差错报文。
  3. 并非所有D类地址可以作为组播地址。

在这里插入图片描述

11.3 硬件组播

(1)同单播地址一样,组播IP地址也需要相应的组播MAC地址在本地网络中实际传送帧。组播MAC地址以十六进制值01-00-5E打头,余下的6个十六进制位是IP组播组地址的最后23位转换得到的。

(2)TCP/IP协议使用的以太网多播地址的范围是:

​ 从01-00-5E-00-00-0001-00-5E-7F-FF-FF

在这里插入图片描述

(3)收到多播数据报的主机,还要在IP地址利用软件进行过滤,把不是本主机要接收的数据报丢弃。

11.4 IGMP——网际组管理协议

  • IGMP,全称为Internet Group Management Protocol,即互联网组管理协议、网际组管理协议。

  • IGMP是TCP/IP协议族中负责IP组播成员管理的协议,用来在IP主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系。

    # 当一台主机加入到一个新的组时,它发送一个IGMP消息到组地址来宣告它的成员身份,多播路由器就可以从中学习(知道)到组的成员。利用从IGMP中获取到的信息,路由器在每个接口上维护一个多播组成员的列表。
    
  • IGMP协议让路由器知道本局域网上是否有主机(的进程)参加或退出了某个组播组

在这里插入图片描述

  • ICMP协议和IGMP都使用IP数据报传递报文。

在这里插入图片描述

11.5 IGMP工作的两个阶段

ROUND 1:

  • 某主机要加入组播组时,该主机向组播组的组播地址发送一个IGMP报文,声明自己要称为该组的成员。

  • 本地组播路由器收到IGMP报文后,要利用组播路由选择协议把这组成员关系发给因特网上的其他组播路由器。

ROUND 2:

  • 本地组播路由器周期性探询本地局域网上的主机,以便知道这些主机是否还是组播组的成员。

  • 只要有一个主机对某个组响应,那么组播路由器就认为这个组是活跃的;如果经过几次探询后没有一个主机响应,组播路由器就认为本网络上的网络上没有此组播组的主机。因此就不再把这组的成员关系发给其它的组播路由器。

组播路由器知道的成员关系只是所连接的局域网中有无组播的成员。

11.6 组播路由选择协议

在这里插入图片描述

  • 组播路由选择协议目的是:找出以源主机为根节点的组播转发树

  • 构造树可以避免在路由器之间兜圈子。

  • 对不同的多播组对应于不同的多播转发树;同一个多播组,对不同的源点也会有不同的多播转发树。

在这里插入图片描述

组播路由选择协议常使用的三种算法:

  1. 基于链路状态的路由选择
  2. 基于距离-向量的路由选择
  3. 协议无关的组播(稀疏/密集)

11.7 小结

在这里插入图片描述


12 移动IP

12.1 移动IP的相关术语

  • 移动IP技术是移动结点(计算机/服务器等)以固定的网络IP地址,实现跨越不同网段的漫游功能,并保证了基于网络IP的网络权限在漫游过程中不发生任何改变。
  • 移动结点:具有永久IP地址的移动设备。
  • 本地代理(归属代理):一个移动结点拥有的旧"居所"称为归属网络,在归属网络中代表移动结点执行移动管理功能的实体叫做归属代理。比如:一个人的手机的移动电话号码,通话时会显示广东广州(注意:广东广州是手机卡的网络服务点,IP地址是手机卡连的路由器等分配的,而手机本身是没有IP地址,手机的唯一识别的是MAC地址、硬件地址),广东广州移动服务器就是该手机的本地代理。
  • 外部代理(外地代理):在外部网络中帮助移动结点完成移动管理功能的实体叫做外部代理。
  • 永久地址(归属地址/主地址):移动站点在归属网络中的原始地址。
  • 转交地址(辅地址):移动站点在外部网络使用的临时地址。

12.2 移动IP通信过程

在这里插入图片描述

(1)A刚进入外部网络:

  1. 在外地代理登记获得一个转交地址,离开时注销。
  2. 外地代理向本地代理登记转交地址。

(2)B给A发送数据报:

  1. 本地代理截获数据报。
  2. 本地代理再封装数据报,新的数据报目的地址是转交地址,发给外地代理(隧道)注意:本地代理存有外地代理的转交地址!
  3. 外地代理拆封数据报并发给A。
# 比如:我手机卡号都是广东东莞的,但是我现在出差在山东济南,而在山东济南的HXD(卡号也在山东济南)发手机信息给我,表面上是两个手机卡号在山东济南通信,实际上是山东济南的HXD先通信到我广东东莞的本地代理,本地代理再封装数据报,并通过存有的转交地址发给外地代理,最后外地代理拆封数据报,并发给我的手机(卡号)。

(3)A给B发送数据报:

  1. A用自己的本地地址作为数据报的源地址,用B的IP地址作为数据报的目的地址。`这里B处于它的归属网络

(4)A移动到了下一个网络:

  1. 在新外地代理登记注册一个转交地址。
  2. 新外地代理给本地代理发送新的转交地址。
  3. 通信。

(5)A回到了归属网络:

  1. A向本地代理注销转交地址。
  2. 按原始方式通信。

13 网络层设备

13.1 路由器

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

在这里插入图片描述

(2)路由选择VS分组转发

  • 根据所选定的路由选择协议构造出路由表,同时经常或定期地和相邻路由器交换路由信息而不断地更新和维护路由表

  • 交换结构:根据转发表(路由表得来)对分组进行转发

  • 若收到RIP/OSPF分组等,则把分组送往路由选择处理机。若收到数据分组,则查找转发表并输出。

在这里插入图片描述

13.2 输入端口对线路上收到的分组的处理

(1)输入端口中的查找和转发功能在路由器的交换功能中是最重要的。

在这里插入图片描述

13.3 输出端口将交换结构传送来的分组发送到线路

(1)若路由器处理分组的速率赶不上分组进入队列的速率,则队列的存储空间最终必定减少到零,这就使后面再进入队列的分组由于没有存储空间而只能被丢弃。

(2)路由器中的输入或输出队列产生溢出是造成分组丢失的重要原因。

在这里插入图片描述

13.4 三层设备的区别

(1)路由器: 可以互联两个不同网络层协议的网段。

(2)网桥 : 可以互联两个物理层和链路层不同的网段。

(3)集线器: 不能互联两个物理层不同的网段。

在这里插入图片描述

13.5 路由表与路由转发

(1)路由表是根据路由选择算法得出的,主要用途是路由选择,常用软件来实现。

1. 如果数据是路由器之间的交换路由信息的分组,就把该分组交付给上面的那个路由选择处理机,进行处理和计算;如果是数据报分组,就会放入交换结构,然后再选择一个合适的输出端口输出。
2. 对于广播组传到一个路由器,就发不出去了,只能在路由器所连接的一个局域网内进行广播。
3. 只要发送的分组在路由表找不到所对应的表项,即不知道从哪一跳发出去,就发给【默认路由】。默认路由通常是该局域网的一个具体路由器,发布出去就找它,就算是个"场内救助"。

在这里插入图片描述

(2)转发表是根据路由表得来,可以用软件实现,也可以用特殊的硬件来实现。转发表必须包含完成转发功能所必需的信息,在转发表的每一行必须包含 从 要到达的目的网络 到 输出端口和某些MAC地址信息的映射。

猜你喜欢

转载自blog.csdn.net/xu_yushu/article/details/124560076