网络层

网络层概述

主要任务:实现网络互联,进而实现数据包在各个网络之间的传输

主要问题:

  • 网络层向传输层提供怎样的服务(可靠or不可靠)
  • 网络层寻址问题

核心功能

  • 转发(forwarding):将分组从路由器的输出端口转移到合适的输出端口
    • 路由器转发表(确定在本路由器如何转发分组)
  • 路由(routing):确定分组从源到目的经过的路径
    • 路由算法(协议)(routing algorithms):确定通过网络的端到端路径
  • 连接建立(ATM、帧中继、X.25)
    • 数据分组传输之前两端主机需要首先建立虚拟/逻辑连接
      • 网络设备(如路由器)参与连接的建立

服务模型

  • 无连接服务(connecting-less service)
    • 不事先为系列分组的传输确定传输路径
    • 每个分组独立确定传输路径
    • 不同分组可能传输路径不同
    • 数据报网络(datagram network)
  • 连接服务
    • 首先为系列分组的传输确定从源到目的经过的路径
    • 然后沿该路径(连接)传输系列分组
    • 系列分组传输路径相同
    • 传输结束后拆除连接
    • 虚电路网络(virtual-circuit network)

虚电路网络

虚电路

虚电路:一条从源主机到目的主机。类似于电路的路径(逻辑连接)

  • 分组交换
  • 每个分组的传输利用链路的全部带宽
  • 源到目的路径经过的网络层设备共同完成虚电路功能

数据报网络

  • 网络层无连接
  • 每个分组携带目的地址
  • 路由器根据分组的目的地址转发分组
    • 基于路由协议/算法构建转发表
    • 检索转发表
    • 每个分组独立选路

转发表

最长前缀匹配优先

IPv4协议

Internet网络层

image.png

IP数据报

image.png

  • 版本号:IP协议的版本号
  • 首部长度:IP分组首部长度
  • 服务类型(TOS):指示期望获得哪种类型的服务
    • 1998年改名为区分服务
    • 只有网络提供区分服务(DiffServ)时使用
    • 一般情况下不使用,通常IP分组的该字段的值为00H
  • 总长度:IP分组的总字节数(首部+数据)
    • 最大IP分组的总长度:65535B
    • 最小的IP分组首部:20B
    • IP分组可以封装的最大数据:65535 - 20 = 65515B
  • 生存时间(TTL):IP分组在网络中可以通过的路由器数(或跳步数)
    • 路由器转发一次分组,TTL减一
    • 如果TTL = 0,路由器则丢弃该IP分组
  • 协议:指示IP分组封装的是哪个协议的数据包
    • 实现复用/分解
    • 6——TCP
    • 17——UDP
  • 首部校验和:实现对IP分组首部的差错检验
    • 计算校验和时,该字段置全0
    • 采用反码算数运算求和,和的反码作为首部校验和字段
  • 源IP地址、目的IP地址:分别标识发送分组的源主机/路由器(网络接口)和接收分组的目的主机/路由器(网络接口)的IP地址
  • 选项字段:携带安全、源选路径、时间戳和路有记录等内容(很少使用)
  • 填充:补齐首部(32位)

IP数据分片

最大传输单元(MTU):网络链路层存在MTU——链路层数据帧可封装数据的上限

IP分片与重组

大IP分组向较小MTU链路转发时,可以被“分片”

  • 一个IP分组分为多片IP分组
  • IP分片到达目的主机后进行“重组”

IP首部的相关字段用于标识分片以及确定分片的相对顺序

  • 总长度、标识、标志位和片偏移
  • 标识:标识一个IP分组

    • IP协议利用一个计数器,每产生IP分组计数器加1,作为该IP分组的标识
  • 标志位

    保留 DF(Don’t Fragment) MF(More Fragment)
    DF = 1:禁止分片;
    DF = 0:允许分片
    MF = 1:非最后一片;
    MF = 0:最后一片(或未分片)
  • 片偏移:一个IP分组分片封装原IP分组数据的相对偏移量

    • 片偏移字段以8字节为单位

IP编址

接口

