TCP/IP详解卷一 第二章数据链路层 以及个人网上摘抄

来源:互联网 发布:飞利信东方国信大数据 编辑:程序博客网 时间:2024/05/29 04:50

1  

链路层主要有三个目的:(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应答。

T C P / I P支持多种不同的链路层协议,这取决于网络所使用的硬件,如以太网、令牌环网、F D D I(光纤分布式数据接口)及R S-2 3 2串行线路等。

2

以太网这个术语一般是指数字设备公司( Digital Equipment Corp.)、英特尔公司( I n t e lC o r p .)和X e r o x公司在1 9 8 2年联合公布的一个标准。它是当今T C P / I P采用的主要的局域网技术。它采用一种称作C S M A / C D的媒体接入方法,其意思是带冲突检测的载波侦听多路接入(Carrier Sense, Multiple Access with Collision Detection)。它的速率为10 Mb/s,地址为48 bit。

CSMA/CD 是带载波侦听的冲突检测技术,只工作在“半双工”的情况下,因为只有这种情况下,同一时刻只能允许单方向的传输,好比是单车道,这样就有可能产生冲突。而全双工,好比是双车道,也就不会有冲突了。这在CCNA考试中有,可以去看下视频。

共享式以太网:共享式以太网的典型代表是使用10base2/10base5的总线型以太网和使用双绞线并用集线器连接的星型以太网,而后者,物理结构上是星型拓扑,而在逻辑上网内的主机依然是在同一条总线上。
这种总线形结构的特点决定了整个网络都处于同一个冲突域,若有两台主机要同时发送数据,则必然会产生冲突。为解决冲突,引入了CSMA/CD协议,而CSMA/CD协议要求网卡在发送数据之前必须侦听,因此这种总线结构也同样决定了网内主机的网卡以半双工模式工作。

交换式以太网:现代的以太网都是交换式的了,它以二层交换机为核心(取代了集线器的位置),交换机的每个端口都是一个独立的冲突域,假如这个端口连接唯一的一台主机,那么用于解决共享式以太网冲突的CSMA/CD协议就没有用武之地了,既然没有了碰撞,那么发送和接收数据就不需要共用一条“总线”了,可以用两条线路分别用于发送和接收,即全双工模式。当然,如果手动设定网卡以半双工模式工作,或者是网卡不支持全双工模式,或者这个端口连接的是一个集线器,那么这个端口必须工作在半双工模式。

事实上,在802.3标准中有这样的规定,即在全双工模式下,不使用(实现)在传统共享式局域网中用于仲裁的CSMA/CD协议。


几年后, I E E E(电子电气工程师协会) 8 0 2委员会公布了一个稍有不同的标准集,其中8 0 2 . 3针对整个C S M A / C D网络,8 0 2 . 4针对令牌总线网络, 8 0 2 . 5针对令牌环网络。这三者的共同特性由8 0 2 . 2标准来定义,那就是8 0 2网络共有的逻辑链路控制( L L C)。不幸的是,8 0 2 . 2和8 0 2 . 3定义了一个与以太网不同的帧格式。文献[Stallings 1987]对所有的IEEE 802标准进行了详细的介绍。


3                       2.2 以太网和IEEE 802封装    这一小节没弄明白


4

SLIP:串行线路IP   全称是Serial Line IP。它是一种在串行线路上对I P数据报进行封装的简单形式。是在串行通信线路上支持TCP/IP协议的一种点对点(Point-to-Point)式的链路层通信协议

S L I P适用于家庭中每台计算机几乎都有的R S - 2 3 2串行端口和高速调制解调器接入I n t e r n e t。

个人用户可利用SLIP协议拨号上网,行业用户则可通过租用SLIP专线远程传输业务数据。
 它实现透明传输的方式和PPP协议类似  都是使用转义字符       但是使用的字符和PPP协议是不相同的



S L I P是一种简单的帧封装方法,还有一些值得一提的缺陷:
1) 每一端必须知道对方的I P地址。没有办法把本端的I P地址通知给另一端。
2) 数据帧中没有类型字段(类似于以太网中的类型字段)。如果一条串行线路用于S L I P,那么它不能同时使用其他协议。
3 ) S L I P没有在数据帧中加上检验和(类似于以太网中的C R C字段)。

SLIP不支持在连接过程中的动态IP地址分配,通信双方必须事先告诉对方IP地址,这给没有固定IP地址的个人用户上Internet网带来了很大的不便; 

