4.1网络层概述

  • 网络层的主要任务是实现网络互连,进而实现数据包在各网络之间的传输
  • 实现网络层需要解决的问题:
    • 网络层向运输层提供怎样的服务(可靠传输还是不可靠传输)
    • 网络层寻址问题
    • 路由选择问题
  • 因特网是目前全世界用户数量最多的互联网,他使用TCP/IP协议栈
  • TCP/IP协议栈的网络层使用网际协议IP,他是整个协议栈的核心协议,因此在TCP/IP协议栈中网络层也称为网际层
  • TCP/IP协议栈分四层:应用层,运输层,网际层,网络接口层

4.2网络层提供的两种服务

面向连接的虚电路服务

image

无连接的数据报服务

  • 可靠通信应当由用户主机来保证
  • 不需要建立网络层连接
  • 每个分组可走不同的路径
  • 每个分组的首部必须携带目的主机的完整地址
  • 这种通信方式所传送的分组可能误码、丟失、重复和失序。
  • 由于网络本身不提供端到端的可靠传输服务,这就使网络中的路由器可以做得比较简单,而且价格低廉(与电信网的交换机相比较)。
  • 因特网采用了这种设计思想,也就是将复杂的网络处理功能置于因特网的边缘(用户主机和其内部的运输层),而将相对简单的尽最大努力的分组交付功能置于因特网核心。

两种服务对比

image

4.3 IPv4

4.3.1概述

  1. IPv4是给因特网上每一台主机的每一个接口分配一个唯一的32比特标识符
  2. 2011年3月,IPv4地址以及分配完毕
  3. IPv4编址方法经历了:分类编址-》划分子网-》无分类编址
  4. 32比特的IPv4不方便阅读,因此IPv4地址采用点分十进制表示方法

4.3.2分类编址的IPv4地址

注意事项

  1. 只有A类,B类,C类地址可分配给网络中的主机或路由器的各接口
  2. 主机号全为0的地址是网络地址,不能分配给主机或者路由器各接口
  3. 主机号全为1的地址是广播地址,不能分配给主机或者路由器各接口
    image

A类地址

  • 网络号占8位,最高位固定为零;主机号占24位

  • image

  • 最小网络号0,不指派

  • 第一个可以指派的网络号为1,网络地址1.0.0.0

  • 最大网络号127,作为本地环回测试地址,不指派

    • 最小本地环回测试地址127.0.0.1
    • 最大本地环回测试地址127.255.255.254
  • 最后一个可指派的网络号为125,网络地址为126.0.0.0

  • A类地址有效范围1.0.0.1-126.255.255.254

B类地址

  • 网络号占16位,最高两位固定为10;主机号占16位
    image

  • 最小网络号也是第一个可以指派的网络号128.0;网络地址为128.0.0.0

  • 最大网路号也是最后一个可以指派的网络号191.255;网络地址为128.255.0.0

  • B类地址有效范围128.0.0.1---191.255.255.254

C类地址

  • 网络号占24位,最高三位固定为110;主机号占8位
    image

  • 最小网络号也是第一个可以指派的网络号192.0.0;网络地址为192.0.0.0

  • 最大网路号也是最后一个可以指派的网络号223.255.255;网络地址为223.255.255.0

  • C类地址有效范围192.0.0.1---223.255.255.254

D类地址

不分网络地址和主机地址,它的第1个字节的前四位固定为1110
D类地址范围:224.0.0.1---239.255.255.254

E类地址

分网络地址和主机地址,它的第1个字节的前四位固定为1111
E类地址范围:240.0.0.1---255.255.255.254

4.3.3划分子网的IPv4地址

  • 划分子网:从主机号部分借用一部分比特作为主机号
    image

  • 32比特的子网掩码可以表明分类IP地址的主机号部分被借用了几个比特作为子网号

    • 子网掩码使用连续的比特1来对应网络号和子网号
    • 子网掩码使用连续的比特0作为主机号
    • 将划分子网的IPv4地址与相对应的子网掩码进行逻辑与运算可以得到IPv4地址所在子网的网络地址
  • 给定一个分类的IP地址与其相对应的子网掩码可以知道子网划分细节

    • 划分出的子网数量
    • 每个子网可分配的IP地址数量
    • 每个子网的网络地址和广播地址
    • 每个子网可分配的最小和最大地址
  • 默认的子网掩码是指未划分子网所使用的子网掩码

    • A类:255.0.0.0
    • B类:255.255.0.0
    • C类:255.255.255.0

与运算规则:
0 & 0 = 0
0 & 1 = 0
1 & 0 = 0
1 & 1 = 1

