计算机网络之数据链路层
当需要在一条线路上传递数据时,除了必须有一条物理线路外,还需要一些必要的通信协议来控制这些数据的传输,若把这些协议的硬件和软件加到链路上就构成了数据链路。
同样地,本文只是总结,只包含重要的知识点,具体的知识请仔细研究谢希仁老师的《计算机网络》一书。
-
帧:协议数据单元
数据链路层将网络层交下来的数据构成帧发送到链路上,以及把接收到的帧中的数据取出并上交网络层。
-
三个基本问题
封装成帧、透明传输和差错检测
-
封装成帧
为了标志开始(SOH)和结束(EOT),在数据的前后分别加上首部和尾部,这样就构成了一个帧。
-
透明传输
因为开始和结束标志是控制字符,可能在数据正文中出现且有实际的意义,因此在封装过程中需要跳过这些特殊的字符,否则会导致封装时过早结束封装而遗漏信息。一般都会在控制字符前面加上转移字符。
-
差错检测
在传输过程中可能会出现差错,因此需要在发送时提供差错标志,在接收的时候通过验证差错标志来检测正确性, 广泛使用的检错技术是循环冗余检验。
-
循环冗余检验(CRC)
发送方:在k位的数据M后添加n个0,则拼接后的k+n位数据M1除以双方约定的n+1位除数P,得到n位余数R,将余数R拼接到M上,发送k+n位最终数据M2。
接收方:将收到的M2除以约定的除数P,如果无差错则最终结果位0,否则意味着出现了差错。
-
-
-
链路层点对点协议-PPP
既支持异步链路,也支持同步链路的点对点协议是目前使用最广泛的数据链路层协议,比较重要的是其透明性规定,PPP开始和结束标志都是0x7E(01111110)。
-
异步传输时,使用字节填充,转义字符定义位0x7D:
- 将信息字段中的每个0x7E转变为(0x7D,0x5E)
- 将信息字段中的每一个0x7D转变为(0x7D,0x5D)
- 将信息字段中的每一个ASCII控制字符前加上0x7D
-
同步传输时,使用零填充:
- 在信息字段中,每发现5个连续1,则立即加入一个0
-
-
CSMA/CD协议-载波监听多点接入/碰撞检测
最早的以太网是将许多计算机连接到一根总线上,因此只能允许一个主机在总线上发送数据,否则会造成数据混乱。但集线器的出现打破这种窘况,使以太网的拓扑从总线型变为更加方便的星形网络。因此这里只简单介绍一下重点:基本退让时间
-
基本退让时间(争用期)
当一端发送除数据后最久要多久才能检测到冲突呢?从传播检测冲突的过程我们可以发现,最久即考虑最坏的情况,那么就是在发送端的信息到达接收端的一瞬间发生了冲突,碰撞信号就会回传给发送端,此时发送到从发送数据到接收碰撞信号经过了2倍传播时延的时间,即2t。
-
-
MAC:数据链路层中的地址
在数据链路层中,从端到端需要指定数据的来源和数据的目的,那么需要给发送端和接收端一个地址。而数据链路层的实现依赖于物理层,地址应该与帮助计算机接入网络的硬件——适配器有关,因此厂家给了每个适配器一个硬件地址—MAC地址。
但因为每个厂家给适配器配置地址的方法不同,导致数据在网络中传递需要不断转换格式,增大了不必要的开销,这就为IP协议的出现埋下了伏笔。