如果S L I P传输的报文被线路噪声影响而发生错误,只能通过上层协议来发现(另一种方法是,新型的调制解调器可以检测并纠正错误报文)。这样,上层协议提供某种形式的C R C就显得很重要。在第3章和第1 7章中,我们将看到I P首部和T C P首部及其数据始终都有检验和。在第11章中,将看到U D P首部及其数据的检验和却是可选的。
尽管存在这些缺点, S L I P仍然是一种广泛使用的协议。
S L I P的历史要追溯到1 9 8 4年,Rick Adams第一次在4 . 2 B S D系统中实现。尽管它本身的描述是一种非标准的协议,但是随着调制解调器的速率和可靠性的提高, S L I P越来越流行。现在,它的许多产品可以公开获得,而且很多厂家都支持这种协议

既然承认这些性能上的缺陷,于是人们提出一个被称作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连接,并且知道其中每个连接的首部中的某些字段一般不会发生变化。对于那些发生变化的字段,大多数只是一些小的数字和的改变。这些被压缩的首部大大地缩短了交互响应时间。现在大多数的S L I P产品都支持C S L I P。


5

数据链路层的最基本的功能是向该层用户提供透明的和可靠的数据传送基本服务。

基本功能
▪ 帧同步
▪ 差错控制
▪ 流量控制
▪ 链路管理


透明性是指该层上传输的数据的内容、格式及编码没有限制,也没有必要解释信息结构的意义;可靠的数据链路层传输使用户免去对丢失信息、干扰信息及顺序不正确等的担心。在物理层中这些情况都可能发生,在数据链路层中必须用纠错码来检错与纠错。数据链路层是对物理层传输原始比特流的功能的加强,将物理层提供的可能出错的物理连接改造成为逻辑上无差错的数据链路,使之对网络层表现为一无差错的线路。如果您想用尽量少的词来记住数据链路层,那就是:“帧和介质访问控制”。


封装成帧的理由: 不以帧为单位传输  则无法加入冗余码以进行差错检验(使用CRC循环冗余差错检验)

帧的组织结构必须设计成使接收方能够 明确地从物理层收到的比特流中对其进行识别,也即能从比特流中区分出帧的起始与终止,这就是帧同步的定义和要解决的问题。

帧同步方法: 字节填充 零比特填充

6


异步传输(Asynchronous Transmission): 异步传输将比特分成小组进行传送,
小组可以是8位的1个字符或更长。发送方可以在任何时刻发送这些比特组,而接收方从不知道它们会在什么时候到达。
一个常见的例子是计算机键盘与主机的通信。按下一个字母键、数字键或特殊字符键,就发送一个8比特位的ASCII代码。
键盘可以在任何时刻发送代码,这取决于用户的输入速度,内部的硬件必须能够在任何时刻接收一个键入的字符。

异步传输一般以字符为单位

 异步通信”是一种很常用的通信方式。异步通信在发送字符时,所发送的字符之间的时间间隔可以是任意的。当然,接收端必须时刻做好接收的准备(如果接收端主机的电源都没有加上,那么发送端发送字符就没有意义,因为接收端根本无法接收)。发送端可以在任意时刻开始发送字符,因此必须在每一个字符的开始和结束的地方加上标志,即加上开始位和停止位,以便使接收端能够正确地将每一个字符接收下来。异步通信的好处是通信设备简单、便宜,但传输效率较低(因为开始位和停止位的开销所占比例较大)。异步通信也可以是以帧作为发送的单位 即不必\每个字符都加上开始结束标志在一帧中的所有比特是连续发送的。发送端不需要在发送一帧之前和接收端进行协调(不需要先进行比特同步)。   接收端必须随时做好接收帧的准备。这时,帧的首部必须设有一些特殊的比特组合,使得接收端能够找出一帧的开始。这也称为帧定界。


同步传输是一种以数据块为传输单位的数据传输方式,该方式下数据块与数据块之间的时间间隔是固定的,
必须严格地规定它们的时间关系。每个数据块的头部和尾部都要附加一个特殊的字符或比特序列,标记一个数据块的开始和结束,
一般还要附加一个校验序列,以便对数据块进行差错控制。

同步传输通常要比异步传输快速得多。接收方不必对每个字符进行开始和停止的操作。一旦检测到帧同步字符,它就在接下来的数据到达时接收它们。另外,同步传输的开销也比较少


PPP协议通常是使用异步传输  为了实现透明传输其使用字节填充即使用转义字符   它是以帧为单位的  不必每个字符加起始和结束 而是通过帧定界符号来起始和结束

PPP协议用在SONET/SDH链路时使用同步传输  透明传输使用零比特填充的方法 即出现5个连续的1则填入1个0

7

