数据包字段和帧字段

 
如前所述,路由器通过检查数据包的目的 IP 地址来决定首选转发路径。向正确的送出接口发送数据包之前,需要将 IP 数据包封装到第 2 层数据链路帧中。
Internet 协议 (IP) 数据包格式
 
RFC 791 中规定的 Internet 协议定义了 IP 数据包的格式。IP 数据包报头中包含特定字段,这些字段中包含有关数据包和发送方及接收方主机的信息。以下是 IP 报头中的字段列表和每个字段的简要说明。您应该已经熟悉了目的 IP 地址、源 IP 地址、版本和生存时间 (TTL) 字段。其它字段也很重要,但不在本课程的讨论范围之内。
版本 — 版本号(4 位);绝大多数版本为 IP 第 4 版 (IPv4)
  • IP 报头长度 — 以 32 位字为单位的报头长度(4 位)
  • 优先级和服务类型 — 数据报的处理方式(8 位);前 3 位为优先级位(此用法已被差分服务代码点 [DSCP] 取代,后者使用前 6 位 [后 2 位保留])数据包长度 — 总长度(报头 + 数据)(16 位)
  • 标识 — 唯一的 IP 数据报值(16 位)
  • 标志 — 分片控制(3 位)
  • 段偏移量 — 支持数据报分片,以允许在 Internet 上传输不同的最大传输单元 (MTU)(13 位)
  • 生存时间 (TTL) — 确定在数据报被丢弃之前能够通过多少台路由器(8 位)
  • 协议 — 发送数据报的上层协议(8 位)
  • 报头校验和 — 对报头进行完整性检查(16 位)
  • 源 IP 地址 — 32 位源 IP 地址(32 位)
  • 目的 IP 地址 — 32 位目的 IP 地址(32 位)
  • IP 选项 — 网络测试、调试、安全和其它(0 或 32 位,若有)
MAC 层帧格式
 
第 2 层数据链路帧通常包括报头信息、数据链路源和目的地址、报尾信息,以及实际传输的数据。数据链路源地址是发送数据链路帧接口的第 2 层地址。数据链路目的地址是目的设备接口的第 2 层地址。源和目的数据链路接口都处于同一个网络当中。当数据包在路由器之间转发时,第 3 层源和目的 IP 地址不会发生变化;但第 2 层源和目的数据链路地址将会发生变化。本节后续内容将更加详细地讨论该过程。
 
注:当使用 NAT(网络地址转换)时,虽然目的 IP 地址不会变化,但该过程与 IP 无关,并且是在公司网络内部执行。我们将在后续课程中讨论使用 NAT 的路由。
 
第 3 层 IP 数据包封装在与其接口相关的第 2 层数据链路帧中。下面是以太网帧中的字段列表和每个字段的简要说明。
  • 前导码 — 7 个字节,由交错排列的 1 和 0 组成的序列,用于同步信号
  • 帧首 (SOF) 定界符 — 1 个字节,表示帧开始的信号
  • 目的地址 — 6 个字节,本地网段中发送方设备的 MAC 地址
  • 源地址 — 6 个字节,本地网段中接收方设备的 MAC 地址
  • 类型/长度 — 2 个字节,指定上层协议的类型(以太网 II 帧格式)或数据字段的长度(IEEE 802.3 帧格式)
  • 数据和填充位 — 46 至 1500 个字节的数据,用零填充长度小于 46 个字节的数据包
  • 帧校验序列 (FCS) — 4 个字节,用于循环冗余校验以确保数据帧未受破坏