4.3.3 无分类的IPv4地址

  • 划分子网在一定程度上缓解了因特网在发展中遇到的困难,但数量巨大的c类网址因为其地址空间太小并没有得到充分利用,因此IP地址仍在加速消耗。因此提出采用无分类编址解决IP地址紧张问题。

  • 1993年,发布了无分类域间路由选择CIDR

    • CIDR取消了传统A类B类C类地址,以及划分子网的概念
    • CIDR可以更加有效的分配IPv4的地址空间
      CIDR无分类域间路由选择
  • CIDR使用斜线记法,或简称CIDR记法。即在IPv4地址后加斜线“/",斜线后面写上网络前缀所占的比特数量
    image

  • CIDR实际上是将网络前缀都相同的连续的IP地址组成一个CIDR地址块

  • 已知CIDR地址块中任意一个地址就可以知道该地址块全部细节

    • 地址块最小地址
    • 地址块最大地址
    • 地址块中地址数量
    • 地址块聚合某类网络数量
    • 地址掩码
      第四章 网络层-小白菜博客
      路由聚合
      原理:让路由选择协议能够用一个地址通告众多网络,旨在缩小路由器中路由选择表的规模,以节省内存,并缩短IP对路由选择表进行分析以找出前往远程网络的路径所需的时间。
      实现方法:寻找共同前缀进行合并
      image

4.3.5 IP地址的应用规划

  1. 定长的子网掩码FLSM
    • 使用同一个子网掩码来划分子网
    • 子网划分不灵活,只能划分出2的n次个子网
    • 每个子网所分配的IP数量相同,容易造成浪费
  2. 变长的子网掩码VLSM
    • 使用不同的子网掩码来划分子网
    • 子网划分方式灵活,可以按需分配
    • 每个子网分配的IP数量可以不同,尽可能减少浪费
    • 分配IP地址时按照子网所占地址数量多少降序分配

4.4 IP数据报的发送和转发过程

主机发送IP数据报

判断目的主机是否与自己在同一个网络
判断方法:

  1. 通过目的地址IP和源地址的子网掩码进行逻辑与运算得到目的网络地址;
  2. 如果目的网络地址和源网络地址相同,就是在同一个网络中,属于直接交付
  3. 如果目的网络地址和源网络地址不相同,就不在同一个网络中,属于间接交付,传输给主机所在网络的默认网关(路由器),由默认网关帮忙转发

用户为了让本网络中的主机能和其他网络中的主机进行通信,就必须给其指定本网络的一个路由器的接口,由该路由器帮忙进行转发,所指定的路由器,也被称为默认网关

路由器转发IP数据报

  • 检查IP数据报首部是否出错:
    • 若出错,则直接丢弃该P数据报并通告源主机;
    • 若没有出错,则进行转发;
  • 根据IP数据报的目的地址在路由表中查找匹配的条目:
    • 若找到匹配的条目,则转发给条目中指示的下一跳;
    • 若找不到,则丟弃该IP数据报井通告源主机;

逐条检查路由条目,将目的地址与路由条目中的地址掩码进行逻辑与运算得到目的网络地址,然后与路由条目中的目的网络进行比较,如果相同,则这条路由条目就是匹配的路由条目,按照它的下一条指示

4.5静态路由配置及其可能产生的路由

  • 静态路由:是指用户或网络管理员使用路由器的相关命令给路由器人工配置路由表
    • 这种配置方式简单开销小,但不能及时适应网络状态变化
    • 一般只在小规模网络使用
  • 静态路由配置可能出现以下导致产生路由环路的错误
    • 配置错误
    • 聚合了不存在的网络
    • 网络故障
  • 特殊的聚合路由
    • 默认路由(目的网络0.0.0.0,地址掩码0.0.0.0)
      • 默认路由可以被所有网络匹配,但路由匹配有优先级,默认路由是优先级最低的
      • 多条路由可选,匹配路由最具体的
    • 特定主机路由(目的网路为特定主机IP地址,地址掩码255.255.255.255)
    • 黑洞路由(下一跳为null0)可用于解决静态路由配置中聚合了不存在的网络,将不存在的网络配置成黑洞路由。

4.6路由选择协议

4.6.1路由选择协议概述

概述
第四章 网络层-小白菜博客
因特网采用的路由选择协议的主要特点

  1. 自适应:动态路由选择,能较好的适应网络状态的变化
  2. 分布式:路由器之间交换路由信息
  3. 分层次:将整个因特网划分为许多较小的自治系统AS
    • 自治系统 AS:在单一的技术管理下的一组路由器,而这些路由器使用一种 AS 内部的路由选择协议和共同的度量以确定分组在该 AS 内的路由,同时还使用一种 AS 之间的路由选择协议用以确定分组在 AS之间的路由。
    • 自治系统之间的路由选择简称为域间路由选择,自治系统内部的路由选择简称为域内路由选择

