【计算机网络】第四章--网络层

1、网络层

1.1、网络层功能概述

  • 主要任务

    是把分组从源端传到目的端,为分组交换网上的不同主机提供通信服务

    网络层传输单位是 IP数据报/分组

    • 数据报和分组是父与子的关系,数据报是比较长的数据,分组是对数据报进行切割划分出来的片段
  • 功能

    • 路由选择与分组转发

      路由选择就是找路,通过路由选择算法找到最佳路径

    • 异构网络互联

      网络的异构性指的是传输介质、数据编码方式、链路控制协议以及不同的数据单元格式和转发机制,这些特点分别在物理层和数据链路层中定义

    • 拥塞控制

      若所有结点都来不及接受分组,而要丢弃大量分组的话,网络就处于拥塞状态。因此要采取一定措施,缓解这种拥塞

      • 开环控制:静态方法,类似数据链路层中的信道划分介质访问控制
      • 闭环控制:动态方法,类似数据链路层中的随机访问介质访问控制

1.2、电路、报文与分组交换

1)为什么要数据交换?

通过交换网络实现数据的传递与交流

2)数据交换方式

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

3)电路交换(独占资源)

  • 原理

在数据传输期间,源结点与目的结点之间有一条由中间结点构成的专用物理连接线路,在数据传输结束之前,这条线路一直保持

  • 步骤
    1. 建立连接(呼叫/电路建立)
    2. 通信
    3. 释放连接(拆除电路)

举例:电话网络

拨号的时候就是建立连接,接收方接收电话就相当于双方的连接正式建立,然后双方通话相当于进行数据传输,挂断电话相当于连接释放,此时其他人就可以利用刚才的链路进行数据通信

  • 特点

    • 独占资源,用户始终占用端到端的固定传输带宽

      例如A和B打电话,即使两人不讲话,这个资源也被占用

    • 适用于 远程批处理信息传输 或系统间 实时性要求高 的大量数据传输的情况

  • 优点

    • 通信时延小:因为连接建立好以后,数据就可以直接传输了,没有检错
    • 有序传输:发送方和接收方是独占资源,因此发送数据、接收数据、传输都是按序进行
    • 全双工通信,没有冲突:通信双方有不同的信道,不会争用物理信道
    • 实时性强:双方一旦建立物理通路,便可以实时通信,适用于交互式会话类通信
    • 适用于 模拟信号数字信号
  • 缺点

    • 建立连接时间长:比如电话网络连接过程,要先拨号,然后等接收方接通以后才能建立连接
    • 线路独占,使用效率低:如果双方建立连接后不进行数据传输,那么该信道就浪费了
    • 灵活性差:假如有一个交换设备宕机,该通信线路就无法进行通信了
    • 没有差错控制能力:只是单纯的传输数据
    • 无数据存储能力,难以平滑通信量

4)报文交换(存储转发)

报文(message):是网络中交换与传输的数据单元,即站点一次性要发送的数据块(源主机应用发送的信息整体,例如源主机要发送一个pdf文件,那这个pdf文件就是报文)

报文包含了将要发送的完整的数据信息,其长短很不一致,长度不限且可变

  • 原理

无需在两个站点之间建立一条专用通路,其数据传输的单位是报文(插一句:数据传输基本单位是IP数据报/分组哦),传送过程采用存储转发方式。(可以在一个交换设备A中存储一会儿,然后可以走B也可以走C,取决于哪条链路是空闲的,再转发出去。)

  • 优点

    • 无需建立连接
    • 存储转发,动态分配线路
    • 线路可靠性高
    • 线路利用率较高
    • 多目标服务:一个报文可同时发往多个目的地址
  • 缺点

    • 有存储转发时延,不适合传送实时或交互式业务的数据
    • 报文大小不定,需要网络节点有较大缓存空间
    • 只适用于数字信号

5)分组交换(存储转发)

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

  • 原理

分组交换与报文交换的工作方式基本相同,都采用存储转发方式,形式上的主要差别在于,分组交换网中要限制所传输的数据单位的长度,一般选128B。发送节点首先对从终端设备送来的数据报文进行接收、存储,而后将报文划分成一定长度的分组,并以分组为单位进行传输和交换。接收结点将收到的分组组装成信息或报文

  • 优点

    • 无需建立连接:不需要预先建立专门通信线路,用户可随时发送分组

    • 存储转发,动态分配线路

    • 线路可靠性较高:分组较短,减少了出错几率

    • 线路利用率较高:通信双方在不同的时间一段一段地部分占有这条物理通道,多个分组可共享信道

    • 相对于报文交换,存储管理更容易

      因为分组的长度固定,相应的换乘区的大小也固定。
      适用于计算机之间突发性数据通信:因为分组短小

  • 缺点

    • 有存储转发时延
    • 需要传输额外的信息量:每个分组都要加控制信息,增加了处理的时间
    • 当分组是乱序到目的主机时,要对分组进行排序重组

6)数据交换方式的选择

分组交换的数据传输过程可以看作流水线。计算最后一个分组到达目的主机的时延即可

1.3、分组交换 数据报 与 虚电路

1)数据报方式

因特网在用

  • 通信过程

    1. 源主机(A)将报文分成多个分组,依次发送到直接相连的结点(A)
    2. 结点A收到分组后,对每个分组差错检测和路由选择,不同分组的下一跳结点可能不同
    3. 结点C收到分组P1后,对分组P1进行差错检测,若正确则向结点A发送确认信息,结点A收到结点C确认后则丢弃分组P1副本
    4. 所有分组到达(主机B)
  • 特点

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

      无连接服务:不事先为分组的传输确定传输路径,每个分组独立确定传输路径,不同分组传输路径可能不同。类似微信发消息发生错位,后面章节会讲到分组重组

    • 同一报文的不同分组达到目的结点时可能发生乱序、重复与丢失

    • 每个分组在传输过程中都必须携带 源地址目的地址,以及 分组号

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

    • 分组在交换结点存储转发时,需要排队等候处理,这会带来一定的时延。当通过交换结点的通信量较大或网络发生拥塞时,这种时延会大大增加,交换结点还可根据情况丢弃部分分组

    • 网络具有冗余路径,当某一交换结点或一段链路出现故障时,可相应地更新转发表,寻找另一条路径转发分组,对故障的适应能力强,适用于突发性通信,不适于长报文、会话式通信

2)虚电路方式

虚电路将 数据报方式(体现在分组)和 电路交换方式(体现在建立连接)结合,以发挥两者优点

  • 描述

    一条源主机到目的主机类似于电路的路径(逻辑连接),路径上所有结点都要维持这条虚电路的建立,都维持一张虚电路表,每一项记录了一个打开的虛电路的信息

  • 通信过程

    1. 建立连接:A主机给B主机发送“呼叫请求”分组并收到“呼叫应答”分组后才算建立连接
    2. 数据传输:全双工通信(A和B互相发送数据)。每个分组携带虚电路号(作用是指引当前分组应该走哪一条虚电路,分组到路由器以后,路由器检索转发表,就知道该分组应该从哪个口转出去,这里就体现了电路交换方式),分组号、检验和等控制信息。
    3. 释放连接(虚电路释放):源主机发送“释放请求”分组以拆除虚电路
  • 特点

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

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

    • 一次通信的所有分组都 通过虚电路顺序传送,分组不需携带源地址、目的地址等信息。携带虚电路号,相对数据报方式开销小,同一报文的不同分组到达目的结点时不会乱序、重复或丢失

    • 分组通过虚电路上的每个节点时,节点只进行差错检测,不需进行路由选择

    • 每个节点可能与多个节点之间建立多条虚电路,每条虚电路支持特定的两个端系统之间的数据传输,可以对两个数据端点的流量进行控制,两个端系统之间也可以有多条虚电路为不同的进程服务。

    • 致命弱点:当网络中的某个结点或某条链路出故障而彻底失效时,则所有经过该结点或该链路的虚电路将遭到破坏

3)特点总结

4)名词解析

