数据链路层

本文来自《计算机网络》的笔记:

1.数据链路层所使用的信道主要分为两种:点对点信道、广播信道

2.路由器在分组转发时使用的协议栈只有下面三层:物理层,链路层,网络层

3.链路和数据链路的区别

链路指的是一个结点到相邻结点之间的物理线路

数据链路指的是数据在物理线路上传输时需要传输协议进行控制。

4.数据链路层传输的数据的基本单位是帧

5.数据链路层存在的主要问题有,帧的封装、透明传输、差错检验

(a)帧的封装:就是在数据部分的头部和尾部加入控制字符(也就是帧的定界符),而在头部和尾部之间的数据就是从上层传下来的也就是IP数据包,当然在数据链路层有很多种协议

每种协议都对数据部分做了规定,即数据部分的长度上线----最大传送单元MTU(Maximum Transfer Unit),此外头部用SOH(Start Of Header),尾部用EOT(End Of Transmission)表示

(b)透明传输:为了保证数据部分中的数据不能和帧的头部或尾部重复,导致错误,所以才有字符填充法,也就是在数据部分和头部或尾部相同的数据之前加入转义字符ESC。

具体方法就是在发送端的数据链路层中数据出现控制字符的前面出入转义字符,而在接收端的数据链路层在将数据送往网络层时,删除插入的转义字符

(c)差错控制:数据在传输过程中会出现差错,如1可能变成0.这就叫做比特差错。

        误码率:就是再一段时间内,传输错误的比特占传输的总比特的比率

对产生的差错的控制手段:循环冗余检验CRC(Cyclic Redundancy Check)。针对带传送的数据M=101001(k=6)。CRC就是在数据M的后面添加供差错检验用的n位冗余码,然后构成一个完整的帧发送出去。其中n位冗余码的得出过程:首先在M后面加上n位0,然后设定除数P(比冗余码多一位),所得余数就是冗余码也就是FCS。最终将在数据M后面加上FCS就可以发送了。在接收端收到的数据以帧为单位进行CRC检验,把收到的每一帧都除以相同的除数P,然后检查得到的余数,如果余数为零,则传输正确。如果不为零,则判断该帧有错。

注意:1)目前在数据链路层并没有要求要想网络层提供可靠地传输。所谓的可靠传输就是数据链路层发送端发送什么,接收端就要接收到什么。而传输差错可分为两大类:第一,就是之前所提的比特差错;第二,就是就受到的帧没有错误,但会出现帧丢失、帧重复、帧失序。

        2)以前的版本中在数据链路层提供了可靠传输,也就是在CRC基础之上增加了帧编号,确认,重传机制。由于通信线路的质量大大提高,因通信链路质量不好引起的差错大大降低,目前的互联网不要求数据链路层使用确认和重传机制,即不要求数据链路层向上层提高可靠地传输服务。假如在在数据链路层传输数据时出现了差错并且需要及时修改的话,那么就交由上层协议处理。实践证明,可以提高通信效率。

ppp协议:点对点协议:就是上文提到的点对点信道传输

广播信道传输的数据链路层:

1.广播信道可以进行一对多的通信,下面就是局域网所使用的广播信道。IEEE802委员会就把局域网的数据链路层拆分成两个子层,即逻辑链路层LLC和媒体接入层MAC。和接入到的传输媒体有关的内容都放到了MAC层。目前,大多数厂商已经忽略了LLC协议,仅在适配器上装有MAC协议

2.适配器的作用:适配器就是计算机与外部局域网的链接器,也叫网卡。适配器和计算机之间的通信是通过计算机主板上的I/O总线以并行传输方式进行的。

                      适配器的重要的功能就是进行数据串行传输和并行传输的转换。

                      适配器在接收和发送发送各种帧时,不使用计算机的cpu。当适配器接收到的帧有错误,就把该帧抛弃不必通知计算机,当接收到正确的帧,适配器就使用中断来通知该计算机并交由协议栈中的网络层。当计算机要发送IP数据报时,就由协议栈把IP数据报向下交给适配器,组装成帧后发送到局域网。

3.CSMA/CD:载波监听多点接入/碰撞检测

多点接入:总线型网络

载波监听:每一个站点在发送数据前都要检测下总线上是否有其他的站点在发送数据,如果有,则暂时不要发送数据,直到信道空闲时才能发送数据

碰撞检测:适配器在边发送数据时边检测信道上的电压变化情况,以便判断自己在发送数据时其他站是否也在发送数据。信号发生碰撞时,信号电压超过一定的阈值时,就表明该线路发生碰撞。

posted @ 2017-03-20 22:13  Aladar  阅读(1223)  评论(0编辑  收藏  举报