域间路由选择使用外部网关协议EGP这个类别的路由选择协议
域内路由选择使用内部网关协议IGP这个类别的路由选择协议
网关协议的名称可称为路由协议

常见的路由选择协议
image

4.6.2路由信息协议RIP的基本工作原理

  1. 路由信息协议RIP是内部网络协议IGP中最先得到广泛使用的协议之一
  2. RIP要求自治系统AS内的每一个路由器都要维护从它自己到AS内其他每一个网络的距离记录。这是一组距离,称为“距离向量D-V“
  3. RIP使用跳数作为度量来衡量到达目的网络的距离
    • 路由器到直连网络距离定义为1
    • 路由器到非直连网络的距离为所经过的路由器数加一
    • 允许一条路径最多只包含15个路由器,所以距离等于16相当于不可达
  4. RIP认为好的路由就是距离短的路由,也就是经过路由器数量少的路由(不考虑其他影响因素);当到达同一网络有多条距离相同的路由时,RIP会进行等价负载均衡
  5. RIP封装在UDP报文

RIP的三要点

  • 仅和相邻路由表进行交换信息
  • 交换自己的路由表
  • 周期性交换路由表

RIP的基本工作原理

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

RIP路由条目更新规则

  • 到达目的网络,相同下一跳,最新消息,更新
  • 发现了新的网络,添加
  • 到达目的网络,不同下一跳,新路由优势,更新
  • 到达目的网络,不同下一跳,等价负载均衡
  • 到达目的网络,不同下一跳,新路由劣势,不更新

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

基本概念

  1. 开放最短路径优先OSPF算法是为了克服路由信息协议RIP而开发
    a. 开放表示OSPF协议是公开发表的
    b. 最短路径优先是因为使用的最短路径算法
  2. OSPF是基于链路状态的,而不像RIP基于距离向量
  3. 链路状态是指本路由器都和那些路由器相邻,以及相应链路的代价
    a. 代价用来表示费用,距离,时延,带宽等
  4. OSPF不限制网络规模,更新速度快,收敛速度快
  5. OSPF封装在IP数据报中

发送链路状态通告LSA:

  • 使用OSPF的每个路由器都会产生LSA,包含以下信息
    • 直连网络的链路状态信息;
    • 邻居路由器的链路状态信息;
  • LSA被封装在链路状态更新分组LSU中,采用洪泛法发送
    • 在洪泛法转发中,每个接口都会将接收到的数据包转发给所有其他接口,而不考虑转发路径或其他状态信息,也不检查是否已经接收过。

OSPF分组类型

  • 问候(HELLO)分组:用于维护邻居关系,包括邻居发现、协商协议版本号、交换路由器ID等信息
    • hello分组封装在IP数据报中,发往组播地址224.0.0.5;
      image

    • IP数据报首部中协议号字段的取值应为89,来表明IP数据报的数据载荷为OSPF分组;

    • 发送周期为十秒;

    • 40秒未收到来自邻居路由的Hello分组,则认为该路由器不可达;

  • 数据库描述(DD)分组:用于建立LSDB(Link State Database),包含当前路由器的LSA(Link State Advertisement)列表,与邻居的LSDB同步
  • 链路状态请求(LSR)分组:用于请求邻居发送指定的LSA。
  • 链路更新(LSU)分组:用于发送LSA更新信息,包括新LSA、更新LSA和删除LSA等信息
  • 链路状态(LSAck)分组:用于确认收到LSU分组,表示邻居已经收到了特定的LSA更新信息

其中,Hello分组、DD分组和LSAck分组都是控制分组,用于维护邻居关系和确认收到的信息;而LSR分组和LSU分组是数据分组,用于传输LSA信息,维护路由表。通过这些分组,OSPF可以实现路由器之间的信息交换和路由计算,从而构建最优路径

OSPF工作过程

  1. 问候分组建立和维护邻居关系;
  2. DD分组,LSR分组和LSU分组将链路状态数据库进行同步;
  3. LSU分组和LSAck分组在新情况下进行链路状态数据库同步

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

