admin管理员组

文章数量:1607690

计算机网络 | 网络层

  • 计算机网络 | 网络层
    • 功能概述
    • SDN(Software-Defined Networking)
    • 路由算法
    • IPv4
      • IPv4 分组
        • IPv4 分组的格式
        • IPv4 数据报分片
      • IPv4 地址与 NAT
        • IPv4 地址
        • 网络地址转换(NAT)
      • 子网划分和子网掩码
        • 子网划分
        • 子网掩码
      • 无分类域间路由选择(CIDR)
      • 地址解析协议(ARP)
      • 动态主机配置协议(DHCP)
      • 网际控制报文协议(ICMP)
    • IPv6
    • 路由协议
      • 路由信息协议(RIP)和距离向量算法
      • 开放最短路径优先协议(OSPF)和链路状态算法
      • 边界网关协议(BGP)和路径向量算法
      • 三种路由协议的比较
    • IP组播
    • 移动IP
    • 网络层设备
      • 路由器的组成和功能
      • 路由表与路由转发
    • 第4章总结

参考视频:王道计算机考研 计算机网络

参考书:《2022年计算机网络考研复习指导》

计算机网络 | 网络层

功能概述

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

  • 功能一:路由选择与分组转发:让数据在路由器之间走最佳的路径。
  • 功能二:异构网络互联:让不同的设备(手机、电脑、平板等)都能正常连接。
  • 功能三:拥塞控制
    • 开环控制(静态):在拥塞之前就提前设计解决。
    • 闭环控制(动态):在拥塞时自动调整解决问题。

拥塞:在通信子网中,因出现过量的分组而引起网络性能下降的现象。

数据在各层的传输形式:

OSI参考模型各层次的传输单元
应用层报文
传输层报文段
网络层IP数据报,分组(如果IP数据报太大就切割成分组)
数据链路层
物理层比特流

SDN(Software-Defined Networking)

数据平面:用于控制数据处理过程中各种具体处理转发过程。处理时间短,在路由器中用硬件实现。

控制平面:用于控制、管理网络协议的运行,比如 OSPF 协议、RIP 协议、BGP 协议。处理时间长,在路由器中用软件实现。

分为两种:

  • 每路由器法
  • SDN 法

每路由器法:

SDN 法:

注:上面的交换机实际上是路由器。

SDN 控制器的三个层次:

  • 对于网络控制应用程序的接口:SDN 控制器通过“北向接口”与网络控制应用程序交互,该 API 允许网络控制应用程序在状态管理层之间读写网络状态。
  • 网络范围状态管理层:由 SDN 控制平面作出的最终控制决定,将要求控制器具有有关网络的主机、链路等最新状态信息。
  • 通信层:负责 SDN 控制器与受控网络设备之间的通信(OpenFlow 协议),包含“南向接口”。

例题:

小结:

路由算法

路由算法的分类:

层次路由:

  • 内部网关协议(IGP):也称域内路由选择。
  • 外部网关协议(EGP):也称域间路由选择。

示例:

IPv4

IPv4 分组

IPv4 分组的格式

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

  • 首部:固定长度为 20 比特, 是所有 IP 分组必需的。后面是一些可选字段,长度可变,用来提供错误检测及安全等机制。
  • 数据部分:TCP、UDP段。

IP 数据报格式:

名称英文注释大小
版本Versionipv4或者ipv64位
首部长度IHL此处数值再乘以4才是真正大小,同时因为IP数据报固定长度为20字节,所以此处最小值为5,即二进制的01014位
区分服务DSCP + ECN希望获得哪种服务,用的比较少8位
总长度Total Length首部+数据的长度,最大为216-1=65535B16位
标识Identification用来表示是哪一个数据报的分片,不同的分片标识各不相同8位
标志Flags用来表示是否分片和分片是否结束3位,但实际有用的只有后两位
片偏移Fragment Offset用来标记分片之后,该分片在原来的数据报的位置,以8字节为单位13位
生存时间Time To Live 即TTL每经过一个路由器TTL-1,0时自动放弃,根据系统不同默认的TTL不同8位
协议Protocol用来标记协议名的字段值,如TCP、UDP、ICMP等8位
首部检验和Header Checksum检验首部的字段是否出错,出错就丢弃此数据报8位
源地址Source IP Address发送方ip地址32位
目的地址Destination IP Address接收方ip地址32位
可选字段Options用来排错等安全检测未知,可在0-40位之间
填充将数据报对齐成4字节的整数倍,数值全部为0未知,根据可选字段来定

