第2章 链路层

所属:TCP/IP详解 卷1:协议 来源:TCP/IP详解 卷1:协议

本章介绍链路层的基本概念,包括以太网、SLIP、PPP、环回接口和MTU等。


2.1 引言

链路层的作用

链路层的作用:

  • 处理物理层的细节
  • 把数据封装成帧
  • 在同一网络内传输
  • 差错检测
  • 寻址(MAC地址)

链路层负责同一网络内的帧传输。


本章讨论的内容

本章讨论的内容:

  • 以太网和IEEE 802封装
  • SLIP:串行线路IP
  • PPP:点对点协议
  • 环回接口
  • 最大传输单元MTU
  • 路径MTU

本章介绍几种常见的链路层。


2.2 以太网和IEEE 802封装

以太网

以太网(Ethernet):

  • 最常见的局域网技术
  • 由Xerox、Intel、DEC开发
  • 速率:10Mbps、100Mbps、1Gbps、10Gbps等
  • 使用CSMA/CD介质访问控制

以太网是最常用的局域网技术。


以太网帧格式

以太网帧格式(Ethernet II):

+----------------+----------------+------+------+---------+
|   目的MAC地址   |   源MAC地址    | 类型 | 数据 | 检验和  |
|     6字节      |     6字节      | 2字节 |46-1500| 4字节  |
+----------------+----------------+------+------+---------+

字段说明:

  • 目的地址:6字节,接收方MAC地址
  • 源地址:6字节,发送方MAC地址
  • 类型:2字节,上层协议类型
    • 0x0800:IP
    • 0x0806:ARP
    • 0x8035:RARP
  • 数据:46-1500字节,上层数据
  • 检验和:4字节,CRC校验

以太网帧有标准的格式。


IEEE 802封装

IEEE 802封装:

  • IEEE标准化的以太网
  • 802.3(物理层和MAC)+ 802.2(LLC)
  • 和以太网II略有不同

802.3帧格式:

+----------------+----------------+------+-----+-----+---------+
|   目的地址      |   源地址       | 长度 | LLC | SNAP| 数据    |
|     6字节      |     6字节      | 2字节 | 3字节| 5字节|         |
+----------------+----------------+------+-----+-----+---------+

区别:

  • 类型字段变成了长度字段
  • 有LLC和SNAP子层
  • 现在用得不多

IEEE 802是另一种封装格式。


MAC地址

MAC地址(Media Access Control):

  • 48位,6字节
  • 全球唯一
  • 烧录在网卡上
  • 前24位是厂商ID
  • 后24位是序列号

特殊地址:

  • 广播地址:FF:FF:FF:FF:FF:FF
  • 多播地址:第一位为1
  • 单播地址:第一位为0

MAC地址是链路层的地址。


2.3 尾部封装

什么是尾部封装

尾部封装(Trailer Encapsulation):

  • 一种特殊的封装方式
  • 把协议首部放在数据后面
  • 主要用于某些网络

为什么用尾部封装:

  • 某些硬件这样做
  • 历史原因
  • 现在很少见

尾部封装比较少见。


2.4 SLIP:串行线路IP

什么是SLIP

SLIP(Serial Line IP):

  • 串行线路上的IP封装
  • 用于拨号上网等
  • 很简单的协议
  • 现在基本被PPP取代

SLIP是简单的串行线路封装。


SLIP的封装

SLIP的封装规则:

  1. 用特殊字符标记帧的开始和结束
  2. END字符(0xC0):帧结束
  3. ESC字符(0xDB):转义
  4. 数据中的END和ESC要转义

转义规则:

  • 0xC0 → 0xDB 0xDC
  • 0xDB → 0xDB 0xDD

SLIP用特殊字符标记帧边界。


SLIP的缺点

SLIP的缺点:

  1. 没有地址

    • 两端都要知道对方的IP
    • 不能动态分配
  2. 没有差错检测

    • 没有校验和
    • 出错了不知道
  3. 没有类型字段

    • 只能传IP
    • 不能传其他协议
  4. 没有认证

    • 不安全
    • 不知道对方是谁

SLIP很简单,但缺点很多。


2.5 PPP:点对点协议

什么是PPP

PPP(Point-to-Point Protocol):

  • 点对点协议
  • 取代SLIP
  • 更完善
  • 功能更多

PPP是更完善的点对点协议。


PPP的组成

PPP的三个组成部分:

  1. 封装方法

    • 类似HDLC的帧格式
    • 有地址、控制、协议等字段
  2. 链路控制协议(LCP)

    • Link Control Protocol
    • 建立、配置、测试链路
    • 协商参数
  3. 网络控制协议(NCP)

    • Network Control Protocol
    • 针对不同网络层协议
    • 配置网络层参数
    • 比如IPCP配置IP

PPP由三部分组成。


PPP帧格式

PPP帧格式:

+-----+-----+-----+------+------+---------+-----+
|标志 |地址 |控制 |协议  | 数据 | 填充    |检验和|
|1字节|1字节|1字节|2字节 |      |         |2字节|
+-----+-----+-----+------+------+---------+-----+