层次数据单元说明
应用层报文整个信息,如文件
传输层报文段把很长的报文分割成一小段
网络层IP数据报、分组封装了网络层的IP地址(源/目的);数据报过大时分组
数据链路层加头:MAC地址;加尾:FCS帧检验序列
物理层比特流把比特流转成信号的形式放到链路上进行传输

2、路由算法与路由协议概述

2.1、路由算法

最佳路由:“最佳”只能是相对于某一种特定要求下得出的较为合理的选择而已

2.2、路由算法的分类

  • 静态路由算法

    (非自适应路由算法) 管理员手工配置路由信息

    • 优点:简便、可靠,在负荷稳定、拓扑变化不大的网络中运行效果很好,广泛用于高度安全性的军事网络和较小的商业网络
    • 缺点:路由更新慢(路由表需要人工更新),不适用大型网络
  • 动态路由算法

    (自适应路由算法)路由器间彼此交换信息,按照路由算法优化出路由表项

    • 优点:路由更新快,适用大型网络,及时响应链路费用或网络拓扑变化
    • 缺点:算法复杂,增加网络负担
    • 分类
      • 全局性:链路状态路由算法,应用于OSPF协议,所有路由器掌握完整的网络拓扑和链路费用信息。适用于较大网络
      • 分散性:距离向量路由算法,应用于RIP协议,路由器只掌握物理相连的邻居及链路费用。适用于较小网络

2.3、分层次的路由选择协议

  • 自治系统AS(使用内部网关协议)

    在单一的技术管理下的一组路由器,而这些路由器使用一种AS内部的路由选择协议(内部网关协议)和共同的度量以确定分组在该AS内的路由,同时还使用一种AS之间的路由协议(外部网关协议EGP)以确定在AS之间的路由。
    一个AS内所有网络都属于一个行政单位来管辖,一个自治系统的所有路由器在本自治系统内都必须连通

  • 路由选择协议

    • 内部网关协议IGP:一个AS内使用的,例如RIP(距离向量路由算法)、OSPF(链路状态路由算法)
    • 外部网关协议EGP:AS之间使用的,例如BGP(BGP-4)

采用分层路由后,路由器被划分为区域,每个路由器知道如何将分组路由到自己所在区域内的目标地址,但对于其他区域内的结构毫不知情。当不同的网络相互连接时,可将每个网络当作一个独立的区域,这样做的好处是一个网络中的路由器不必知道其他网络的拓扑结构

2.4、路由器交付

路由选择分为直接交付间接交付,当发送站与目的站在同一网段内,就使用直接交付(对应RIP协议局域网内发送数据过程);反之使用间接交付(对应RIP协议不同局域网之间发送数据过程)。直接交付是在同一网段内,不涉及路由器。

3、IPv4

IP协议:不可靠,无连接,采用分组交换技术

3.1、IPv4分组

IP分组/IP数据报 是数据传送的基本单元

  • IPv4

    • 即现在普遍使用的IP协议(版本为4)
    • IP协议定义数据传送的基本单元——IP分组/IP数据报及其确切的数据格式
    • IP协议也包括一套规则,指明分组如何处理、错误怎样控制。特别是,IP协议还包括非可靠投递的思想(对于出错的分组丢弃并发送一个ICMP差错报文),以及与此关联的分组路由选择的思想
  • IP协议

    • 不可靠(对于出错的分组丢弃并发送一个ICMP差错报文)
    • 无连接(分组交换的数据报方式就是无连接的)
    • 采用分组交换技术(数据报方式)

1)TCP/IP协议栈

  • ARP协议为IP协议服务,IP协议为ICMP和IGMP协议服务

注意:在TCP/IP参考模型中,物理层和数据链路层一起称为网络接口层

2)IPv4分组的格式

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

注意:在网络层章节,IP数据报和分组不用做太详细区分

  • 数据部分:传输层的传输单元报文段,因为含有TCP、UDP段

  • 首部:

    • 首部固定部分(20B)

      对于任何一个IP数据报,它的大小都相同,为20字节(20B),一定要有

      共5行,每行32bit,即4Byte(字节),所以为 5*4 = 20B,详见下图

    • 首部可变部分(0~40B):可有可无,大部分情况下没有


首部详解


  • 首部固定部分各组成信息如下:

    • 版本:版本字段长度为0-4bit;版本类型为 IPv4/IPv6

    • 首部长度(最大60B):

      长度为 4-8bit:4位的二进制数,可以表示16个(即2^4)十进制数0 ~ 15,所以长度值为0 ~15

      单位是4B:假如长度是8,8 * 4B=32B,则首部长度的大小为32B(包含了可变长度)

      首部长度最大值:15 * 4B = 60B(固定20B + 可变40B,5 * 4B + 10 * 4B = 15 * 4B)

      长度最小为5:因为首部固定部分长度就为20B,20B/4B=5,所以首部长度最小为5

    • 区分服务:指期望获得哪种类型的服务。比如有的数据报想先发送

    • 总长度:首部长度 + 数据部分,单位是1B

      占16位:16 — 31

      总长度上限值为 2^16-1=65525*1B = 65525B。实际上不会达到上限值,因为长度过大时会分组,以满足数据链路层的MTU(最大数据传输单元)的要求

    • 生存时间(TTL:time to live):IP分组的保质期。每经过一个路由器生存时间就-1,直到变成0则丢弃。(ICMP协议中有应用)

    • 协议:数据部分的协议

      需要重点记住的是TCP字段值为6(记:面向连接,很溜,6),UDP字段值为17(记:无连接不可靠,容易遗弃,17)

    • 首部检验和:只检验首部

      为什么叫首部检验和呢?

      因为检验首部使用的方法是使用二进制的求和,在数据传输过程中,数据报每经过一个路由器,路由器都要重新计算一下首部检验和。因为有些字段(例如生存时间,标志等)都可能发生变化,需要通过首部检验和检验一下发生变化后的数据报有没有出错,如果出错则丢弃

    • 源IP地址和目的IP地址:长度为32位

  • 可变部分信息如下:

    • 可选字段:0 ~ 40B

      可有可无

      大小来源:首部最大60B - 固定部分20B

      用来支持排错、测量以及安全等措施

    • 填充:全0

      把首部补成4B的整数倍。因为首部的长度单位是4B

3.2、IP数据报分片

1)最大传送单元MTU

Maximum Transfer Unit

链路层数据帧可封装数据的上限。例如以太网的MTU是1500字节。

如果所传送的IP数据报/分组的长度超过某链路的MTU值?——分片

所以分片的目的是为了在链路层传输的数据帧的长度不超过MTU值。

2)理解分片

结合IP数据报的标识、标志和片偏移(单位是8B)理解分片

  • 标识:16位

    同一数据报的分片使用同一标识。一个数据报的长度超过了MTU,就要进行分片,每个分片的标识相同,到了接收端就可以把同一标识的分片组合起来形成原来的数据报

  • 标志:3位,只有2位有意义:x _ _

    • 最高位保留不用
    • 中间位DF(Don't Fragment:不许分片):DF=1为真,禁止分片;DF=0为假,允许分片
    • 最低位MF(More Fragment:更多分片):MF=1,后面“还有分片”;MF=0,代表最后一片/没有分片(数据报长度不大)
    • 可以看出,只有 DF = 0 时,MF 才有意义
  • 片偏移

    指出较长分组分片后,某片在原分组中的相对位置。8B 为单位(首部单位是4B)

    可以推断:除了最后一个分片,每个分片的数据部分长度一定是 8B 的整数倍

3)计算片偏移

  • 片偏移分析过程

    分片长度不超过1420B,首部为20B,所以每个分片数据部分不超过1400B。原始IP数据报数据部分为3800B,可以分为3个分片:第一和二分片数据部分1400B,第三个分片数据部分1000B。另外分片的首部长度与原始数据报的首部长度相同都为20B。

  • 片偏移 = 数据部分起始字节(单位8B)

    • 计算第一个分片 片偏移:数据部分起始字节为 0~1399B,0B/8B = 0
    • 计算第二个分片 片偏移:数据部分起始字节为1400~2799B,1400B/8B = 175
    • 计算第三个分片 片偏移:数据部分起始字节为2800~3799B,2400B/8B = 350