注:总长度单位是 1B,片偏移单位是 8B,首部长度单位是 4B。

IPv4 数据报分片

最大传送单元(MTU):一个数据链路层数据报能承载的最大数据量。

以太网的 MTU 是 1500 字节。

如果 IP 分组超过了某链路的 MTU 值?

IP 数据报分片。

例题:

IPv4 地址与 NAT

IPv4 地址

IP 地址:全球唯一的表示某一个主机或者路由器接口的32位/4字节编码。

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

示例:

IP 地址分类:


为什么A类最大是126.xxx.xxx.xxx?

因为网络号最开始第一位是0,一共八位,所以二进制表示位0xxxxxxx,最大就是27-1=127,但是因为127.xxx.xxx.xxx是特殊IP地址,所以将其去掉。

为什么B类最大是191.255.xxx.xxx?

因为网络号最开始两位是10,一共八位,所以二进制表示位10xxxxxx,最大就是10111111=191,最小就是10000000=128,无特殊IP地址。

为什么C类最大是223.255.255.xxx?

因为网络号最开始三位是110,一共八位,所以二进制表示位110xxxxx,最大就是11011111=223,最小就是10000000=192,无特殊IP地址。

A类地址减2的原因:

  1. 网络号字段全为0的IP地址是保留地址,表示“本网络”。
  2. 网络号为127的IP地址是环回自检地址。

B类地址减1的原因:128.0这个网络号不可指派。

C类地址减1的原因:192.0.0这个网络号不可指派。

每个网络中最大主机数减2的原因:

  1. 主机号全0表示本网络本身。
  2. 主机号全1表示本网络的广播地址,又称直接广播地址。

特殊 IP 地址:

32为全为1,即255.255.255.255表示整个TCP/IP网络的广播地址,又称受限广播地址。实际使用时,由于路由器对广播域的隔离,255.255.255.255等效为本网络的广播地址。

IP地址的特点:

  1. IP地址的网络号由IP地址管理机构分配,主机号由得到该网络的单位自行分配。
  2. 路由器仅根据目的主机的网络号来转发分组。
  3. IP地址是标志一台主机/路由器和一条链路的接口。
  4. IP网络上的路由器必须至少有2个IP地址,每个端口至少分配一个IP地址。
  5. 用中继器/网桥连接的若干LAN同处一个广播域,因此该LAN中所有主机的IP地址的网络号必须相同,但主机号必须不同。
  6. IP地址中,分配到网络号的网络平等。
网络地址转换(NAT)

网络地址转换(NAT)的概念:将专用网络地址(如Intranet)转换为公用地址(如Internet),从而对外隐藏内部管理的IP地址。

网络地址转换(NAT)的作用:

  1. 使得整个专用网只需要一个全球IP地址就可以与因特网连接,由于专用网本地IP地址是可重用的,所以NAT大大节省了IP地址的消耗。
  2. 隐藏了内部网络结构,降低了内部网络收到攻击的风险。

为了网络安全,划出了部分IP地址为私有IP地址:

私有地址只用于LAN,不用于WAN,并且允许私有IP地址被LAN重复使用。

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

  • 普通路由器:仅工作在网络层,在转发数据报时,不改变其源IP地址/目的IP地址和端口号。
  • NAT路由器:工作在传输层和网络层,在转发数据报时,更换IP地址和端口号。

子网划分和子网掩码

子网划分

两级IP地址的缺点:

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

子网划分:在IP地址中增加一个子网号字段,使两级IP地址变成了三级IP地址。