P P P包括以下三个部分:
1) 在串行链路上封装I P数据报的方法。PPP既支持数据为8位和无奇偶检验的异步模式(如大多数计算机上都普遍存在的串行接口)还支持面向比特的同步链接。
2) 建立、配置及测试数据链路的链路控制协议(LCPLink Control Protocol)它允许通信双方进行协商,以确定不同的选项。
3) 针对不同网络层协议的网络控制协议(NCP:Network Control Protocol)体系。当前RFC定义的网络层有IP、OSI网络层DECnet以及AppleTalk。例如,IP NCP允许双方商定是否对报文首部进行压缩,类似于CSLIP(缩写词NCP也可用在TCP的早期版本但和此处的无关)。


PPP比SLIP具有下面这些优点:(1) PPP支持在单根串行线路上运行多种协议,不只是IP协议;
(2) 每一帧都有循环冗余检验;
(3) 通信双方可以进行IP地址的动态协商(使用IP网络控制协议);
(4) 与CSLIP类似,对TCP和IP报文首部进行压缩;
(5) 链路控制协议可以对多个数据链路选项进行设置。
为这些优点付出的代价是在每一帧的首部增加3个字节(与SLIP相比),当建立链路时要发送几帧协商数据,以及更为复杂的实现。
尽管PPP比SLIP有更多的优点,但是现在的SLIP用户仍然比PPP用户多。随着产品越来越多产家也开始逐渐支持PPP,因此最终PPP应该取代SLIP。


 为了建立点对点链路通信,PPP 链路的每一端,必须首先发送 LCP 包以便设定和测试数据链路。在链路建立,LCP 所需的可选功能被选定之后,PPP 必须发送 NCP 包以便选择和设定一个或更多的网络层协议。一旦每个被选择的网络层协议都被设定好了,来自每个网络层协议的数据报就能在链路上发送了。链路将保持通信设定不变,直到有 LCP 和 NCP 数据包关闭链路,或者是发生一些外部事件的时候。

8

环回接口

大多数的产品都支持环回接口(Loopback Interface),以允许运行在同一台主机上的客户程序和服务器程序通过TCP/IP进行通信。A类网络号127就是为环回接口预留的。

根据惯例,大 多数系统把IP地址127.0.0.1分配给这个接口,并命名为localhost。一个传给环回接口的IP数据报不能在任何网络上出现。
    我们想象,一旦传输层检测到目的端地址是环回地址时,应该可以省略部分传输层和所有网络层的逻辑操作。但是大多数的产品还是照样完成传输层和网络 层的所有过程只是当IP数据报离开网络层时把它返回给自己。
    图是环回接口处理IP数据报的简单过程。


图中需要指出的关键点是:
    1) 传给环回地址(一般是127.0.0.1)的任何数据均作为I P输入。
    2) 传给广播地址或多播地址的数据报复制一份传给环回接口,然后送到以太网上。这是因为广播传送和多播传送的定义(第12章)包含主机本身。
    3 ) 任何传给该主机IP地址的数据均送到环回接口。
    看上去用传输层和IP层的方法来处理环回数据似乎效率不高,但它简化了设计,因为环回接口可以被看作是网络层下面的另一个链路层。网络层把一份数 据报传送给环回接口,就像传给其他链路层一样,只不过环回接口把它返回到IP的输入队列中。
    在图2 - 4中,另一个隐含的意思是送给主机本身IP地址的IP数据报一般不出现在相应的网络上。例如,在一个以太网上,分组一般不被传出去然后读回来。某些BSD 以太网的设备驱动程序的注释说明,许多以太网接口卡不能读回它们自己发送出去的数据。由于一台主机必须处理发送给自己的IP数据报,因此图2 - 4所示的过程是最为简单的处理办法。
    4.4BSD系统定义了变量useloopback,并初始化为1。但是,如果这个变量置为0,以太网驱动程序就会把本地分组送到网络,而不是送 到环回接口上。它也许不能工作,这取决于所使用的以太网接口卡和设备驱动程序。



9

最大传输单元MTU

路径MTU
当在同一个网络上的两台主机互相进行通信时,该网络的MTU是非常重要的。但是如果两台主机之间的通信要通过多个网络 那么每个网络的链路层就可能有不同的MTU。

重要的不是两台主机所在网络的MTU的值,重要的是两台通信主机路径中的最小MTU。它被称作路径MTU。
两台主机之间的路径MTU不一定是个常数。它取决于当时所选择的路由。而选路不一定是对称的(从A到B的路由可能与从B到A的路由不同),

因此路径MTU在两个方向上不一定是一致的。