4)IP数据报格式各单位总结

  • 一种八片首饰
    • 1B 总()长度单位
    • 8B 偏移单位
    • 部长度单位 4()B

3.3、IPv4地址

1)IP地址

主机A要与其主机B通信,就要知道主机B在哪个网络?是哪个主机?

IP地址就是给网络中的每一个主机或者说每一个主机的接口以及路由器的接口都赋予一个全球唯一化的标识符

2)IP编址的历史阶段

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

3)分类的IP地址

  • IP地址组成

    实例:身份证号码:110000 19960101 044 2

    六位数字地址码,八位数字出生日期码,三位数字顺序码,一位数字校验码(性别)

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

    • IP地址::={<网络号>,<主机号>}

  • IP地址:网络号 + 主机号;网络地址:网络号

  • 互联网中的IP地址

  • 左边黄色区域:网络号为222.1.3.0,主机号分别是222.1.3.1、222.1.3.2、222.1.3.3
  • 图中的每一个路由器有三个IP地址,因为路由器的每个接口都有一个IP地址
  • 绿色区域也可以称为网络,叫做无编号网络(有IP地址,但是由一段线构成)

  • 分类的IP地址

D类地址是多播地址:在一对多通信的时候使用的地址。(IP组播地址会讲到)

  1. A类网络号范围 1 ~ 126

    A类网络号占8位(1字节),又因为第一位必须为0,所以后7位可以组2^7 =128个网络号

    范围为 0 ~ 2^7-1 = 127。其中网络号全0表示本网,127表示环回地址

    故A类地址网络号范围为 1~126(去掉 0 和 127)

    其中第一个网络号全0:0.0.0.0表示本网。最后一个网络号127.0.0.0表示环回地址

    私有IP地址10.0.0.0 ~ 10.255.255.255共1个网段(网络号)。路由器对目的地址是私有IP地址的数据报一律不进行转发。要与外部互联网建立通信,需要通过网络地址转换NAT。

  2. B类网络号范围 128~191

    网络号占16位(2字节)

    前两位必须为10,所以后6位可以组 2^6 = 64个网络号,最大网络号为 128 + (2^6-1) = 191

    其中第一个网络号128.0不可指派

    私有IP地址172.16.0.0 ~ 172.31.255.255共16个网段

  3. C类网络号范围 192~223

    网络号占24位(3字节)

    前三位必须为110,所以后5位组成最大网络号为 192 + (2^5-1) = 223。

    其中第一个网络号192.0.0不可指派

    私有IP地址192.168.0.0 ~ 192.168.255.255共256个网段


  • 特殊IP地址


  • 私有IP地址


  • 不同类的IP地址特点

  • A类别:最大可用网络数为什么减2?
    • 网络号全0时和127时为特殊IP地址
  • 为什么每个网络中的最大主机数减2?
    • 主机号全0(只表示网络)和主机号全1(广播地址)为特殊IP地址
  • B类别:最大可用网络数为什么减1?
    • 128.0 网络号(B类第一个网络号)不可指派(但现在已经指派出去了)
  • C类别:最大可用网络数为什么减1?
    • 192.0.0(C类第一个网络号)网络号不可指派

3.4、网络地址转换NAT

  • 网络地址转换NAT ( Network Address Translation)

    在专用网(私有IP地址)连接到因特网的路由器上安装NAT软件,安装了NAT 软件的路由器叫NAT路由器,它至少有一个有效的外部全球IP地址

  • 网络地址转换过程

    传输层报文段(携带端口信息)传到网络层,网络层封装为IP数据报,通过数据链路层传输到目的主机后,目的主机的传输层解封装取得端口号。

  • 网络层转换过程

    在网络层A发送IP数据报:封装了源IP地址192.168.0.3(私有IP地址)和目的IP地址213.18.2.4
    传输到NAT路由器后,根据NAT转换表:将LAN端的源IP地址192.168.0.3转换为WAN端的路由器IP地址172.38.1.5。此时数据报就可以在因特网中被识别和转发。
    B发送IP数据报给A:目的地址为NAT路由器全球IP地址

3.5、子网划分和子网掩码

1)子网划分

子网号能否全0全1要看情况

  • 分类的IP地址的弱点

    • IP地址空间的利用率有时很低

      比如单位想申请B类网络,但是主机数量又不多,这样就会造成IP地址的浪费

    • 两级IP地址不够灵活

  • 有没有一种办法可以随时随地,灵活增加本单位的网络,不需要事先去ISP申请新的网络号呢?

    可以使用子网划分!

  • 划分子网思想

    • 主机号当中较高的位数作为子网号
    • 由于主机号不能全0或全1,所以主机号至少两位(如果只有一位的话,0或1)
    • 子网号能否全0全1要看情况

2)子网掩码

  • 案例:单位网络

图中白色方框写子网的都是子网网络地址,而网络145.13.0.0是单位的网络地址。外部想访问子网网络地址,都要先到网络IP地址为145.13.0.0的路由器接口,然后经过子网掩码的计算才能访问子网网络地址


  • 子网掩码:无论是二级IP地址,还是三级IP地址,只要是网络号就全写1(子网号也全写1,注意并不是第三个字节八位都是子网号都写1,而是主机号当中较高的位数作为子网号才写1),只要是主机号就全0


  • 如何判断IP数据报通过路由器分给哪个子网网络地址?

    子网掩码与IP地址逐位 相与,就得到子网网络地址

    IP地址:网络号+主机号

    网络地址:网络号

    255的二进制 与任意的二进制 相与,还得原来的二进制

    0的二进制 与任意的二进制 相与,都得 0

    二进制相与:1 & 1 = 1 ,其余为 0

    与程序语言中一致:1表示真,0表示假;都是真1,结果即为真1,有一为假0,结果即为假0

    1. 将目的主机的IP地址145.13.3.10的子网号3写为二进制:00000011
    2. 与子网掩码的11111111逐位相与(都是1则返回1,否则返回0),得到00000011,即子网号为3
    3. 所以子网网络地址为145.13.3.0

3)习题

  • 已知目的IP地址是141.14.72.24,子网掩码是255.255.192.0, 求网络地址。如果子网掩码是255.255.224.0,求网络地址

    72 = 64 + 8 = 2^6 + 2^3 = 01001000

    此题为已知目的地址,求子网网络地址。对于第一问:

    分析:子网掩码与IP地址逐位相与,就得到子网网络地址。因为子网掩码前两个字节都是全1,IP地址的前两个字节与子网掩码前两个字节相与后不变,所以只需要求IP地址的72与子网掩码192的相与结果。
    计算:IP地址的72转为二进制是:01001000,子网掩码192转为二进制是11000000,相与后得01000000即64。所以子网网络地址为141.14.64.0。
    第二问同理得子网网络地址为141.14.64.0


  • 某主机的IP地址为180.80.77.55,子网掩码为255.255.252.0。若该主机向其所在子网发送广播分组,则目的地址可以是( )。
    A.180.80.76.0 B. 180.80.76.255 C. 180.80.77.255 D. 180.80.79.255

    此题为求同一子网内的目的地址。

    1. 确定主机号:该主机发送广播分组,所以目的地址的主机号全1
    2. 确定网络号:因为主机IP地址是180开头,该网络是B类网络,前两个字节为网络号。故该子网的网络号是180.80.0.0
    3. 计算子网号:子网掩码的252二进制为11111100,可以推出子网号是前6位,后10位是主机号。于是主机的子网号也是前6位(在同一子网内),即77的二进制01001101的前六位是子网号为010011,所以目的地址的子网号也是010011即76
    4. 得出目的地址:又目的地址的主机号全1,所以目的地址后10位全1。目的地址的后16位是01001111-11111111,前8位转为十进制是79。故目的地址可以是180.80.79.255

252 = 128 + 64 + 32 + 16 + 8 + 4 = 2^7 + 64^6 + 2^5 + 2^4 + 2^3 + 2^2 = 11111100