由于OSPF在建立邻居关系过程中采用了洪泛法发送数据报,若不采用其他机制会产生大量的多播分组
解决方法

  1. 选举指定路由器DR和备用的指定路由器BDR
  2. 所有的非DR/BDR只与DR/BDR建立邻居关系
  3. 非DR/BDR之间通过DR/BDR交换信息
  4. DR出现问题,则BDR顶替DR

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

  1. 在该自治系统内,所有路由器都使用OSPF协议,OSPF将该自治系统再划分成4个更小的区域
  2. 每个区域都有一个32比特的区域标识符
  3. 主干区域的区域标识符必须为0,主干区域用于连通其他区域
  4. 其他区域的区域标识符不能为0且不相同
  5. 每个区域一般不应包含路由器超过200个
  6. 划分区域的好处就是,利用洪泛法交换链路状态信息局限于每一个区域而不是自治系统,这样减少整个网络上的通信量
    image

4.6.4边界网关协议BGP

  • BGP是不同自治系统的路由器之间交换路由信息的协议
  • 外部网关协议EGP(例如边界网关协议BGP)
  • 在不同自治系统内,度量路由的“"代价”(距离,带宽,费用等)可能不同因此,对于自治系统之间的路由选择,使用“代价”作为度量来寻找最佳路由是不行的
  • 自治系统之间的路由选择必须考虑相关策略(政治,经济,安全等)
  • BGP只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜子),而井非要寻找一条最佳路由
  • 在配置BGP时,每个自治系统的管理员要选择至少一个路由器作为该自治系统的“BGP发言人
  • 不同自治系统的BGP发言人要交换路由信息,首先必须建立TCP连接,端口号为179
    • 在此TCP连接上交换BGP报文以建立BGP会话
    • 利用BGP会话交换路由信息(例如,增加新的路由,或撤销过时的路由,以及报告出错的情况等
    • 使用TCP连接交换路由信息的两个BGP发言人,彼此称为对方的邻站( neighbor)或对等站(peer)
    • BGP发言人除了运行BGP外,还必须运行自己所在自治系统所使用的内部网关协议GP,例如OSPF或RIP。
  • BGP发言人交换网络可达性的信息(要到达某个网络所要经过的一系列自治系统)
  • 当BGP发言人互相交换了网络可达性的信息后,各BGP发言人就根据所采用的策略从收到的路由信息中找出到达各自治系统的较好的路由。也就是构造出树形结构、不存在回路的自治系统连通图
  • BGP-4有以下四种报文
    • OPEN(打开)报文:用来与相邻的另一个BGP发言人建立关系,使通信初始化
    • UPDATE(更新)报文:用来通告某一路由的信息,以及列出要撤销的多条路由
    • KEEPALⅣE(保活)报文:用来周期性地证实邻站的连通性
    • NOTIFICATION(通知)报文:用来发送检测到的差错。

4.7 IPv4数据报的首部格式

  • 一个 IP 数据报由首部和数据两部分组成。
  • 首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的。
  • 在首部的固定部分的后面是一些可选字段,其长度是可变的。
    第四章 网络层-小白菜博客
    图中的每一行都由32个比特(也就是4个字节)构成,每个小格子称为字段或者域,每个字段或某些字段的组合用来表达IP协议的相关功能

各字段的作用

  1. 版本:占4比特,表示IP协议的版本。通信双方使用的IP协议的版本必须一致。目前广泛使用的P协议版本号为4(即IPv4)。
  2. 首部长度:
    a. 占4比特,表示IP数据报首部的长度。该字段的取值以4字节为单位。
    b. 最小十进制取值为5,表示P数据报首部只有20字节固定部分; 一个单位为4字节比如这 4*5=20字节
    c. 最大十进制取值为15,表示P数据报首部包含20字节固定部分和最大40字节可变部分。
  3. 可选字段:
    a. 长度从1个字节到40个字节不等。用来支持排错、测量及安全等措施
    b. 可选字段增加了IP数据报的功能,但这同时也使得IP数据报的首部长度成为可变的。这就增加了每一个路由器处理IP数据报的开销。实际上可选字段很少被使用
  4. 填充字段:确保首部长度为4字节的整数倍。使用全0进行填充。

IP数据报的首部长度一定是4字节的整数倍
因为首部中的可选字段的长度从1个字节到40个字节不等,那么,当20字节的固定部分加上1到40个字节长度不等的可变部分,会造成首部长度不是4字节整数倍时,就用取值为全0的填充字段填充相应个字节,以确保IP数据报的首部长度是4字节的整数倍

  1. 区分服务:占8比特,用来获得更好的服务。该字段在旧标准中叫作服务类型,但实际上一直没有被使用过。1998年,因特网工程任务组IETF把这个字段改名为区分服务。利用该字段的不同数值可提供不同等级的服务质量只有在使用区分服务时,该字段才起作用。一般情况下都不使用该字段。

  2. 总长度:占16比特,表示IP数据报的总长度(首部+数据载荷)最大取值为十进制的65535,以字节为单位。

  3. 标识,标志,片偏移:三个字段共同用于数据报分片,当IPv4数据报超过最大传输单元MTU,无法分装,则需要分片

    • 标识:占16比特,属于同一个数据报的各分片数据报应该具有相同的标识
    • 标志:占3比特,各比特含义如下
      • DF位:1表示不允许分片,0表示可以分片
      • MF位:1表示后面还有分片,0表示这是最后一个分片
      • 保留位:必须为0
    • 片偏移:占13比特,支出分片数据报的数据载荷部分偏移其在原数据的位置有多少个单位,片偏移以8个字节为单位;片偏移量必须为整数
  4. 生存时间TTL:
    a. 占8比特,最初以秒为单位,最大生存周期为255秒;路由器转发IP数据报时,将IP数据报首部中的该字段的值减去IP数据报在本路由器上所耗费的时间,若不为0就转发,否则就丢弃
    b. 现在以“跳数”为单位,路由器转发IP数据报时,将P数据报首部中的该字段的值减1,若不为0就转发,否则就丢弃。

  5. 协议:占8比特,指明IPv4数据报的数据部分是何种协议数据单元
    image

  6. 首部检验和
    a. 占16比特,用来检测首部在传输过程中是否岀现差错。比CRC检验码简单,称为因特网检验和。
    b. IP数据报每经过一个路由器,路由器都要重新计算首部检验和,因为某些字段(生存时间、标志片偏移等)的取值可能发生变化。

  7. 由于IP层本身并不提供可靠传输的服务,井且计算首部校验和是一项耗时的操作,因此在IPν6中,路由器不再计算首部校验和,从而更快转发IP数据报。

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

4.8网际控制报文协议ICMP

ICMP的主要功能包括:

  • 确认IP包是否成功送达目标地址
  • 通知在发送过程当中IP包被废弃的具体原因
  • 改善网络设置等

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

常用的ICMP询问报文

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

ICMP差错报文

  • 终点不可达:当路由器或主机不能交付数据报时,就向源点发送终点不可达报文。具体可再根据ICMP的代码字段细分为目的网络不可达目的主机不可达、目的协议不可达、目的端口不可达、目的网络未知、目的主机未知等13种错误
  • 源点抑制:当路由器或主机由于拥塞而丟弃数据报时,就冋源点发送源点抑制报文,使源点知道应当把数据报的发送谏率放慢。
  • 时间超过:当路由器收到一个目的IP地址不是自己的IP数据报,会将其生存时间TTL字段的值减1。若结果不为0,则将该IP数据报转发出去;若结果为0,除丢弃该IP数据报外,还要向源点发送时间超过报文;另外,当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丟弃,也会向源点发送时间超过报文。
  • 参数问题:当路由器或目的主机收到IP数据报后,根据其首部中的检验和字端发现首部在传输过程中岀现了误码,就丢弃该数据报,并向源点发送参数问题报文
  • 改变路由(重定向):路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)。

