码迷,mamicode.com
首页 > 其他好文 > 详细

第4章 数据链路层(1)_三个基本问题

时间:2017-06-04 00:52:16      阅读:302      评论:0      收藏:0      [点我收藏+]

标签:ges   数字信号   blog   可靠   image   长度   str   之间   http   

1. 数据链路层的三个基本问题

1.1 数据链路和帧

(1)链路(Link):指从一个节点到相邻节点的一段物理线路(有线或无线),而中间没有任何其他交换节点

技术分享 

  ①注意:集线器不是交换节点,因此计算机A和路由器1之间是一条链路。

  ②交换机是一个交换节点,因此,计算机B和路由器3之间的链路有链路4和链路5两条

(2)数据链路(Data Link):物理线路+通信协议。数据链路层的协议数据单元被称为帧

技术分享 

  ①数据链路层把网络层交下来的数据(被称为IP数据报、数据报、分组或包)添加首部和尾部封装成帧发送到链路上,以及把接收到的帧中的数据取出来并上交给网络层。

  ②数据链路层封装的帧,在物理层变成数字信号在链路上传输。如果不考虑物理层的传输细节,就可以认为数据帧通过数据链路由从节点A发送到节点B(如上图虚线所示

1.2 3个基本问题

(1)封装成帧

技术分享 

  ①数据链路层将IP的数据报的前后分别添加首部和尾部,构成一个帧。但因该层的协议很多,不同协议的帧的首部和尾部信息所有不同。

  ②帧的首部和尾部有帧开始符和结束符,被称为帧定界符

  ③每一种数据链路层协议都规定了所能传送帧的数据部分的长度上限——最大传输单元(MTU),以太网的MTU为1500个字节。注意,MTU指的是数据部分长度

(2)透明传输

  ①帧定界符:可以选用ASCII码表中的SOH(0x01)作为帧开始定界符,EOT(0x04)为帧结束定界符。

  ②如果数据部分出现“EOT”或“SOH”时要进行字节填充。(具体方法发送端的数据链路层在数据中出现控制字符“EOT”、“SOH”以及“ESC”,则在前面插入一个转义字符“ESC”的编码。接收端的数据链路层在收到删除这个插入的转义字符。这样用字节填充法解决透明传输的问题)。

技术分享 

(3)差错检测

  ①现实的通信链路都不会是理想的,在传输过程中可能会产生差错。为了保证数据传输的可靠性,必须采用各种差错检验技术(如循环冗余检验,CRC)。

  ②要让接收端能够判断帧在传输过程中是否有差,需要在帧中包含用于检测错误的信息,这部分信息称为“帧校验序列(FCS)

技术分享 

  ③以CRC技术为例计算FCS。假设要检测的数据为M=101001(注意,不仅包含帧的数据部分,还包含了数据链路层的首部),要想得到n位FCS。则计算过程如下:

    A.要得到n位的FCS,则必须先在M后面添加n位(这里假设n为3)的0得到被除数101001 000。再除以收发双方事先商定好的n+1位除数P(设为1101),得到商Q,余数R(n位,比除数少一位),这个R(001)就是要计算的FCS

技术分享 

    B.接收方收到后,会使用M和FCS合成一个二进制数(即101001001),再除以P(1101),如果余数为0,表示该帧没有差错否则表示传输有差错就会丢弃从而出现丢包现象(这个得由传输层的TCP协议通过丢包重传来实现可靠传输)

  ④帧检验序列FCS包含了帧的数据部分(来自网络层)和数据链路层的首部。这意味着,如果通信经过多条链路时,IP数据报的源和目标地址会被修改或者经过路由器时网络层首部的TTL(生存时间减1),这些会造成IP数据报的变化。而当通信由一条链路到下一条链路时由于协议不同,会造成数据链路层首部格式不同,帧开始和结束符也不同,这都需要将帧进行重新封装,重新计算FCS。幸运的是,这些都是由硬件完成的,处理速度很快,不会延误数据的传输。

第4章 数据链路层(1)_三个基本问题

标签:ges   数字信号   blog   可靠   image   长度   str   之间   http   

原文地址:http://www.cnblogs.com/5iedu/p/6938989.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!