255.255.252.0 = 11111111.11111111.11111100.00000000

77 = 64 + 13 = 64 + 8 + 4 + 1 = 2^6 + 2^3 + 2^2 + 2^0 = 01001101

01001100 = 64+8+4 = 76

180.80.76.0

10100111.11111111 = 79.255


  • 常见数的二进制数

    72 = 64 + 8 = 2^6 + 2^3 = 01001000

4)使用子网进行分组转发

外部来了一个分组,经过路由器应该如何转发,才能把分组正确的送到子网内对应的主机上?

路由器转发分组的算法:

  1. 提取目的IP地址
  2. 是否直接交付:用目的地址与网络中三个子网的子网掩码分别进行相与操作,相与的结果(子网网络地址)与其中的一个子网对应上了,说明应该直接转发给这个子网
  3. 特定主机路由:路由表中有一行特定主机路由,如果三个子网都没对应上,就看一下路由表中的特定主机路由是否和目的地址一样
  4. 检查路由表中有无其他路径:如果路由表并没有发现和目的地址一样的特定主机路由,用目的地址与路由表中每一行子网掩码都进行一次相与,相与后如果发现了对应的网络,那就按照此网络规定的下一跳地址转发
  5. 默认路由0.0.0.0:如果还是没有对应的网络,就把分组交给默认路由(默认路由的子网掩码也是全0),默认路由会依次发给其他一个路由器,然后循环以上操作。如果在分组的生存时间内还没找到,就丢弃
  6. 丢弃,报告转发分组出错

3.6、无分类编址CIDR

1)CIDR概念

又称为 无分类域间路由选择CIDR(Classless Inter-Domain Routing)

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

    CIDR记法:IP地址后加上“/”,然后写上网络前缀(可以任意长度1 ~ 32)的位数

    如:128.14.32.0/20:表示前20位是网络号(网络前缀),后12位是主机号

  • 融合子网地址与子网掩码,方便子网划分

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

例如:128.14.35.7/20是某CIDR地址块中的一个地址

二进制10000000 00001110 00100011 00000111

最小地址: 10000000 00001110 00100000 00000000 (128.14.32.0)

最大地址:10000000 00001110 00101111 11111111 (128.14.47.255)

可以计算该地址块(最小地址/网络前缀大小)的地址一共是2^12个,因为后12位为主机号

地址块(网络前缀):最小地址/网络前缀大小,128.14.32.0/20。不需要指出起始地址时,可以记为“/20地址块”

地址掩码(子网掩码)11111111 11111111 11110000 00000000 (网络前缀全1,主机号全0)


举例:求192.199.170.82/27的地址块

一共有 2^5 = 32 个IP地址

最小地址:前27位是网络前缀,所以第四个字节的前3位是网络前缀,后5位是主机号。将第四个字节82写为二进制:01010010。最小地址就是后5位全0,01000000=64。故最小地址为192.199.170.64。地址块为192.199.170.64/27。
最大地址:后5位全1,01011111 = 95。故最大地址为192.199.170.95
地址掩码(子网掩码):11111111 11111111 1111111 11100000 (网络前缀全1,主机号全0)

2)构成超网

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

  • 划分子网是将大网络切割成几个子网
  • 构成超网是将多个子网聚合成一个大子网

方法:将网络前缀缩短

R1给网络1和网络2发送信息,需要查看自己的转发表有没有到达网络1和网络2的路径,以及对应的下一跳地址是多少

  • 构成超网前转发表:第一行网络前缀为网络1的IP地址,下一跳地址为R2;第二行网络前缀为网络2的IP地址,下一跳地址也是R2

    如果R2连接的网络非常多,那么路由器转发表就会变得异常庞大。既然第一行和第二行的下一跳地址都是R2,那么有什么办法可以将下一跳地址相同的网络合并为一行呢?——构成超网(将网络前缀相同的部分合并为共同网络前缀,即缩短前缀)

  • 如何将网络前缀缩短(合并为共同网络前缀):网络1和网络2前16位相同,网络1第三个字节二进制为00000000,网络2第三个字节二进制为10000000。将网络前缀由17缩短到16位后地址块(最小地址/网络前缀大小)为:206.1.0.0/16,此时就将网络1和网络2合并为超网。

  • 构成超网后的转发表:网络前缀为206.1.0.0/16,下一跳地址为R2

    在实际发送数据时,要用数据报当中的目的地址来和转发表中的网络前缀进行匹配,因为我们构成了超网,之前具体的网络1和网络2现在合并变成了超网,因此在匹配时,会发现在转发表中有好几行都是可以匹配的,这时就需要决定,应该选择哪一个,从哪一跳走出去。——最长前缀匹配

3)最长前缀匹配

  • 使用CIDR时,查找路由表可能得到几个匹配结果,应选择具有最长网络前缀的路由。前缀越长,地址块越小,路由越具体
  • 构成超网是将前缀缩短,把具体的网络变成了宽泛的网络。在实际转发时,应该找最具体的网络,而不是最宽泛的网络

例题:路由器R0的路由表见下表:若进入路由器R0的分组的目的地址为132.19.237.5,请问该分组,应该被转发到哪一个下一跳路由器(B ) 。
A. R1 B. R2 C. R3 D. R4

  • R1:目的网络的网络前缀为前8位,与目的地址的前8位相同,所以目的地址可以被转发到R2路由器

  • R2:网络前缀为前11位,目的地址第二个字节二进制为00010011,目的地址前11位与网络地址前11位相同,所以可以转发到R2路由器

  • R3:网络前缀为前22位,第三个字节二进制为11101000。目的地址第三个字节为11101101。第22位不相同,即网络前缀不相同,所以目的地址不能转发到R3路由器

    132.19.237.5/22

    237 = 11101101;前6位111011为236,与232不符

  • R4:网络号全0,主机号全0表示默认路由,当目的地址与转发表都不匹配时,交给默认路由,然后去别的路由器的转发表找查找与目的地址匹配的网络。

查找路由表可能得到几个匹配结果,应选择具有最长网络前缀的路由。综上,答案是B

4)地址块中子网号可以全0全1

习题:某网络的IP地址空间为192.168.5.0/24, 采用定长子网划分,子网掩码255.255.255.248, 则该网络中的最大子网个数、每个子网内的最大可分配地址个数分别是( B )。
A. 32,8 B.32,6 C.8,32 D. 8,30

网络号:192.168.5;主机号:0(即第4个字节,共8位)

248 = 11111000:把主机号的前5位作为子网号,共 2^5 = 32

每个子网内主机个数:2^3 = 8 ;减去全0全1;8-2 = 6个

  • 注意

  • CIDR地址块中子网号可以全0全1

  • 地址个数需要减2(主机号全0表示网络,主机号全1表示广播地址)

3.7、ARP协议

Address Resolution Protocol:地址解析协议

IP地址与MAC地址的映射

resolution [ˌrezəˈluːʃn] 解析

1)局域网内部发送数据过程

  • 1号主机给3号主机发送数据过程:
    1. 传输层:把报文切割为报文段
    2. 网络层:对报文段进行封装成分组,添加1号主机IP地址和3号主机IP地址。
    3. 数据链路层:对分组进行封装成数据帧,添加源MAC地址和目的MAC地址,现在不知道目的主机是哪一个,如何添加目的MAC地址呢?——ARP协议
    4. ARP协议过程(先广播再单播)
    5. 数据链路层:将得到的MAC3添入,然后加一个尾部FCS,构成数据帧,再放入物理层上传输
    6. 物理层:形成数字信号或模拟信号,放到链路上传播

  • ARP高速缓存:局域网内部主机IP地址与MAC地址的映射
  • ARP协议过程:
    1. 广播一个ARP的分组请求:广播分组包括:1号主机IP地址;目的MAC地址所对应的主机的IP地址;1号主机MAC地址;目的MAC地址(全1,表示广播地址,别和IP地址主机号的全1混淆了)。交换机会在所有端口转发广播地址,故2号主机、3号主机和路由器端口都会收到1号主机的广播分组。
    2. 单播ARP响应分组:3号主机根据IP地址知道这是发送给自己的,于是单播一个ARP响应分组给1号主机(单播:直接到1号主机)。该响应分组包括3号主机的IP地址和3号主机的MAC地址的映射。

