计算机网络-网络层

4.1 网络层的功能

网路层为传输层提供服务,将传输层的数据封装成**“IP数据报”。网络中的路由器根据IP数据报首部中的源IP地址**、目的IP地址进行“分组转发”。因此,网络层实现了**“主机到主机”**的传输。

数据链路层为网络层提供服务,将网络层的 **IP数据报(分组)**封装成帧,传输给下一个相邻结点。

异构网络互联

  • 异构:每个网络的拓扑结构不同、物理层&链路层的实现不同、主机类型也各不相同
  • 重要的设备:路由器(Router)
  • 注:在TCP/IP文献中,路由器也称为 网关(Gateway)

路由与转发

  • 路由
    • 各个路由之间相互配合,规划IP数据报(分组)的最佳转发路径
    • 注:各个路由器需要运行“路由协议”,最终生成各自的“路由表”
  • 转发
    • 一台路由器,根据自己的“转发表”,将收到的IP数据报从合适的接口转发出去
    • 注:转发表 = 精简版路由表。更精简的数据结构有助于快速检索

拥塞控制

  • 拥塞
    • 原因:网络上出现过量分组、超负荷,引起网络性能下降
    • 现象:网络上的分组增加,但吞吐量反而降低
  • 拥塞控制方法
    • 开环控制(静态的方法)
      • 在部署网络时,就提前设计好预防拥塞的方法。一旦网络开始运行,就不再更改
    • 闭环控制(动态的方法)
    • 动态监视网络状态,及时发现哪里发生拥塞,并将拥塞信息传递给相关路由器(如:通过ICMP),相关路由器及时调整“路由表”

4.2IPV4

IPV4分组

IP数据报(分组)格式

image-20250624210631653

一个链路层数据帧能承载的最大数据量称为最大传送单元(MTU)

如果一个IP数据报的总长度超出了下一段链路的MTU,就需要分片(可能在源主机、或任何一个路由器中发生,并且只有目的主机才会“重组”)

注意每个分片为独立的IP数据报,都包含首部,并且通过标识字段源地址表明自己为分片,通过标志字段表示是否后面有分片(最低位),以及是否允许被分片(次低位),标志字段最高位不用管。片偏移字段表示数据在“被分片前”的位置,以\(\times 8B\) 为单位。

生存时间TTL字段表示可通过的路由器数量的最大值,每经过一个路由器TTL减1,如果TTL为0就直接丢弃分组,并向源主机发送ICMP报文(通知出现异常)

IPv4地址(最初)+ 整章串讲

这里顺序是(按视频来的历史发展顺序):

IPv4最初版\(\rightarrow\)子网划分与子网掩码\(\rightarrow\)CIDR\(\rightarrow\)IPv4地址与NAT

image-20250624233138819

32bit IP地址的两级结构 = <网络号>,<主机号>

为方便阅读,可将IP地址按8bit分4组,每组最大为255(例如192.168.11)

image-20250625090025883

子网划分与子网掩码

将主机号的最高位的一个比特划出为子网号,那么就将网络划分为两个子网。这样可以提高IP地址的利用率。需要子网号的数量取决于划分给子网号的比特数

子网划分

  • 原理:假设原本主机号占 \(n\) bit,那么可以将前 \(k\) bit 抠出来作为子网号,用剩余的 \(n-k\) bit 作为主机号,这样就能划分出 \(2^k\) 个子网**(每个子网包含的IP地址块大小相等)**

  • 子网划分后,IP地址为三级结构:

    <网络号,子网号,主机号>

  • 注意:每个子网地址中,主机号不能分配为全0/全1——全0表示子网本身,全1为子网广播地址

子网掩码

  • 作用
    • 用子网掩码、IP地址“逐位与”,算出<网络号,子网号> (可合称为“网络前缀”)
    • 只有网络前缀相同的IP地址,才归属于同一个网络(或子网)
  • 注意
    • 如果一个网络内部进行了子网划分,那么这个网络中的每台主机、每个路由器接口都需要配置IP地址、默认网关、子网掩码
    • 如果一台路由器支持子网划分技术,那么在它的转发表中,需要包含<目的网络号,子网掩码,转发接口>

