正文
一、引言
-
在 TCP/IP 协议簇中,链路层的作用主要有:(1). 为 IP 模块发送 / 接受 IP 数据包;(2). 为 ARP 模块发送 ARP 请求与接收 ARP 应答;(3). 为 RARP 模块发送 RARP 请求与接收 RARP 应答。
-
根据所使用的网络硬件不同,TCP/IP 协议簇使用不同的链路层协议。不同的网络硬件包括以太网、令牌环网、光纤分布式数据接口(FDDI)、RS-232 串行线路等等。
-
该文将说明一下链路层协议:
-
协议 - 以太网:事实上的协议(RFC 894 封装格式)、标准组织协议(IEEE 802.2/802.3,即 RFC 1042 封装格式);
-
协议 - 串行线路:SLIP/CSLIP 与 PPP。
二、以太网协议(RFC 894)与 IEEE802 协议(RFC 1042)
图中,各个数字的单位是字节(Byte)
。这两种协议,都是以太网上的。以太网协议是事实上的协议,IEEE802 协议是标准组织根据以太网协议发布的标准参考协议。这两种协议都有相似的结构(如图)。两种帧格式都是采用 48bit(6 字节)的目的地址与源地址。
这些地址就是我们常说的物理地址(Media Access Control Address,MAC)
。
1. 以太网帧格式(如图 1 下半部分)
-
目标 MAC 地址,6 字节长度;
-
源 MAC 地址,6 字节长度;
-
类型区域,2 字节长度,用于表示该帧是什么协议帧;
-
当区域值为 0x0800,表示该帧是一个 IP 数据包,其后的数据区域长度是 46~1500 字节;
-
当区域值为 0x0806,表示该帧是一个 ARP 请求或 ARP 应答包,其后数据长度是固定的 28 字节 + 18 字节填充字节(PAD);
-
当区域值为 0x8035,表示该帧是一个 RARP 请求或 RARP 应答包,其后数据长度是固定的 28 字节 + 18 字节填充字节 (PAD)。
-
数据区域,其长度如上;
-
CRC ,差错循环冗余校验码,4 字节长度。校验范围:除 CRC 以外的其他数据。
以太帧最小数据区域是46字节,因此,ARP与RARP包不够这么长,需要填充PAD(填充字节)。
用 wireshark 抓取一帧,可以看到:
蓝色部分为目的 MAC 地址;黑色部分为源 MAC 地址;红色部分为帧类型部分,指明这是一个 IPv4 数据包;黄色为填充字节部分;其余为数据部分。没有看到 CRC 校验码是应为抓包工具抓不到。
2.IEEE802 帧格式(如图 1 上半部分)
-
目标 MAC 地址,6 字节长度;
-
源 MAC 地址,6 字节长度;
-
长度区域,2 字节长度,指明其后除去 CRC 校验码的数据长度。这个长度值与以太帧的类型区域值不重合(以太帧类型最小 0x0800[2048], 数据长度范围又是 46~1500,不冲突),
可以使用该区域区分是以太帧还是IEEE802帧
;
-
逻辑链路控制(Logical Link Control ,802.2 LLC),3 字节长度;
-
子网访问协议(Sub-network Access Protocol, 802.2 SNAP),5 字节长度;
-
数据区域,38~1492 字节长度;
-
CRC ,差错循环冗余校验码,4 字节长度。
IEEE802最小数据区域是38字节
三、串行线路 IP(SLIP) 协议与点对点协议(PPP)
这两个协议都是对串行线路网络的协议。SLIP(Serial Line IP), 是一种串行线路上对
IP数据包
进行封装的简单形式。PPP(Point to Point Protocol)是 SLIP 的代替协议