2)不同局域网间发送数据过程

  • 不在一个局域网内部,1号主机和5号主机通信过程:

    1. ARP高速缓存存储的是局域网内部IP地址与MAC地址的映射,1号主机IP地址与5号主机IP地址相与,发现与5号主机不在同一网段内

    2. 目的地址为默认网关的MAC地址:1号主机查询默认网关(与外界沟通的路由器)的MAC地址MAC6,并添入到目的地址

      得到MAC6的过程:

      • 1号主机广播ARP请求分组,因为要的到路由器的MAC地址,所以目的IP地址为路由器的IP地址。
      • 路由器单播ARP响应分组,得到MAC地址MAC6。
    3. 到IP6路由器后,IP地址不变,再次通过ARP 协议得到第二个路由器的MAC地址MAC8,源地址就变成MAC7,目的地址就变成MAC8

  1. 到第二个路由器后,还是通过ARP协议得到MAC5。源地址就变成MAC9,目的地址就变成MAC5

3)ARP协议总结

  • 为什么使用ARP协议?

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

  • ARP协议功能

    完成主机或路由器IP地址到MAC地址的映射。解决下一跳走哪的问题

  • ARP协议使用过程

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

  • ARP协议4种典型情况

    • 主机A发给本网络上的主机B:用ARP找到主机B的硬件地址

    • 主机A发给另一网络上的主机B:用ARP找到本网络上一个路由器(网关)的硬件地址

    • 路由器发给本网络的主机A:用ARP找到主机A的硬件地址

    • 路由器发给另一网络的主机B:用ARP找到本网络上的一个路由器的硬件地址

  • ARP协议为IP协议提供服务:ARP协议是处于链路层和网络层中间的协议,因为它结合了IP地址和MAC地址。主要划分到网络层,为IP协议提供服务

4)习题

主机发送IP数据报给主机B,经过了5个路由器,请问此过程总共使用了几次ARP协议?——6次

如果路由器之间是点对点协议,则2次。

3.8、DHCP协议

动态主机配置协议:Dynamic Host Configuration Protocol

dynamic [daɪˈnæmɪk] 动态的

  • DHCP协议概念

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

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

    1. 主机广播DHCP发现报文

      “有没有DHCP服务器呀?” 试图找到网络中的服务器,服务器获得一个IP地址

    2. DHCP服务器广播DHCP提供报文

      “有! 有! 有!” 服务器拟分配给主机一个IP地址及相关配置,先到先得

    3. 主机广播DHCP请求报文

      “我用你给我的IP地址啦?” 主机向服务器请求提供IP地址

      为什么这里还用广播呢?通知其他DHCP服务器,不要再等我了,把你的IP地址给其他人吧

    4. DHCP服务器广播DHCP确认报文

      “用吧! ” 正式将IP地址分配给主机

3.9、ICMP协议

Internet Control Message Protocol:互联网控制报文协议

保障IP数据报转发

网络层协议

1)互联网控制报文协议ICMP

  • ICMP协议作用

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

    ICMP协议支持主机或路由器

  • ICMP协议功能

    • 差错(或异常)报告:实际通信过程中,总会有分组出错,对于出错的分组丢弃并发送一个ICMP差错报文
    • 网络探询
  • ICMP报文种类

    • ICMP差错报文
    • ICMP询问报文
  • ICMP报文格式

首部检验和只检验首部,ICMP报文的检验和检验数据部分

2)ICMP差错报文(5种)

  • 五种类型:

    1. 终点不可达:当路由器或主机不能交付数据报时就向源点发送终点不可达报文。无法交付
    2. 源点抑制(取消):当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢。拥塞丢数据时告诉源点慢点
    3. 时间超过:当路由器收到生存时间TTL=0的数据报时,除丢弃该数据报外,还要向源点发送时间超过报文。当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃(保证一家人整整齐齐),并向源点发送时间超过报文TTL=0 和 不完整
    4. 参数问题:当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。首部字段有问题
    5. 改变路由(重定向):路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)。值得更好的路由
  • 发送ICMP差错报文的情况:对于出错的IP数据报丢弃并发送一个ICMP差错报文

  • ICMP差错报文组成:

    • ICMP报文的前8字节(类型)+ 出错的IP数据报首部 + 数据字段前8字节
    • ICMP差错报文是IP数据报的数据部分

  • 不应发送ICMP差错报文的情况
    1. ICMP差错报告报文不再发送ICMP差错报告报文
    2. 对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文(只对第一个分片发送)
    3. 对具有组播地址(一点对部分点,与广播区分:一点对所有)的数据报都不发送ICMP差错报告报文
    4. 对具有特殊地址(如127.0.0.0环回地址或0.0.0.0本网内主机地址)的数据报不发送ICMP差错报告报文

3)ICMP询问报文(4种)

  1. 回送请求回答报文

    主机或路由器向特定目的主机发出的询问,收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文。测试目的站是否可达以及了解其相关状态
    具体应用:PING

  2. 时间戳请求和回答报文:请某个主机或路由器回答当前的日期和时间。用来进行时钟同步和测量时间。

  3. 掩码地址请求和回答报文(不再使用)

  4. 路由器询问和通告报文(不再使用)

4)ICMP的应用

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

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

    工作原理:现有源主机和目的主机,中间有多个路由器。源主机发送一连串数据报,数据报之间的差别就是TTL不同。第一个数据报TTL设置为1,当第一个数据报到达第一个路由器时,TTL-1=0丢弃并返回给源主机一个ICMP时间超过报文。第二个数据报TTL设置为2,当第二个数据报到达第二个路由器时,TTL=0丢弃并返回给源主机一个ICMP时间超过报文。其他数据报依次类推,这样就可以算出该分组从源主机到目的主机的路径

4、IPv6

4.1、为什么有IPv6?

  1. 32位的IPv4地址空间已分配殆尽,无分类编址CIDR和网络地址转换NAT方法治标不治本

  2. 改进首部格式:之前的IPv4首部部分20字节的字段太多,通过改进首部格式达到快速处理/转发数据报

  3. 支持QoS:QoS ( Quality of Service,服务质量)指个网络能够利用各种基础技术,为指定的网络通信提供更好的服务能力,是网络的一种安全机制,是用来解决网络延迟和阻塞等问题的一种技术

4.2、IPv6数据报格式

首部40B,首部单位8B

  • 版本:指明了协议版本,IPv6的版本就是6
  • 优先级:区分数据报的类别和优先级
  • 流标签:“流”是互联网络上从特定源点到特定终点的一系列数据报。所有属于同一个流的数据报都具有同样的流标签
  • 有效载荷长度:有效载荷的大小(扩展首部+数据)
  • 下一个首部:标识下一个扩展首部或上层协议首部。假如有一个数据报,携带基本首部和3个扩展首部(1、2、3),每个扩展首部内都有一个字段:下一个首部字段。基本首部也有下一个首部字段。基本首部的下一个首部标识的是扩展首部1,扩展首部1的下一个首部标识的是扩展首部2...最后一个扩展首部指向数据部分。数据部分是运输层传来的报文段
  • 跳数限制:相当于IPv4的TTL。 如果达到0,路由器丢弃数据报并返回一个ICMP时间超过差错报文
  • 源地址(128位)
  • 目的地址(128位)