从主机号借用若干比特作为子网号,当然主机号也就减少了相同比特。

三级IP地址 = {<网络号>, <子网号>, <主机号>}

示例:

子网掩码

子网掩码:一个与IP地址相对应的、32bit的二进制串,由一串1和一串0组成。

其中,1对应于IP地址中的网络号和子网号,0对应于主机号。

将IP地址与其子网掩码逐位与(&)运算,就得到相应子网的网络地址。

示例:

分组转发算法:

注意:

  1. 这里特定主机路由就是指找特定的处理这里这个IP地址的路由。
  2. 默认路由会将这个数据报发给另一个路由,直至找到对应的路由,或者TTL耗尽被丢弃。

例题:

这道题可以看出来,即使子网掩码不同,相同IP地址对应的子网IP地址也可能相同。

但是,子网掩码不同,划分的子网数目不同。

为什么划分的子网数目不同?或者说怎么算划分的子网位数目?

以255.255.192.0为例,255是11111111即八个1,192是11000000即2个1,一共是82+2=18个1,一共有32位地址,所以剩余有32-18=14位。再以255.255.224.0为例,255是11111111即八个1,224是11100000即3个1,一共是82+3=19个1,一共有32位地址,所以剩余有32-19=13位。

这道题先将255.255.252.0计算出一共有8+8+6=22位网络号位,所以就有32-22=10位主机号位。

将180.80.77.55解析,可以知道在77部分某部分开始会用来表示主机号位。77的二进制是0100 1101,因为一共有22位网络号位,所以010011 (此处分开) 01,从这个01开始是主机号位。

所以用来表示子网ip地址的应该是180.80.76(010011 00).xxx。

但是本体是发布广播地址,所以主机号全部都要是1,所以应该是180.80.79(010011 11).255(11111111)注意79括号内后两位二进制11。

无分类域间路由选择(CIDR)

IP地址 = {<网络前缀>, <主机号>}

斜线计法(CIDR计法):IP地址/网络前缀所占比特数

路由聚合(构成超网):将网络前缀都相同的连续IP地址组成CIDR地址块。

这种做法有利于减少路由器之间的路由选择信息的交换,提高网络性能。

如图,通过缩短前缀,网络1和网络2就可以合并在206.1.0.0/16的子网下。

但是这样转发表之中就会有多个匹配结果,所以我们使用最长前缀匹配

例题:

最长前缀匹配:查找路由表时,应选择具有最长网络前缀的路由。

前缀越长,地址块越小,路由越具体。

例题:

地址解析协议(ARP)

IP地址是网络层使用的地址,硬件地址是数据链路层使用的地址(如MAC地址)。

通过数据封装,把IP数据报分组封装成MAC帧后,数据链路层看不见数据报分组的IP地址。

由于路由器的隔离,IP网络中无法通过广播方式依靠MAC地址来完成跨网络的寻址,因此只能在IP网络的网络层使用IP地址寻址。

注:地址解析协议(ARP)是网络层协议。

注:从IP地址到硬件地址的解析是自动进行的。

示例:

例题:

动态主机配置协议(DHCP)

主机如何获得IP地址?

动态主机配置协议(DHCP)是应用层协议,使用C/S方式,基于UDP。

网际控制报文协议(ICMP)

网际控制报文协议(ICMP)是网络层协议。

为了提高IP数据报交付成功的机会,使用网际控制报文协议(ICMP)来让主机/路由器报告差错和异常情况。

ICMP报文分类:

  1. ICMP差错报告报文
  2. ICMP询问报文

ICMP差错报告报文:

注:源点抑制已废弃不用。

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

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

注:组播是指由一点到多点,但不是无脑发到所有点。无脑发到所有点的是广播,组播有筛选条件。

ICMP询问报文:

注:3和4已废弃不用。

ICMP的应用:

  1. 分组网间探测(PING):测试两个主机之间连通性,使用了ICMP回送请求和回答报文。
  2. Traceroute(Tracert):跟踪一个分组经过的路由(从源点到终点的路径),使用了ICMP时间超过报文。

