TCP/IP详解之链路层

一 链路层主要有三个目的:

(1)为I P模块发送和接收I P数据报;(2)为A R P模块发送A R P请求和接收A R P应答;(3)为R A R P发送R A R P请求和接收R A R P应答。

二 以太网和IEEE 802封装

以太网:采用一种称作 C S M A / C D的媒体接入方法,其意思是带冲突检测的载波侦听多路接入(Carrier Sense, Multiple Access with Collision Detection)。它的速率为10 Mb/s,地址为48 bit。

在T C P / I P世界中,以太网I P数据报的封装是在RFC 894[Hornig 1984]中定义的,IEEE 802

网络的I P数据报封装是在RFC 1042[Postel and Reynolds 1988]中定义的。主机需求R F C要求每

台I n t e r n e t主机都与一个10 Mb/s的以太网电缆相连接:

1) 必须能发送和接收采用RFC 894(以太网)封装格式的分组。

2) 应该能接收与RFC 894混合的RFC 1042(IEEE 802)封装格式的分组。

3) 也许能够发送采用RFC 1042格式封装的分组。如果主机能同时发送两种类型的分组数

据,那么发送的分组必须是可以设置的,而且默认条件下必须是 RFC 894分组

最常使用的封装格式是 RFC 894定义的格式:

RFC 1024定义的格式:

8 0 2 . 3标准定义的帧和以太网的帧都有最小长度要求。 8 0 2 . 3规定数据部分必须至少为3 8字节,而对于以太网,则要求最少要有 4 6字节。为了保证这一点,必须在不足的空间插入填充(p a d)字节。在开始观察线路上的分组时将遇到这种最小长度的情况。

RFC 893[Leffler and Karels 1984]描述了另一种用于以太网的封装格式,称作尾部封装(trailer encapsulation)。这是一个早期B S D系统在DEC VA X机上运行时的试验格式,它通过调整I P数据报中字段的次序来提高性能。

三  SLIP串行线路IP  :

S L I P的全称是Serial Line IP。它是一种在串行线路上对I P数据报进行封装的简单形式,在RFC 1055[Romkey 1988]中有详细描述。S L I P适用于家庭中每台计算机几乎都有的 R S - 2 3 2串行端口和高速调制解调器接入I n t e r n e t。

下面的规则描述了S L I P协议定义的帧格式:

1) IP数据报以一个称作E N D(0 x c 0)的特殊字符结束。同时,为了防止数据报到来之前的线路噪声被当成数据报内容,大多数实现在数据报的开始处也传一个 E N D字符(如果有线路噪声,那么E N D字符将结束这份错误的报文。这样当前的报文得以正确地传输,而前一个错误报文交给上层后,会发现其内容毫无意义而被丢弃)。

2) 如果I P报文中某个字符为 E N D,那么就要连续传输两个字节 0 x d b和0 x d c来取代它。0 x d b这个特殊字符被称作S L I P的E S C字符,但是它的值与A S C I I码的E S C字符(0 x 1 b)不同。

3) 如果I P报文中某个字符为S L I P的E S C字符,那么就要连续传输两个字节 0 x d b和0 x d d来取代它。

压缩的SLIP:S L I P线路上有许多小的T C P分组交换。为了传送1个字节的数据需要2 0个字节的I P首部和2 0个字节的T C P首部,总数超过4 0个字节这就是SLIP性能上的缺陷,于是人们提出一个被称作 C S L I P(即压缩S L I P)的新协议,它在RFC 1144[Jacobson 1990a]中被详细描述。C S L I P一般能把上面的4 0个字节压缩到3或5个字节。它能在C S L I P的每一端维持多达1 6个T
C P连接,并且知道其中每个连接的首部中的某些字段一般不会发生变化。对于那些发生变化的字段,大多数只是一些小的数字和的改变。这些被压缩的首部大大地缩短了交互响应时间。