不应发送ICMP差错报文的情况:
1.对ICMP差错报告报文不再发送lCMP差错报告报文
2.对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文
3.对具有多播地址的数据报都不发送lCMP差错报告报文
4.对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送lMP差错报告报文

ICMP应用举例

  • 分组网间探测ping
  • 跟踪路由
    • Windows:tracert命令
    • Unix:traceroute命令

4.9虚拟专用网VPN和地址网络转换NAT

虚拟专用网VPN

概念:利用公用的因特网作为机构内各专用网之间的通信载体,称为虚拟专用网

专用(私有)地址
10.0.0.0-10.255.255.255
172.16.0.0-172.31.255.255
192.168.0.0-192.168.255.255

私有地址只能用于一个机构的内部通信,而不能用于和因特网上的主机通信
私有地址只能用作本地地址而不能用作全球地址
因特网中所有路由器对目的地址是私有地址的IP数据报一律不进行转发

网络地址转换NAT

NAT能使大量使用内部专用地址的专用网络用户共享少量外部全球地址来访问因特网上的主机和资源
通过安装了专用NAT软件的NAT路由器进行地址转换,将私有地址转换为全球ip地址
NAT转换缺点:若NAT路由器内具有n个全球ip地址,那么最多能有n个内网主机进行通信
解决方法:由于绝大多数的网络应用都是使用运输层协议TCP或UDP来传送数据,因此可以利用运输层的端口号和IP地址一起进行转换。这样,用一个全球IP地址就可以使多个拥有本地地址的主机同时和因特网上的主机进行通信。这种将端口号和P地址一起进行转换的技术叫作网络地址与端口号转换NAPT