PING工作在应用层,它直接使用网络层的ICMP,而未使用传输层的TCP/UDP。

Traceroute(Tracert)工作在网络层。

IPv6

为什么会有IPv6?

因为32位的IPv4地址已经消耗殆尽。

网络地址转换(NAT)实现了路由聚合,节省了全球IP地址。

无分类域间路由选择(CIDR)实现了子网划分,使得IP地址分配更合理。

但这两种方法也只是在IPv4的基础上扩展了IPv4地址数目,治标不治本。只有IPv6能从根本上解决IP地址的耗尽问题。

IPv6数据报格式:

名称英文作用位数
版本Version协议版本,此处因为是IPv6所以总是64位
优先级Traffic Class又来区分数据报的类型和优先级8位
流标签Flow Label和IPv4标识某个数据报分片不同,这是对于一整个数据报流的标记20位
有效载荷长度Payload Length指的是扩展首部+数据部分的大小,和IPv4的总长度和首部长度都不同,IPv6的首部长度是固定的40字节16位
下一个首部Next Header基本首部的下一个首部指的是有效载荷里标记的的扩展首部,有效载荷里的扩展首部再指向有效载荷里标记的的扩展首部,直至最后指向数据8位
跳数限制Hop Limit基本相当于IPv4当中的TTL,每到一个路由器-1,减到0时丢弃8位
源地址Source Address发送方IPv6地址128位
目标地址Destination Address接收方IPv6地址128位

IPv6地址表示形式:

IPv6基本地址类型:

名称作用要求
单播一对一通信可做源地址,目的地址
多播一对多通信,以前的广播地址当做覆盖所有主机的多播可做目的地址
任播一对多当中的一个通信,看似一对多,实则一对一可做目的地址

IPv6对比IPv4:

IPv6向IPv4过渡的策略:

隧道技术:如果是IPv6的数据报到了IPv4,就用IPv4重新封装,把IPv6数据报前面加上IPv4伪装成IPv4数据报继续传输,直至到了IPv6路由再解开IPv4伪装。

路由协议

自治系统(Autonomous System,AS):单一技术管理下的一组路由器。

路由协议分类:

  • 内部网关协议(IGP):也称域内路由选择,AS内部的路由选择。
  • 外部网关协议(EGP):也称域间路由选择,AS之间的路由选择。

路由信息协议(RIP)和距离向量算法

路由信息协议(RIP)是一种分布式的基于距离向量的路由选择协议。

路由信息协议(RIP)是应用层协议,使用UDP传送数据(端口520)。

路由信息协议(RIP)的特点:

  1. 仅和相邻路由器交换信息。
  2. 交换的信息是当前路由器所知道的全部信息(自己的路由表)。
  3. 按固定的时间间隔(比如30s)交换路由信息,动态维护路由表。
  4. 若超过180s没收到邻居路由器的通告,则判定邻居消失,并更新自己的路由表。

距离向量算法:

例题:

路由信息协议(RIP)的报文格式:

路由信息协议(RIP)的优点:

  1. 实现简单
  2. 开销小
  3. 收敛过程较快

路由信息协议(RIP)的缺点:

  1. 限制了网络的规模,它能使用的最大距离是15(16表示不可达)。
  2. 路由器之间交换的是路由器中的完整路由表,因此网络规模越大,开销越大。
  3. 网络出现故障时,会出现“慢收敛现象”。

“慢收敛现象”:


开放最短路径优先协议(OSPF)和链路状态算法

开放最短路径优先协议(OSPF)是网络层协议。

开放最短路径优先协议(OSPF)概述:

开放最短路径优先协议(OSPF)的五种分组类型:

  1. 问候分组:用来发现和维持邻站的可达性。
  2. 数据库描述分组:向邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息。
  3. 链路状态请求分组:向对手请求发送某些链路状态项目的详细信息。
  4. 链路状态更新分组:用洪泛法对全网更新链路状态。
  5. 链路状态确认分组:对链路更新分组的确认。