4.3、IPv6和IPv4

  • IPv6将地址从32位(4B) 扩大到 128位(16B),更大的地址空间
  • IPv6将IPv4的 校验和 字段彻底移除,以减少每跳的处理时间
  • IPv6将IPv4的可选字段移出首部,变成了 扩展首部,成为灵活的首部格式,路由器通常不对扩展首部进行检查,大大提高了路由器的处理效率
  • IPv6支持 即插即用 (即自动配置),不需要DHCP协议(用足够多的地址)
  • IPv6首部长度必须是 8B 的整数倍,IPv4(一种八片首饰)首部是 4B 的整数倍
  • IPv6 只能在主机处分片,IPv4可以在路由器和主机处分片。即使IPv6的分组很长,在路由器也无法分片,如果超过MTU,只能在路由器处 丢弃,并返回 ICMPv6差错报文
  • ICMPv6:附加报文类型 “分组过大
  • IPv6支持资源的预分配,支持实时视像等要求,保证一定的带宽和时延的应用
  • IPv6取消了协议字段(数据使用什么协议),改成下一个首部字段
  • IPv6取消了 总长度 字段,改用 有效载荷长度 字段
  • IPv6取消了 区分服务 字段

4.4、IPv6地址表示形式

  • 一般形式

    • 冒号十六进制记法:4BF5:AA12:0216:FEBC:BA5F:039A:BE9A:2170

      每4位bit用一个16进制表示,2^4=16,一个16进制数刚好可以表示完4位

      每4*4=16位=2B一组,用冒号隔开)

  • 压缩形式

    • 常规压缩:如:4BF5:0000:0000:0000:BA5F:039A:000A:2176——4BF5:0:0:0:BA5F:39A:A:2176

      全0字段用一个0表示

      非全0字段省略掉前面的0,不管有几个;如:039A > 39A ,000A > A

    • 零压缩形式:如:FF05:0:0:0:0:0:0:B3——FF05::B3

      一连串连续的0可以被一对冒号取代

      双冒号表示法在一个地址中仅可出现一次

4.5、IPv6基本地址类型

  • 单播:一对一通信 可做源地址+目的地址
  • 多播:一对多通信 可做目的地址 (取代了IPv4的广播)
  • 任播:一对多中的一个通信 可做目的地址 (通常是离发送方最近的主机)

4.6、IPv6向IPv4过渡的策略

  • 双栈协议:双协议栈技术就是指在一台设备上同时启用IPv4协议栈和IPv6协议栈。这样的话,这台设备既能和IPv4网络通信,又能和IPv6网络通信。如果这台设备是一个路由器,那么这台路由器的不同接口上,分别配置了IPv4地址和IPv6地址,并很可能分别连接了IPv4网络和IPv6网络。如果这台设备是一个计算机,那么它将同时拥有IPv4地址和IPv6地址,并具备同时处理这两个协议地址的功能。

  • 隧道技术:通过使用互联网络的基础设施在网络之间传递数据的方式。使用隧道传递的数据(或负载)可以是不同协议的数据帧或包。隧道协议将其它协议的数据帧或包重新封装然后通过隧道发送

4.7、总结

5、路由选择协议

路由器之间的协议

路由选择协议分类回顾:

  • 内部网关协议IGP:一个自治系统AS内使用的,例如RIP协议(使用距离向量算法)、OSPF协议(使用链路状态算法)
  • 外部网关协议EGP:AS之间使用的,例如BGP(BGP-4)

5.1、RIP协议与距离向量算法

1)RIP协议(应用层协议)

  • RIP协议

    Routing Information Protocol:路由信息协议

    是一种分布式的基于距离向量算法的路由选择协议,是因特网的协议标准,最大优点是简单。

  • 记录最佳距离

    要求网络中每一个路由器都维护从它自己到其他每一个目的网络的唯一最佳距离记录(即一组距离)

  • 距离(最多15个路由)

    通常为“跳数”,即从源端口到目的端口所经过的路由器个数,经过一个路由器跳数+1

    特别的,从一路由器到直接连接的网络距离为1(也有的书是0)

    RIP允许一条路由最多只能包含15个路由器,因此距离为16表示网络不可达

    所以RIP协议只适用于小互联网


R2的路由表记录如下:

2)交换对象、内容、时间

  • 和谁交换?

    仅和 相邻路由器 交换信息

  • 交换什么?

    交换的信息是 自己的路由表(路由器把自己的路由表信息放到一个RIP报文里面,发送给相邻路由器)

  • 多久交换一次?

    每30秒交换一次路由信息,然后路由器根据新信息更新路由表

    若超过180s没收到邻居路由器的通告,则判定邻居没了,并更新自己路由表


交换过程:

路由器刚开始工作时,只知道直接连接的网络的距离(距离为1),接着每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息
经过若干次更新后,所有路由器最终都会知道到达本自治系统任何一个网络的最短距离下一跳路由器的地址,即“收敛

路由表怎么更新的?——距离向量算法

3)距离向量算法

  • RIP报文

    RIP报文包含的信息就是 路由表的全部信息,每两个路由表之间交换信息其实就是交换的 RIP报文


距离向量算法过程

  1. 修改相邻路由器发来的RIP报文中所有表项

    • 对地址为X的相邻路由器发来的RIP报文,修改此报文中的所有项目:把“下一跳”字段中的地址改为X,并把所有的“距离”字段+1

    x路由器过30s后,要把自己的路由表信息放到RIP报文中,然后发送给R1

    x中的一个表项就是Net3,2,R2。该RIP报文到达R1后,R1吸收x所有表的信息

    首先把地址改为x,因为R1的下一跳地址是x,距离+1

  1. 对修改后的RIP报文中的每一个项目,进行以下步骤:

    • 原R1路由表中若没有Net3,则把该项目直接填入R1路由表

    • 原R1路由表中若有Net3,则查看下一跳路由器地址(看一下新的情况是怎么样的):

      若原R1路由表该项目到Net3的下一跳也 是X,则用新的项目 替换 原路由表中的项目(为什么替换,因为路由表30s更新一次,以最新消息为准!

      若原R1路由表该项目到Net3的下一跳 不是X,而是Y路由(说明Y也可以到Net3)。则比较距离,使用距离小的路由

  2. 180s 还没收到相邻路由器X的更新路由表,则把X记为不可达的路由器,即把距离设置为 16

  3. 返回

4)习题

5)RIP协议报文格式

使用UDP传输数据

  • RIP是应用层协议,RIP报文:首部 + 路由部分,传递给传输层的UDP协议,作为UDP报文段的一部分。(为什么叫RIP报文?因为是应用层协议)
  • 一个RIP报文最多可包括25个路由,如超过,必须再用一个RIP报文传送。

6)RIP协议特点

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

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

  • 网1出现故障,R1路由表更新信息:1 16 _ 表示到网1的距离是16(表示无法到达),直接交付
  • 但R2在收到R1的更新报文之前,还发送原来的报文,因为这时R2并不知道R1出了故障
  • R1收到R2的报文,更新路由表为1 3 R2(因为R2的报文显示R2可以到达网1)
  • 这样不断更新下去,直到R1和R2到网1的距离都增大到16 时,R1和R2才知道网1是不可达的

7)总结

5.2、OSPF协议与链路状态算法

1)OSPF协议

考纲为网络层协议

  • 开放最短路径优先OSPF(Open shortest path first)协议

    “开放”标明OSPF协议不是受某一家厂商控制,而是公开发表的;“ 最短路径优先”是因为使用了Dijkstra(迪杰斯特拉)提出的最短路径算法SPF。(该算法十分重要,多次出现;松弛技术 )

  • OSPF最主要的特征

    就是使用 分布式链路状态协议

  • OSPF的特点

    • 和谁交换?

      使用 洪泛法(洪水泛滥)向自治系统内所有路由器发送信息,即路由器通过输出端口向所有相邻的路由器发送信息,而每一个相邻路由器又再次将此信息发往其所有的相邻路由器。类似 广播 ——最终整个区域内 所有路由器 都得到了这个信息的一个副本

      RIP仅和 相邻路由器 交换信息

    • 交换什么?

      发送的信息就是与本路由器 相邻的所有路由器的链路状态 (本路由器和哪些路由器相邻,以及该链路的度量/代价——费用、距离、时延、带宽等)

      RIP交换的信息是 自己的路由表

    • 多久交换?

      只有当链路 状态发生变化时,路由器才向所有路由器洪泛发送此信息进行交换

      RIP是每 30s 路由表交换一次

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