四 PPP:点对点协议(经常用于低速串行链路)

ppp协议包含以下三个方面:

1) 在串行链路上封装 I P数据报的方法。 P P P既支持数据为 8位和无奇偶检验的异步模式(如大多数计算机上都普遍存在的串行接口),还支持面向比特的同步链接。

1) 在串行链路上封装 I P数据报的方法。 P P P既支持数据为 8位和无奇偶检验的异步模式(如大多数计算机上都普遍存在的串行接口),还支持面向比特的同步链接。

3) 针对不同网络层协议的网络控制协议( N C P:Network Control Protocol)体系。当前R F C定义的网络层有I P、O S I网络层、D E C n e t以及A p p l e Ta l k。例如,IP NCP允许双方商定是否对报文首部进行压缩,类似于C S L I P(缩写词N C P也可用在T C P的前面)。

P P P数据帧的格式:

由于标志字符的值是 0 x 7 e,因此当该字符出现在信息字段中时, P P P需要对它进行转义。

在同步链路中ppp通过比特填充方式解决在伊布链路中通过特殊转义字符0x7d解决,当它出现在 P P P数据帧中时,那么紧接着的字符的第6个比特要取其补码,具体实现过程如下:

1) 当遇到字符0 x 7 e时,需连续传送两个字符:0 x 7 d和0 x 5 e,以实现标志字符的转义。

2) 当遇到转义字符0 x 7 d时,需连续传送两个字符:0 x 7 d和0 x 5 d,以实现转义字符的转义。

3 ) 默认情况下,如果字符的值小于 0 x 2 0(比如,一个A S C I I控制字符),一般都要进行转义。例如,遇到字符0 x 0 1时需连续传送0 x 7 d和0 x 2 1两个字符(这时,第6个比特取补码后变为,而前面两种情况均把它变为0)。

ppp的压缩:大多数的产品通过协商可以省略标志符和地址字段,并且把协议字段由 2个字节减少到1个字节。大多数的产品可以通过协商采用 Van Jacobson报文首部压缩方法(对应于C S L I P压缩),减小I P和T C P首部长度。

总的来说,P P P比S L I P具有下面这些优点:(1) PPP支持在单根串行线路上运行多种协议,

不只是I P协议;(2) 每一帧都有循环冗余检验; (3) 通信双方可以进行I P地址的动态协商(使用

I P网络控制协议);(4) 与C S L I P类似,对T C P和I P报文首部进行压缩; (5) 链路控制协议可以

对多个数据链路选项进行设置。为这些优点付出的代价是在每一帧的首部增加 3个字节,当建

立链路时要发送几帧协商数据,以及更为复杂的实现。

SLIP用户要比ppp用户多虽然优点比较多,但未来ppp用户会超过SLIP

五 环回接口

A类网络号1 2 7就是为环回接口预留的。根据惯例,大多数系统把I P地址1 2 7 . 0 . 0 . 1分配给这个接口,并命名为 l o c a l h o s t。一个传给环回接口的I P数据报不能在任何网络上出现。

环回接口处理I P数据报的简单过程:

大多数产品照样完成传输层和网络层的所有过程只是当ip数据报离开网络层时把它返回给自己

图中需要指出的关键点是:

1) 传给环回地址(一般是1 2 7 . 0 . 0 . 1)的任何数据均作为I P输入。

2) 传给广播地址或多播地址的数据报复制一份传给环回接口,然后送到以太网上。这是因为广播传送和多播传送的定义(第 1 2章)包含主机本身。

3 ) 任何传给该主机I P地址的数据均送到环回接口。

图中另一个隐含的意思是送给主机本身 I P地址的I P数据报一般不出现在相应的网

络上。例如,在一个以太网上,分组一般不被传出去然后读回来。

六 最大传输单元MTU

以太网要求数据帧格式长度不超过1500字节802.3协议要求1492字节链路层的这个特性称作M T U,最大传输单元