链路状态算法:

注:虽然使用Dijkstra算法能计算出完整的最优路径,但路由表不会存储完整路径,而只存储“下一跳”。

为使开放最短路径优先协议(OSPF)能够用于更大规模的网络,开放最短路径优先协议(OSPF)将一个自治系统再划分为若干更小的范围,称为区域

区域有层次之分,上层的区域称为主干区域,负责连通其他下层的区域,并且连接其他自治系统。

划分区域的好处:将利用洪泛法交换链路状态信息的范围局限于每个区域而非整个自治系统,减少了整个网络上的通信量。

开放最短路径优先协议(OSPF)的分组(数据报):

开放最短路径优先协议(OSPF)分组直接使用IP数据报传送,该信息直接作为IP数据报的数据部分。

开放最短路径优先协议(OSPF)的特点(与RIP协议对比):

边界网关协议(BGP)和路径向量算法

边界网关协议(BGP)是应用层协议,借助TCP传送。

边界网关协议(BGP)只能力求寻找到一条能够到达目的网络且比较好的路由(不能成环)。

边界网关协议(BGP)概述:

边界网关协议(BGP)交换的是一组路径向量。

边界网关协议(BGP)交换信息的过程:

边界网关协议(BGP)的报文格式:

一个BGP发言人与其他AS中的BGP发言人要交换路由信息,就要先建立TCP连接,然后在此基础上交换BGP报文以建立BGP会话,利用该会话交换路由信息。

边界网关协议(BGP)的特点:

  1. BGP交换路由信息的结点数量级是AS的数量级。
  2. 每个AS中BGP发言人(或边界路由器)的数目很少。

BGP-4共使用4种报文:

三种路由协议的比较

IP组播

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

组播一定仅应用于UDP。

主机使用因特网组管理协议(IGMP)加入组播组。

组播组的主机可以来自不同的物理网络(组播路由器提供支持)。

主机组播时仅发送一份数据,只有数据在传输路径出现分岔时才将分组复制后继续转发。

IP组播地址:

IP组播分类:

  1. 只在本局域网上进行硬件组播。
  2. 在因特网范围内进行组播,但在最后阶段还是要把组播数据报在局域网上用硬件组播交付。

硬件组播:

因特网组管理协议(Internet Group Management Protocol,IGMP):

因特网组管理协议(IGMP)让连接本地局域网的组播路由器知道本局域网上是否有主机(的进程)参加或退出了某个组播组。

因特网组管理协议(IGMP)是网络层协议,使用IP数据报传送报文。

因特网组管理协议(IGMP)工作的两个阶段:

注:组播路由器知道的成员关系只是所连接的局域网中有无组播组的成员,并不知道成员个数。

组播路由选择协议:

组播路由选择协议的目的是找出以源主机为根节点的组播转发树,其中每个分组在每条链路上只传送一次。

组播路由选择协议的作用:成员可以自行找到转发组,自行决定参加哪个组播。

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

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

小结:

移动IP

支持移动性的因特网体系结构与协议共称为移动IP。

移动IP技术:移动结点以固定的网络IP地址实现跨越不同网段的漫游功能,并保证基于网络IP的网络权限在漫游过程中不发生任何改变。

基于IPv4的移动IP定义三个功能实体:

  1. 移动结点
  2. 归属代理(本地代理)
  3. 外埠代理(外部代理)

归属代理和外埠代理统称为移动代理。

基本概念:

移动IP通信过程:

注意,移动IP不等于动态IP(通过DHCP服务器动态获得一个IP地址)。

网络层设备

路由器的组成和功能

路由器是一种具有多个输入/输出端口的专用计算机,其任务是连接异构网络并完成路由转发。

注:路由器隔离了广播域。

从结构上看,路由器由路由选择和分组转发两部分组成。

路由器是网络层设备,实现了网络模型的下三层。

输入端口:

输出端口:

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

回顾:

路由表与路由转发

第4章总结

本文标签: 计算机网络网络