2)链路状态路由算法

OSPF的五个重要分组

  1. 每个路由器通过每10s发送【HELLO问候分组来发现邻居结点,并了解邻居节点的网络地址

  2. 设置到它的每个邻居的 成本度量metric(n. 度量标准)。

  3. 构造【DD数据库描述分组,向邻站给出自己的链路状态数据库(全网的拓扑结构图)中的所有链路状态项目的摘要信息

    路由器知道了拓扑结构图,就知道全网有多少个路由器以及哪些路由器是相连的,还有代价是多少。把这些信息作为摘要信息放到DD数据库描述分组中, 发给邻站

  4. 如果DD分组中的摘要,邻站自己都有,则邻站不做处理;如果有 自已没有的 或者 有更新的,则邻站发送【LSR链路状态请求分组,请求 自己没有的 和 比自己更新的信息

  5. 收到邻站的LSR分组后,路由器发送【LSU链路状态更新分组进行更新

  6. 更新完毕后,邻站返回一个【LSAck链路状态确认分组进行确认


网络拓扑不是一成不变的,只要一个路由器的链路状态发生变化:

  1. 泛洪发送【LSU链路状态更新分组】进行更新

  2. 更新完毕后,其他站返回一个【LSAck链路状态确认分组】进行确认。

  3. 使用Dijkstra根据自己的链路状态数据库构造到其他节点间的最短路径

3)OSPF的区域

自治系统划分的小范围

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

区域也不能太大,在一个区域内的路由器最好 不超过200个。适用于规模比较大的自治系统

  • R3、R4、R7既叫做主干路由器,也叫做区域边界路由器
  • R6叫做自治系统边界路由器,连接其他自治系统

4)OSPF分组格式

直接用IP数据报传送

  • OSPF直接用IP数据报传送。考纲上写OSPF是网络层协议,也有人说是传输层协议,因为它是在网络层封装为IP数据报的。

5)OSPF其他特点

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

5.3、BGP协议和路径向量算法

1)BGP协议(应用层协议)

边界网关协议 :Border Gateway Protocol

  • 和谁交换?

    与其他AS的 邻站BGP发言人 交换信息

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

  • 交换什么?

    BGP发言人之间交换的 网络可达性的信息,即要到达某个网络所要经过的一系列AS

  • 多久交换?

    发生变化时 更新有变化的部分

2)BGP协议交换信息的过程

BGP所交换的网络可达性的信息就是要到达某个网络 所要经过的一系列AS。当BGP发言人互相交换了网络可达性的信息后,各BGP发言人就根据所采用的策略从收到的路由信息中找出到达各AS的 较好路由(不需要最好,因为网络环境复杂)

对于AS1自治系统来说,有一个边界路由器作为 BGP发言人既使用BGP协议,同时也使用内部网关协议RIP或OSPF

  • BGP发言人交换路径向量(交换一组路径的信息可以看作交换路径的一个向量):
    • 自治系统AS2的BGP发言人通知主干网AS1的BGP发言人:“要到达网络N1、 N2、N3和N4可经过AS2”
    • 主干网也可以发出通知(因为只要是相邻的邻站,就可以交换信息):“ 要到达网络N5、N6和N7可沿路径(AS1, AS3)”

3)BGP协议报文格式

借助传输层TCP传送

一个BGP发言人与其他自治系统中的BGP发言人要交换路由信息,就要 先建立TCP连接,即通过TCP传送(为什么使用TCP而不是UDP,因为使用TCP可以提供更加可靠的服务,简化路由选择协议),然后在此连接上交换BGP报文以建立BGP会话(session),利用BGP会话交换路由信息

BGP是应用层协议(看到报文就知道是应用层协议),借助传输层TCP传送

4)BGP协议特点

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

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

5)BGP的四种报文

  1. OPEN (打开)报文

    用来与相邻的另一个BGP发言人建立关系(BGP报文需要借助TCP连接,OPEN报文就是在实现连接的建立),并认证发送方

  2. UPDATE (更新)报文

    通告新路径或撤销原路径

  3. KEEPALIVE(保活/确认存活)报文

    在无UPDATE时(可能很长一段时间都不会给对方发送报文,又想知道对方是不是在线),周期性证实邻站的连通性;也作为OPEN的确认

  4. NOTIFICATION (通知)报文

    报告先前报文的差错;也被用于关闭连接

5.4、三种路由协议比较

  • RIP是一种分布式的基于距离向量的内部网关路由选择协议,通过广播UDP报文(传输层)来交换路由信息
  • OSPF是一个内部网关协议,要交换的信息量较大,应使报文的长度尽量短,所以不使用传输层协议(如UDP或TCP),而是直接采用网络层IP
  • BGP是一个外部网关协议,在不同的自治系统之间交换路由信息,由于网络环境复杂,需要保证可靠传输,所以采用传输层TCP

6、IP组播

6.1、IP数据报的三种传输方式

  • 单播
    • 单播用于发送数据包到单个目的地,且每单播发送一份单播报文都使用一个单播IP地址作为目的地址。是一种 点对点 传输方式
    • 单播所占的资源和带宽比较多,因为在发送者和每一接收者之间需要单独的数据信道

  • 广播

    • 广播是指发送数据包到 同一广播域 或 子网内 的 所有设备 的一种数据传输方式,是一种 点对多点 传输方式
    • 源地址是单播IP地址,目的地址是 全1广播地址
  • 组播(多播)

    • 当网络中的某些用户需要特定数据时,组播数据发送者 仅发送一次数据,借助组播路由协议为组播数据包建立组播分发树,被传递的数据到达距离用户端 尽可能近的节点 后才开始复制和分发,是一种 点对多点 传输方式。(到最后一步,一个数据报才会被复制成多个数据报,分发给各主机)
    • 组播提高了数据传送效率。减少了主干网出现拥塞的可能性。组播组中的主机可以是在同一个物理网络,也可以来自不同的物理网络(需要有 组播路由器 的支持,组播路由器就是运行组播协议的路由器,组播路由器既可以运行组播协议也可以运行单播协议)

问题来了,发送的时候,怎么知道哪些主机是一个组播组呢?——IP组播地址

6.2、IP组播地址

1)IP组播地址

接收组播数据报

  • 分析:我们知道,在因特网中进行通信时,每个主机都有一个全球唯一的IP地址。如果组播组中的某个主机想接收组播数据报,组播数据报如何才能传到该主机中呢?组播数据报的目的地址肯定不能只写该主机的IP地址,因为这样写,只会发给这一个主机,其他的同处于多播组的主机收不到该数据报。因此,需要在该主机中产生一个IP组播地址,来接收组播数据报

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

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

  • IP组播数据报特点

    • 组播数据报也是“尽最大努力交付”,不提供可靠交付,应用于UDP
    • 对组播数据报不产生ICMP差错报文
    • 并非所有D类地址都可以作为组播地址

IP组播可以分为两个部分,一部分是因特网范围内组播,一部分是局域网内部硬件组播。现在大部分主机都是通过连接局域网,然后再连接因特网,所以最后通过因特网范围内组播之后,还是要进入到局域网内的硬件组播

2)硬件组播与组播MAC地址

  • 硬件组播

    • 硬件组播说的其实就是在 局域网范围 ,对于一个组播数据报,应该怎么发给这些主机或者说给哪些主机
  • 组播MAC地址如何得到?

    • 比如:现在发来一个单播数据报,进入局域网后应该交给哪个主机?要看主机的MAC地址。同单播地址一样,组播IP地址也需要 相应的组播MAC地址 在本地网络中实际传送帧
    • 组播MAC地址(48位 = 6B)以十六进制值 01-00-5E(固定)打头,余下的6个十六进制位是根据 IP组播组地址(D类IP地址)的 最后23位 转换得到的(1位十六进制数 = 4 bit;48 bit = 12 位十六进制数)
  • TCP/IP协议使用的以太网多播MAC地址的范围是:从 01-00-5E-00-00-0001-00-5E-7F-FF-FF

  • 不同IP地址可能映射成同一MAC地址:可以发现,IP地址不能使用的5位可以构成2^5=32个IP地址。如果这32个主机后面23位一样,那么这32个IP地址映射到多播MAC地址上就是一样的。也就是说,会导致32个不同的IP地址映射成了同一个MAC地址。如何解决?——进行过滤

  • 过滤:收到多播数据报的主机,还要在IP层利用软件进行过滤,把不是本主机要接收的数据报丢弃