如果I P层有一个数据报要传,而且数据的长度比链路层的 M T U还大,那么I P层就需要进行分片( f r a g m e n t a t i o n),把数据报分成若干片,这样每一片都小于 M T U

常见的几种最大传输单元:

七 路径MTU

概念:不是两台主机所在网络的 M T U的值,而是两台通信主机路径中的最小 M T U

两台主机之间的路径 M T U不一定是个常数。它取决于当时所选择的路由。而选路不一定是对称的(从A到B的路由可能与从B到A的路由不同),因此路径M T U在两个方向上不一定是一致的。

八 串行线路吞吐量的计算

如果线路速率是9600 b/s,而一个字节有8 bit,加上一个起始比特和一个停止比特,那么线路的速率就是960 B/s(字节/秒)。以这个速率传输一个1 0 2 4字节的分组需要1066 ms。如果用S L I P链接运行一个交互式应用程序,同时还运行另一个应用程序如 F T P发送或接收1 0 2 4字节的数据,那么一般来说就必须等待一半的时间( 533 ms)才能把交互式应用程序的分组数据发送出去。假定交互分组数据可以在其他“大块”分组数据发送之前被发送出去。大多数的
S L I P实现确实提供这类服务排队方法,把交互数据放在大块的数据前面。交互通信一般有Te l n e t、R l o g i n以及F T P的控制部分(用户的命令,而不是数据)。

把S L I P的M T U缩短到2 5 6就意味着链路传输一帧最长需要 266 ms,它的一半是 133 ms这是一般需要等待的时间)。这样情况会好一些,但仍然不完美。我们选择它的原因(与 6 4或1 2 8相比)是因为大块数据提供良好的线路利用率(如大文件传输)。假设C S L I P的报文首部是5个字节,数据帧总长为 2 6 1个字节,2 5 6个字节的数据使线路的利用率为 9 8 . 1 %,帧头占了1 . 9 %,这样的利用率是很不错的。如果把
M T U降到2 5 6下,那么将降低传输大块数据的最大吞吐量。

我们对平均等待时间的计算(传输最大数据帧所需时间的一半)只适用于 S L I P链路(或P P P链路)在交互通信和大块数据传输这两种情况下。当只有交互通信时,如果线路速率是9600 b/s,那么任何方向上的 1字节数据(假设有 5个字节的压缩帧头)往返一次都大约需要12.5 ms。它比前面提到的100~200 ms要小得多。需要注意的是,由于帧头从 4 0个字节压缩到5个字节,使得1字节数据往返时间从85 ms减到12.5 ms。

数据进入协议栈的分装过程:

时间: 2024-08-04 12:13:18

TCP/IP详解之链路层的相关文章

《TCP/IP详解卷1:协议》第2章 链路层-读书笔记

章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 1.引言 从图1-4可以看出,在TCP/IP协议族中,链路层主要有三个目的: (1)为IP模块发送和接收IP数据报: (2)为ARP模块发送ARP请求和接收ARP应答. (3)为RARP发送RARP请求和接收RARP应答. TCP/IP支持多种不同的链路层协议,这取决于网络所使用的硬件,如以太网.令牌环网.FDDI(光纤分布式数据接口)及RS-232串行线路等. 2.以太网和IEEE 802封装 (1)以太网 以太网一般是指数字

《TCP/IP详解卷2:实现》笔记--接口层

提示:该实验所在的平台是在RedHat 6下 该实验成功的前提有三个: (1):windows能ping通linux系统 (2):关闭linux的防火墙 :执行指令 /etc/init.d/iptables  stop (3):让SeLinux关闭  :执行指令:  setenforce permissive 补充: SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现,是 Linux历史上最杰出的新安全子系统.SELinux 是一个

《TCP/IP详解卷2:实现》笔记--接口层:以太网和环回