字段说明:

  • 标志:0x7E,帧边界
  • 地址:0xFF,广播地址
  • 控制:0x03,无编号帧
  • 协议:上层协议类型
    • 0x0021:IP
    • 0xC021:LCP
    • 0x8021:IPCP
  • 数据:上层数据
  • 检验和:CRC校验

PPP帧格式更完善。


PPP的优点

PPP的优点:

  1. 支持多种协议

    • 不只是IP
    • 协议字段标识
  2. 有差错检测

    • 检验和
    • 能检测错误
  3. 有LCP

    • 链路配置
    • 协商参数
  4. 有NCP

    • 网络层配置
    • 动态分配IP
  5. 有认证

    • PAP、CHAP
    • 更安全

PPP比SLIP好很多。


2.6 环回接口

什么是环回接口

环回接口(Loopback):

  • 虚拟的网络接口
  • 自己发给自己
  • 不需要硬件
  • 通常是127.0.0.1

环回接口是虚拟接口。


环回地址

环回地址:

  • 127.0.0.0/8
  • 整个A类地址段
  • 最常用的是127.0.0.1(localhost)

特点:

  • 发给这个地址的数据
  • 不会出现在网络上
  • 直接回到自己

环回地址用于本机测试。


环回接口的用途

环回接口的用途:

  1. 测试

    • 测试网络程序
    • 不用网络也能测
  2. 客户端和服务器在同一台机器

    • 用环回地址通信
    • 效率高
  3. 本机服务

    • 一些服务只监听环回
    • 更安全

环回接口很有用。


环回接口的处理

环回接口的数据处理:

  • 发送的数据直接回到接收队列
  • 不需要经过网卡
  • 效率很高
  • 和正常接口一样处理

环回接口的处理很高效。


2.7 最大传输单元MTU

什么是MTU

MTU(Maximum Transmission Unit):

  • 最大传输单元
  • 链路层一次能传的最大数据
  • 不包含链路层首部
  • 单位是字节

MTU是链路层的最大数据长度。


常见的MTU

常见链路的MTU:

链路类型MTU(字节)
以太网1500
802.31492
PPP通常1500
SLIP通常296
FDDI4352
令牌环4464
超通道65535

不同链路MTU不同。


MTU的意义

MTU的意义:

  • 大的MTU效率高
    • 首部开销比例小
    • 同样的数据更少的帧
  • 小的MTU延迟小
    • 更快发完一帧
    • 等待时间短

为什么以太网是1500:

  • 历史原因
  • 平衡效率和延迟
  • 一直沿用至今

MTU影响效率和延迟。


2.8 路径MTU

什么是路径MTU

路径MTU(Path MTU):

  • 从源到目的的路径上
  • 所有链路的MTU的最小值
  • 路径上最小的MTU
  • 就是瓶颈

路径MTU是路径上最小的MTU。


路径MTU的意义

路径MTU的意义:

  • 大于路径MTU的分组会被分片
  • 分片降低效率
  • 最好按路径MTU大小发送
  • 避免分片

路径MTU决定了不分片的最大分组。


路径MTU发现

路径MTU发现(Path MTU Discovery):

  • 发现路径MTU的大小
  • 用DF位和ICMP
  • 发送时设置DF位(不分片)
  • 如果中间MTU不够
    • 路由器丢弃
    • 发ICMP不可达(需要分片)
  • 收到ICMP后减小MTU重试

路径MTU发现可以找到路径MTU。


2.9 小结

以太网

  1. 帧格式

    • 目的地址、源地址
    • 类型、数据、检验和
    • 6+6+2+数据+4
  2. MAC地址

    • 48位
    • 全球唯一
    • 广播地址全F

SLIP

  1. 特点

    • 简单
    • 串行线路
  2. 缺点

    • 没有地址
    • 没有差错检测
    • 只能传IP
    • 没有认证

PPP

  1. 组成

    • 封装方法
    • LCP(链路控制)
    • NCP(网络控制)
  2. 优点

    • 支持多协议
    • 差错检测
    • 链路配置
    • 动态IP
    • 认证

环回接口

  1. 特点

    • 虚拟接口
    • 自己发给自己
    • 127.0.0.1
  2. 用途

    • 测试
    • 本机通信
    • 本机服务

MTU

  1. 什么是MTU

    • 最大传输单元
    • 链路层最大数据
  2. 常见MTU

    • 以太网:1500
    • 各种链路不同
  3. 路径MTU

    • 路径上最小的MTU
    • 瓶颈
  4. 路径MTU发现

    • DF位+ICMP
    • 发现路径MTU

关键概念

  1. 链路层

    • 同一网络内传输
    • 帧格式
  2. 以太网

    • 最常用
    • MAC地址
  3. PPP

    • 点对点
    • 比SLIP好
  4. 环回

    • 虚拟接口
    • 本机测试
  5. MTU

    • 最大传输单元
    • 路径MTU

链路层