路径MTU(PMTU),一种动态发现因特网上任意一条路径的最大传输单元(MTU)的技术

10

在wan中,点对点链路(point to point link)提供了从客户端通过某个电信运营商网络。点对点链路也称为租用线路,因为它所建立的路径对于每条通过电信运营商设施连接的远程网络都是永久而且固定的。
点对点链路不使用arp协议,因为在设置这些链路时已经告知了内核,链路两端的ip地址,所以说不需要arp协议来实现ip地址和不同网络技术硬件地址的动态映射。


11  关于CSMA/CD

一. 在全双工工作模式下的以太网使用CSMA/CD检测机制来避免冲突吗?
    在这一工作模式下的以太网是不需要使用CSMA/CD冲突检测机制的。我们知道,全双工工作模式下可以完成同时接收和发送数据。我们想想,网卡可能会在同一时刻发送两个数据包吗?这是不可能的。绝对不可能会出现在同一时刻网卡接收到两个或两个以上同时需要发送数据的请求,就连CPU也不可能同时做到在同一时刻处理两个或两个以上指令呀。这个时候,如果我们假设网卡启用CSMA/CD机制来检测冲突,请问他检测哪一条冲突通道呢?我们可要知道,网卡在接收到需要发送的数据包后,就像排队一样一个一个往外发送,怎么可能会冲突呢?
    这个时候有人可能要问了,那接收呢?它可能会和接收的冲突呀?其实这么想就错了。全双工工作模式下,我们将使用双绞线中的2对线进行工作。一对用于发送,一对用于接收。那么既然发送和接收是分开的2条链路,就不存在冲突的问题了。就像在高速公路上,有一个车道是由东往西行驶车道,一个车道是由西往东行驶车道。那么,你说两车对开,各行驶于各自的车道,有可能会冲撞吗?所以,全双工工作模式下是不需要使用CSMA/CD冲突检测机制的。
    二. 在半双工工作模式下的以太网使用CSMA/CD检测机制来避免冲突吗?
    我想这个问题只要是网管或者是CCNA的工程师们都应该知道,在这一工作模式下的以太网是需要使用CSMA/CD冲突检测机制的。我们知道,半双工模式下虽然可以实现在同一链路上进行发送和接收,但不是在同一时间。这就必须使用CSMA/CD冲突检测机制来避免冲突的发生。半双工工作模式的典型接入设备就是集线器。至于为什么,请大家认真复习一下CCNA中的这一节内容。这里就不做详细的讨论了。
    三. 我们都说交换机中有智能设备,如CPU和缓存。为什么工作在半双工模式下的交换机,还会使用CSMA/CD呢?
    这个问题问得特别好。其实大家想一想就知道了。我们先明白一点:交换机确实有CPU和缓存来调节数据包的输出和接收,是不会发生冲突的。交换机只关心它的背板速率,关心的是整个带宽。所以,在交换机内的数据包是绝对不会发生冲突的情况。只会发生是否出现网络拥塞。这是和冲突没有任何关联的。
    理解了这一点,我们再理解下一个问题:CSMA/CD侦听包是有谁发出,什么时候才会发出呢?我们回忆一下CCNA的教程,其实,CSMA/CD侦听包是由网卡发出的,并不是有交换机或者集线器发出的侦听包。而且,网卡在发送数据前,才会发送CSMA/CD侦听包侦听网络是否畅通。
    理解了这两点,我们就好解释了。对于CSMA/CD冲突检测机制而言,交换机和集线器的侦听对象是不完全相同的。在集线器中,每一个端口都同在一个冲突域中,CSMA/CD检测的整个同处一个冲突域每一个端口的每一种状态。它既侦听网络中正在发送的数据包,也真听网络中正在接收的数据包。因为,它只有1条通道。就像总线一样,所有数据都在同一个通道内跑。CSMA/CD必须侦听到没人使用,它才发送数据包。而交换机则不太相同。虽然每一个端口都是一个独立的冲突域,端口之间并不相互冲突。可如果实在半双工工作模式下,一个端口中的接收和发送就产生冲突了。这个时候,CSMA/CD冲突检测机制将侦听在这个端口上是否有数据正在被接收而占用。所以,交换机在半双工工作模式下工作,网卡同样会启用CSMA/CD冲突检测机制来避免冲突的发生。

http://hi.baidu.com/taochen/item/82ae90f21943a30a84d278f8



12  MAC帧会超时重传      

交换机转发MAC帧时 MAC发送和目的地址不变  注意交换机先存储到缓存后再处理

路由器转发MAX帧时 MAC发送和目的地址会发生变化




 










by hnust_xiehonghao



0 0