1.以太网接口 Net/3以太网设备驱动程序都遵循同样的设计.对于大多数Unix设备驱动程序来说,都是这样,因为写一个新接口卡的驱动 程序总是在一个已有的驱动程序的基础上修改而来的.下面我们简要地概述一下以太网的标准和一个以太网驱动程序的设 计.下图是一个IP分组的以太网封装. 我们所讨论的最初的以太网组帧的标准在1982年由Digital设备公司,intel公司以及施乐公司发布,并作为今天在TCP/IP网络 中最常使用的格式,另一个可选的格式是IEEE规定的802.2和802.3标准. 下图列

《TCP/IP详解》

[TCP的那些事儿]TCP是个巨复杂的协议,而且不断地改进中.所以学习TCP本身是个比较痛苦的过程,但这个过程却能让人有很多收获.希望这篇快餐科普性文章能在快餐文化下让你对TCP有了解,并可以促发你对基础知识的兴趣和学习欲望. http://coolshell.cn/articles/11564.html http://coolshell.cn/articles/11609.html 大家知道,TCP/IP已成为计算机网络的事实上的标准.在关于TCP/IP的论著中,最有影响的就是两部著作.一部是

《TCP/IP详解卷1:协议》第17、18章 TCP:传输控制协议(2)-读书笔记

章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP:网际协议(1)-读书笔记 <TCP/IP详解卷1:协议>第3章 IP:网际协议(2)-读书笔记 <TCP/IP详解卷1:协议>第4章 ARP:地址解析协议-读书笔记 <TCP/IP详解卷1:协议>第5章 RARP:逆地址解析协议-读书笔记 <TCP/IP详解卷1:协

《TCP/IP详解卷1:协议》第5章 RARP:逆地址解析协议-读书笔记

章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP:网际协议(1)-读书笔记 <TCP/IP详解卷1:协议>第3章 IP:网际协议(2)-读书笔记 <TCP/IP详解卷1:协议>第4章 ARP:地址解析协议-读书笔记 <TCP/IP详解卷1:协议>第5章 RARP:逆地址解析协议-读书笔记 1.引言 具有本地磁盘的系统引导

《TCP/IP详解卷1:协议》第3章 IP:网际协议(1)-读书笔记

章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 1.引言 IP是TCP/IP协议族中最核心的协议.所有的TCP.UDP.ICMP及IGMP数据都以IP数据报格式传输.IP提供不可靠.无连接的数据报传送服务. (1)不可靠 它不能保证IP数据报能成功地到达目的地.IP仅提供最好的传输服务.如果发生某种错误,如某个路由器暂时用完了缓冲区,IP有一个简单的错误处理算法:丢弃该数据报,然后发送ICMP消息报给信源端.

《TCP/IP详解卷2:实现》笔记--IP编址

1.接口和地址 在本文中讨论的所有接口和地址结构的一个例子配置如下图所示: 上图中显示了我们三个接口例子:以太网接口,SLIP接口和环回接口.它们都有一个链路层地址作为地址列表中的第一个结点. 显示的以太网接口有两个IP地址,SLIP接口有一个IP地址,并且环回接口有一个IP地址和一个OSI地址. 所有的IP地址都被链接到in_ifaddr列表中,并且所有链路层地址能从ifnet_addrs数组访问. 后面的部分讨论上图的数据结构以及用来查看和修改这些结构的IP专用ioctl命令. 2.sock

【转】TCP/IP详解学习笔记(二)

TCP/IP详解学习笔记(5)-IP选路,动态选路,和一些细节 1.静态IP选路 1.1.一个简单的路由表 选路是IP层最重要的一个功能之一.前面的部分已经简单的讲过路由器是通过何种规则来根据IP数据包的IP地址来选择路由.这里就不重复了.首先来看看一个简单的系统路由表. Destination     Gateway         Genmask         Flags Metric Ref    Use Iface192.168.11.0    *               255.