默认子网掩码

如果一个传统网络(A/B/C类)内部没有进行子网划分,那么可将对应此网络的转发表项设置为“默认子网掩码”

  • A类默认 255.0.0.0
  • B类默认 2555.255.0.0
  • C类默认 255.255.255.0

默认路由

  • 默认路由(默认转发表项)设置:<目的网络号全0,子网掩码全0>
  • 在路由器转发表中,如果所有表项都不匹配,那么将从“默认路由”转发出去

image-20250625094956994

image-20250625095116924

引入路由聚合后,注意最长前缀匹配原则

子网掩码的CIDR记法:

网络前缀的位数为 n,子网掩码可记为 “/n”

无分类编制CIDR

IP地址资源分配不灵活,利用率低,有限的IP地址资源将很快耗尽

对有一定主机需求的,可给出可变长网络前缀CIDR地址块

获得CIDR地址块后,可以把它划分为多个子网

定长子网划分

每个子网一样大,不够灵活,IP地址利用率低,浪费有限的IP地址资源

变长子网划分

在一个CIDR地址块中,划分子网时,子网号长度不固定(每个子网包含的IP地址块大小不同)

每个子网中,主机号全0、全1的IP地址不能分配给特定结点私用

子网划分技巧: 利用类似于“从根到叶二叉哈夫曼树”的技巧

  • 原始CIDR地址块作为根节点(假设可自由分配的主机号占 \(n\) bit)

  • 每个分支结点必须同时拥有左右孩子,一个为0,一个为1

  • 每个叶子结点对应一个子网,根据根节点到达叶子节点的路径来分析子网的IP地址块范围

  • 整棵数的高度不能超过 n-1(最小的子网也要保留2bit)

路由聚合

对于一个路由转发表,如果几条路由表项的转发接口相同部分网络前缀也相同,那么可以将这几条路由表项聚合为一条。这种地址的聚合称为路由聚合,也称构成超网

  • 路由聚合可以减少路由表的大小
  • 路由聚合可能会引入额外的无效地址(并不影响网络工作)

最长前缀匹配原则

优先从匹配长度最长的转发接口转发

网络地址转换 NAT

缓解IP地址不够用的问题

一个局域网的多个主机共享一个外网IP地址,多个主机使用局域网内唯一的内网IP地址

通过内网地址和端口号映射为外网的IP地址和端口号实现对外网的访问

image-20250625110638963

地址解析协议ARP

用于查询同一网络中的<IP地址,MAC地址>之间的映射关系

ICMP协议用于网络层实体之间相互通知“异常事件”

IGMP协议用于实现IP组播

ARP

  • 作用:用于查询同一网络中的<IP地址,MAC地址>之间的映射关系
  • ARP表(ARP缓存)
    • 记录(IP地址\(\Leftrightarrow\)MAC地址)之间的映射关系
    • 一个数据结构(每台主机、每台路由器都有自己的ARP表)
    • 需要定期更新ARP表项
  • 过程
    • ARP请求分组
      • 内容
        • 我是谁?
          • 我的IP地址是X,我的MAC地址是Y
        • 我想找谁?
          • 我想找的人的IP地址是Z
      • ARP请求分组封装进MAC帧(帧目的地址=全1,源地址=Y)——广播帧
    • ARP响应分组
      • 内容
        • 你好,我是你要找的人,我的IP地址是Z,我的MAC地址是V
      • ARP响应分组封装进MAC帧(帧目的地址=Y,源地址=V)——单播帧

动态主机配置协议 DHCP

基本概念

  • 作用:常用于给刚接入网络的主机动态分配IP地址、配置默认网关、子网掩码
  • DHCP使用客户/服务器模型(C/S)
    • 客户:就是新接入网络的主机
    • 负责分配IP地址的那台主机,管理一系列IP地址池
      • 在家庭网路中,通常由家庭路由器兼职“DHCP”服务器
      • 在一个大型网络内可以有多台DHCP服务器
  • DHCP是应用层协议,基于UDP:客户UDP端口号=68,服务器DUP端口号=67

image-20250625164322333