链路层协议
2015-12-31 20:59:01 最后更新: 2016-01-02 10:09:16 访问数量:2052
2015-12-31 20:59:01 最后更新: 2016-01-02 10:09:16 访问数量:2052
在上一篇日志中,我们介绍了 TCP/IP 协议族,可以看到,链路层有三个目的:
现行最常用的链路层封装格式是以太网(RFC 894)和 IEEE 802(RFC 1042),还有一种因为遭到强烈反对而不被使用的尾部封装格式(RFC 893)
下图展示了 RFC 894 和 RFC 1042 两种封装格式:
RFC 893 尾部封装格式是一种早期的试验格式,他将变长的首部全部移动到数据之后,CRC 之前,这样,计算机可以直接将数据放进内存分页,从而节约了内存复制的时间,而 TCP 数据报的长度正好是 512 字节的整数倍,可以使用页表来存储
但是这样接收方不能很快找到数据报的标识、长度等信息,为解析造成了困难,所以没有被使用
以太网和 802.3 对数据帧的长度都有一个限制,其最大值分别是 1500 和 1492 字节,链路层的这个限制被称为最大传输单元 -- MTU
不同类型的网络大多都有一个上限
如果数据的长度比链路层的 MTU 还大,那么 IP 层就需要分片,将数据分成每片都小于 MTU 的若干片
SLIP 主要用于家庭中 RS-232 串行端口和高速调制解调器接入 internet
IP 数据报以一个称作 END(0xc0)的字符作为中止,为了防止错误,通常在数据开始之前也会有一个 END 字符
这个简单的协议有以下三个缺陷:
由于串行线路的速率通常较低,并且通常是交互式的,有很多小的 TCP 分组进行交换,因此,诞生了一个新的协议 CSLIP,即压缩 SLIP,他一般能把 40 个字节压缩到 3 或 5 个字节
现在大多数 SLIP 产品都支持 CSLIP 链路
PPP 即点对点协议解决了 SLIP 协议中的缺陷
如下图所示,PPP 协议包含了:
PPP 协议的每一帧都以 0x7e 开始和结束
PPP 与 SLIP 类似,主要用于低速串行链路,但与 SLIP 相比有点是显而易见的:
欢迎关注微信公众号,以技术为主,涉及历史、人文等多领域的学习与感悟,每周三到七篇推文,只有全部原创,只有干货没有鸡汤