interface:主机/路由器与物理链路的连接

  • 实现网络层功能
  • 路由器通常有多个接口
  • 主机通常只有一个或两个接口(如:有线的以太网接口,无线的802.11接口)

IP地址

32比特(IPv4):编号标识主机、路由器的接口

  • IP地址与每个接口关联
    • 网络号(NetID)——高位比特
    • 主机号(HostID)——低位比特

有类IP地址

image.png

IP子网

  • IP地址具有相同网络号的设备接口
  • 不跨越路由器(第三及以上层网络设备)可以彼此物理联通的接口

子网划分

  • 网络号(NetID)——高位比特
  • 子网号(SubID)——原网络主机号部分比特
  • 主机号(HostID)——低位比特

子网掩码

  • 形如IP地址
    • 32位
    • 点分十进制形式
  • 取值
    • NetID、SubID位全取1
    • HostID全取0
  • 例如
    • A网的默认子网掩码为:255.0.0.0
    • B网的默认子网掩码为:255.255.0.0
    • C网的默认子网掩码为:255.255.255.0
    • 借用3比特划分子网的B网的子网掩码为:255.255.224.0

子网地址+子网掩码->准确确定子网大小

应用

将IP分组的目的IP地址与子网掩码按位与运算,提取子网地址

image.png

CIDR

无类域间路由(Classless InterDomain Routing)

  • 消除传统的A、B、C类地址界限
    • NetID+SubID→Network Prefix 可以任意长度
  • 融合子网地址与子网掩码,方便子网划分
    • 无类地址格式:a.b.c.d/x ,其中x为前缀长度
  • 提高IPv4地址空间分配效率
  • 提高路由效率
    • 将多个子网聚合为一个较大的子网
    • 构造超网(supernetting)
    • 路由聚合(route aggregation)

DHCP协议

获取IP地址

  • 静态配置
  • DHCP

DHCP(Dynamic Host Configuration Protocol)动态主机配置协议

  • 从服务器动态获取:
    • IP地址
    • 子网掩码
    • 默认网关地址
    • DNS服务器名称与IP地址
  • “即插即用”
  • 允许地址重用
  • 支持在用地址续租
  • 支持移动用户加入网络

工作过程

image.png

NAT

NAT(Network Address Translate)网络地址转换

image.png

  • 只需从ISP申请一个IP地址
    • IPv4地址耗尽
  • 本地网络设备IP地址的变更,无需通告外界网络
  • 变更ISP时,无需修改内部网络设备IP地址
  • 内部网络设备对外界网络不可见,即不可直接寻址(安全)

实现:

  • 替换
    • 利用(NAT IP地址,新端口号)替换每个外出IP数据报的(源IP地址,源端口号)
  • 记录
    • 将每对(NAT IP地址,新端口号)与(源IP地址,源端口号)的替换信息存储到NAT转换表中
  • 替换
    • 根据NAT转换表,利用(源IP地址,源端口号)替换每进入内网IP数据报的(目的IP地址,目的端口号),即(NAT IP地址,新端口号)

关于NAT穿透的技术

ICMP协议

ICMP(Internet Control Message Protocol)互联网控制报文协议

支持主机或路由器:

  • 差错(或异常)报告
  • 网络探询

两类ICMP报文

  • 差错报告报文:
    • 目的不可达
    • 源抑制(Source Quench)
    • 超时/超期
    • 参数问题
    • 重定向
  • 网络探询报文
    • 回声(Echo)请求与应答报文(Reply)
    • 时间戳请求与应答报文

ICMP报文:类型+编码(查表)

image.png

报文格式

image.png

差错报告报文

image.png

IPv6协议

最初动机:IPv4地址空间已经分配殆尽

其他动机:

  • 快速处理/转发数据报
  • 支持QoS

IPv6数据报格式:

  • 固定长度的40字节基本首部
  • 不允许分片

对比IPv4

  • 校验和:彻底移除,以减少每跳处理时间
  • 选项:允许,但是从基本首部移出,定义多个选项首部,通过“下一个字段首部”字段指示
  • ICMPv6:新版ICMP
    • 附加报文类型
    • 多播组管理功能

……