有关数据链路层的学习,看了谢希仁的计算机网络,感觉就是很杂,脑子里面没有头绪,所以总结一下。
数据链路层主要两种协议,一种是点对点的PPP协议,另外一种是一对多的CSMA/CD协议。
点对点的PPP协议前面已经总结过了,今天抽时间再总结一下CSMA/CD协议:
需要注意的是:在局域网中,由于集线器的出现,星型网在局域网中得到了广泛的应用。
在网络刚开始的时候,主要使用的是总线型网络结构,因此,CSMA/CD协议是在总线型网络的基础上发展起来的,但是随着技术的发展和集线器的出现,在现在的大多数局域网中已经不再进行CSMA/CD协议了。
CSMA/CD协议:
这个协议所要解决的核心问题就是多点接入时,只能有一个主机占用总线,所以协议的实质就是“载波监听”和“碰撞检测”
我们先来解释一下,什么叫“载波监听”和“碰撞检测”???
载波监听:就是在多点接入时,由于网络时总线型的,所以同一时刻只能有一台主机发送,其他主机只能接受,其他主机想要发送数据,只能等到该主机发送完毕后才能进行。所以我们需要监听总线,是不是能够发送数据,这称之为:“载波监听”。
碰撞检测:就是在同时又两台主机在总线发送数据时,我们需要知道总线上的数据发生了冲突,这种行为称之为“碰撞检测”;
有些同学就会问,既然我们不允许同时发,那么为什么还会发生碰撞呢???
这是因为当总线闲下来之后,可能会被几台主机同时检测到,那么此时就会发生碰撞,这时,我们要能够检测到总线数据发生了数据碰撞,发生数据碰撞的主机都要停止发送数据,那么我们怎么样来确定数据发送没有发生碰撞呢,那就是等待,假设数据从主机A发送到B的所用的时间为T,我们可以发现,当等待时间大于2T时还没有检测到数据碰撞,那么此次数据发送没有发生碰撞。这段时间称为争用期。
协议中规定,争用期为51.2us,这个时间是怎么来的呢???
协议规定,每一帧发送数据的最短字节为64,也就是512bit,假设是10Mbps,那么时间就是51.2us,当然,如果速率提高的话,时间也就相应变短。
停止之后,我们使用截断二进制指数退避算法来确定重新传的数据,也就是等待一段时间,这段时间是争用期时间的整数倍,具体是多少倍是随机的,还和已经重新传数据的次数有关,比如已经传了5次,那么这次的整数是0-5中随机的一个整数,如果是6次,就是0-6的随机整数。
如此,这就是CSMA/CD协议。
这就是我对CSMA/CD协议的理解,欢迎大家批评指正