6.3、IGMP与组播路由选择协议

1)概述

  • IGMP协议

    • 一个路由器内部 所使用的协议

    • 为什么使用IGMP协议?

      对于一个连在局域网上的组播路由器,查询它所连的局域网上是不是还有主机参加或退出了某个组播组。也就是一个组播路由器通过使用IGMP协议就可以知道它所连的局域网中,是不是还有可以接收组播数据报的主机

  • 组播路由选择协议

    • 一看到路由选择,就知道是一个在 多个路由器之间 进行路径选择的问题

    • 为什么使用组播路由选择协议?

      如果只有IGMP协议,无法完成组播的任务。因为连接在局域网上的组播路由器还必须要和因特网上的其他路由器进行信息交换,才能够把组播数据报用一个最小的代价(最优路径)来传送给组播组中的全部成员。这时就需要使用组播路由选择协议

这两个协议其实就是在因特网范围内组播组要使用到的一些协议

2)网际组管理协议IGMP

Internet group management protocol:网际组管理协议

IGMP协议作用:IGMP协议让路由器知道本局域网上是否有主机(的进程)参加或退出了某个组播组。

  • 上图,有四个标明了IP地址的主机加入了组播组,组播IP地址是226.15.37.123。每个路由器通过使用IGMP协议可以判断如果如果接收到一个组播组,要不要给我局域网中的主机。

ICMP 和 IGMP 都使用IP数据报传递报文


IGMP工作的两个阶段:

  • ROUND 1:

    • 主机向组播组地址发送IGMP报文表示要加入:某主机要加入组播组时,该主机向组播组的组播地址发送一个IGMP报文,声明自己要成为该组的成员
    • 加入后,也要告诉其他在组播组中的路由器呀:本地组播路由器收到IGMP报文后,要利用组播路由选择协议把这组成员关系发给因特网上的其他组播路由器
  • ROUND 2:

    • 定期探询,各主机是否还是组播组成员:本地组播路由器周期性探询(发送IGMP询问报文)本地局域网上的主机,以便知道这些主机是否还是组播组的成员。既然是询问,结果就有两种!

      • 结果1——有主机响应:只要有一个主机对某个组响应,那么组播路由器就认为这个组是活跃的

      • 结果2——无响应,则不再发送该成员关系:如果经过几次探询后没有一个主机响应,组播路由器就认为本网络上的没有此组播组的主机,因此就不再把这组的成员关系发给其他的组播路由器

        有一个细节:组播组中有一台主机响应,该主机相当于代表一样告诉组播路由器我们还有一个组播组在这,那么该组播组内其他主机就不需要响应了


成员关系:组播路由器知道的成员关系只是所连接的局域网中有无组播组的成员。 但是并不知道这一组成员有多少个,可以通过组播路由选择协议知道

3)组播路由选择协议

  • 一个组播组中的成员是动态变化的,比如突然加入或者突然离开。就像看电视一样,换台。组播路由选择协议目的是找出 以源主机为根节点的 组播转发树

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

    • 构造树可以避免在路由器之间兜圈子
    • 对不同的多播组对应于不同的多播转发树;同一个多播组,对不同的源点也会有不同的多播转发树

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

  • 基于链路状态的路由选择
  • 基于距离-向量的路由选择
  • 协议无关的组播(稀疏/密集) :可以建立在任何协议之上的

6.4、总结

7、移动IP

7.1、移动IP相关术语

  • 即使物理位置发生变化,但是网络IP地址仍然不变

    移动IP技术是移动结点(计算机/服务器等)以固定的网络IP地址,实现跨越不同网段的漫游功能,并保证了基于网络IP的网络权限在漫游过程中不发生任何改变

  • 移动结点

    具有永久IP地址的移动设备

  • 归属代理(本地代理)

    一个移动结点拥有的旧“居所”称为归属网络,在归属网络中代表移动节点执行移动管理功能的实体叫做归属代理

  • 外部代理(外地代理)

    在外部网络中帮助移动节点完成移动管理功能的实体称为外部代理

  • 永久地址(归属地址/主地址)

    移动站点在归属网络中的原始地址

  • 转交地址(辅地址)

    移动站点在外部网络使用的临时地址

7.2、移动IP通信过程

  • 本地代理可以是路由器也可以是主机
  • 主机A移动到了一个新网络,叫做外部网络/被访网络

A与B通信过程

  • A刚进入外部网络

    1. 在外部代理登记获得一个转交地址(A的临时地址,该地址的网络号与外部网络一样),离开时注销
    2. 外地代理向本地代理登记转交地址。(此时,本地代理收到要发送给A的数据报,就往转发地址转发)
  • B给A发送数据报

    1. 本地代理截获数据报
    2. 本地代理再封装数据报,新的数据报 目的地址是转交地址,发给外部代理(隧道)
    3. 外部代理拆封数据报并发给A。(外部代理路由器如何把数据报发给A:在一个局域网内进行通信,用的都是MAC地址,当A首次与外部代理通信时,外部代理就会记录下A的MAC地址)
  • A给B发送数据报

    • A用自己的主地址作为数据报源地址,用B的IP地址作为数据报的目的地址
  • A再移动到下一个网络

    1. 在新外部代理登记注册一个转交地址
    2. 新外部代理给本地代理发送新的转交地址(覆盖旧的)
    3. 通信
  • A回到了归属网络

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

8、网络层设备

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

8.1、路由器组成与功能

1)路由器组成

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

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


  • 转发VS路由选择:转发在 路由器内部,把一个分组从一个输入端口转发到一个输出端口;路由选择在路由之间选一个合适的路径,把数据从源主机发送到目的主机

  • 分组分为 路由交换信息的分组数据分组:不是所有分组都从一个输入端口转发到一个输出端口,若收到RIP/OSPF分组(路由器之间交换信息的分组)等, 则把分组送往路由选择处理机;若收到数据分组,则查找转发表并输出

2)端口对收到的分组的处理

  • 输入端口对线路上收到的分组的处理过程

  • 在交换结构中进行分组处理:若收到RIP/OSPF分组(路由器之间交换信息的分组)等, 则把分组送往路由选择处理机;若收到数据分组,则查找转发表并输出
  • 为什么分组要排队:查表和转发时会产生时延,可以看出 输入端口中的查找和转发功能 在路由器的交换功能中是 最重要

  • 输出端口的处理过程

  • 缓存区域就是 队列,如果交换结构转发到输出端口的速度超出链路发送的速度,可以在缓存区域排队
  • 若路由器处理分组的速率赶不上分组进入队列的速率,则队列的存储空间最终必定减少到零,这就使后面再进入队列的分组由于没有存储空间而只能被 丢弃
  • 路由器中的输入或输出队列 产生溢出 是造成 分组丢失 的重要原因

3)三层设备的区别

  • 路由器:可以互联两个不同网络层协议的网段
  • 网桥:可以互联两个物理层和链路层不同的网段
  • 集线器:傻瓜设备,不能互联两个物理层不同的网段

8.2、路由表与路由转发

路由表(下一跳走哪):路由表根据路由选择算法得出的,主要用途是路由选择,总用软件来实现。

默认路由:只要发送的分组在路由表中找不到对应的下一跳IP地址,就应该发给默认路由。

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

8.3、路由器安全

安全管理措施:为了保证路由器最基本的安全,需要在路由器上采取设置访问控制列表和升级IOS进行安全补漏的安全管理措施。(路由器安全是针对黑客入侵的逻辑安全)

  • IOS:互联网操作系统IOS(Internetwork Operating System)

9、总结

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

土味儿~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值