我是靠谱客的博主 幽默麦片,最近开发中收集的这篇文章主要介绍TCP/IP链路层详解,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在TCP/IP协议簇中,链路层主要有三个目的:
⑴ 为IP模块发送和接收IP数据报。
⑵ 为ARP模块发送ARP请求和接收ARP应答。
⑶ 为RARP发送RARP请求和接收RARP应答。

以太网与 IEEE802.3 的比较
以太网是 DEC Intel Xerox 公司在 1982 年联合公布的一个标准。它是当今 TCP/IP 采用的主要的 LAN 技术。以太网的核心思想是 CSMA/CD Carrier Sense Multiple Access with Collision Detection )。它的速率是 10Mb/s ,地址为 48bit
IEEE802 委员会发布了一个与以太网稍有不同的标准集。其中 802.3 针对 CSMA/CD 802.4 针对 TokenBus 802.5 针对 TokenRing 。这三者的共同特性由 802.2 标准定义,那就是 802 网络共有的逻辑链路控制( LLC )。
 
以太网和 IEEE802 不同的帧格式
由于以太帧最小为 46 字节,所以在不足的空间插入填充字节 PAD
 
目的地址 & 源地址 48bit 6 字节。
长度 :指它后序数据的字节长度(不包括 CRC 码)。
DSAP :目的服务访问点,值为 0xaa
SSAP :源服务访问点,值为 0xaa
Ctrl :值置为 3
Org code 3 位均置为 0
类型 :与以太网类型字段作用相同。由 SNAP 的首部给出。 0800 IP 0806 ARP 8035 RARP
CRC :用于帧内后续字节差错的循环冗余校验。
 
802.3 规定数据部分至少为 38 字节,而以太网则要求最少为 46 字节。(所差 8 字节为 802.3 帧内的 802.2LLC 802.2SNAP 字段,以太网的类型字段位置在 802.3 帧中由长度字段代替,而 802.3 帧中的类型字端则由 802.2SNAP 字段的头三位给出)。
 
SLIP PPP
SLIP 的全称为 Serial Line IP (串行线路 IP )。它是一种在串行线路上对 IP 数据报进行封装的简单形式。                                                        
SLIP 协议定义的帧格式规则:
IP 数据报以一个称作 END 0xc0 )的特殊字符结束。同时为了防止数据报传输之前的线路噪音被误认为是数据报内容,在数据报开始处添加一个 END 字符。
如果 IP 数据中含有 END 字符,就连续传输 0xdb 0xdc 来取代它。 0xdb SLIP ESC 字符,但它的值与 ASC 码中的 ESC 0x1b )不同。
如果 IP 数据中含有 ESC 字符,就连续传输 0xdb 0xdd 来取代它。
被封装前的 IP 数据报:
 
SLIP 的缺陷:
每一端必须知道对端的 IP 地址,没有办法把本端 IP 地址传递给对端。
数据帧中无类型字段,当一条串行线路使用 SLIP 时则不能使用其他协议。
SLIP 数据帧中无 checksum ,只能依靠上层协议来发现和纠正错误。
 
压缩的 SLIP CSLIP ):
SLIP 线路上有许多小的 TCP 分组进行交换,为传送 1 个字节的数据需要 20 个字节的 IP 首部和 20 个字节的 TCP 首部。 CSLIP 能把这 40 个字节压缩到 3 5 个字节。这些被压缩的首部大大缩短了交互响应时间。
 
PPP 协议
PPP 协议修改了 SLIP 协议中的所有缺陷。 PPP 包括以下三个部分:
PPP 在串行链路上封装 IP 数据报既支持数据为 8 位和无奇偶校验的异步模式,还支持面向比特的同步链接。
通过 LCP (链路控制协议)允许双方进行协商。
通过 NCP (网络控制协议)允许双方在网络层上进行协商。
 
PPP 帧以标志字符 0x7e 开始和结束,紧接着是一个值为 0xff 的地址字节,然后是一个值为 0x03 的控制字节。
 
PPP 的转义字符:
由于标志字符是 0x7e ,当它出现在信息字段中时,需要连续传送 0x7d 0x5e 来替代它。
当在信息字段中遇到 0x7d 时,需要连续传送 0x7d 0x5d 来替代它。
默认情况下,如果字符的值小于 0x20 ,需要连续传送 0x7d 0x21 来替代它。
这样做的原因是由于双方主机的串口驱动程序或 Modem 会把这些特定的字符解释成特殊的含义,防止与其它控制字符起冲突或帧被解释的不正确。
 
PPP 的压缩:
PPP 的压缩可以减少每一帧的字节数,降低应用程序的交互时延。
通过 LCP ,大多数的产品通过协商可以省略标志位和地址位,并把协议字段由 2 字节减少到 1 字节。这样一来,与 SLIP 相比,只增加了 3 个字节(协议字段和 CRC 校验)。此外,通信双方通过 NCP 可以协商采用报文首部压缩,减小 IP TCP 首部长度。
 
PPP SLIP 相比具有下列优点:
PPP 支持在单根串行线路上运行多种网络层协议。
每一帧都有 CRC 校验。
通信双方可以用 NCP 进行 IP 地址的动态协商。
可以类似于 CSLIP TCP IP 首部进行压缩。
LCP 可以对多个数据链路选项进行设置。
 
Loopback 接口
通过 Loopback 接口允许同一台主机上的客户程序和服务器程序通过 TCP/IP 进行通信。一个传给环回接口的 IP 数据报不能在任何网络上出现。
环回接口处理 IP 数据报的过程:
 
MTU
以太网和 802.3 对数据帧长度都有一个限制,其最大值分别是 1500 1492 字节。链路层的这个特性称作 MTU ,即最大传输单元不同类型的大多数网络都有一个上限。
如果 IP 层有一个数据报要传,并且数据的长度比链路层的 MTU 大,那么 IP 层就需要进行分片,把数据报分为若干片,使每一片都小于 MTU
点对点的链路的 MTU 是一个逻辑限制而非网络介质的物理限制。其目的是为交互使用提供足够快的响应时间。
MTU 分为接口 MTU 和路径 MTU 。接口 MTU 为所指定的接口所允许的发送最大的数据包的值。路径 MTU 指两台通信主机路径中最小的 MTU 值。路径 MTU 是非对称的,它取决于当时所选择的路由。而选路不一定是对称的。所以它在两个方向上不一定是一致的。
 
 
 
参考书籍:
Stevens,W.R.TCP/IP Illustrated,Vol.1.Reading
Comer,D.E.Internetworking with TCP/IP,Vol.1
Jeff Doyle.Routing TCP/IP Vol.1 Second Edition
 

最后

以上就是幽默麦片为你收集整理的TCP/IP链路层详解的全部内容,希望文章能够帮你解决TCP/IP链路层详解所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部