1 数据链路层使用的信道
点对点信道。这种信道使用一对一的点对点通信方式。
广播信道。这种信道使用一对多的广播通信方式,因此过程比较复杂。广播信道上连接的主机很多,因此必须使用专用的共享信道协议来协调这些主机的数据发送。
链路是一条点到点的物理线路段,中间没有任何其他的交换结点。一条链路只是一条通路的一个组成部分。
数据链路:除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。现最常用的方法是使用适配器(即网卡)来实现这些协议的硬件和软件。一般的适配器都包括了数据链路层和物理层这两层的功能。
2 数据链路层需要解决的三个问题
封装成帧:就是在一段数据的前后分别添加首部和尾部,然后就构成了一个帧。用于确定帧的界限。
透明传输:如果数据里面恰好有和“开始”、“结束”符相等的字符,容易使计算机误以为数据里面是“开始”或“结束”,这时采用字节填充法或0比特填充法,告诉计算机这其实是数据而不是帧头和帧尾,来实现透明传输。
字节填充(byte stuffing)或字符填充(character stuffing):发送端在数据中出现控制字符“SOH”或“EOT”时,在其前面插入一个转义字符“ESC”(其十六进制编码是1B)。接收端在将数据送往网络层之前删除插入的转义字符。如果转义字符也出现数据当中,那么应在转义字符前再插入一个转义字符。当接收端收到连续的两个转义字符时,就删除其中前面的一个。
差错检测:传输过程中可能会产生比特差错,1可能会变成0而0也可能变成1。在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率 BER (Bit Error Rate)。常用检错技术有循环冗余检验 CRC检错技术。在数据后面添加上的冗余码称为帧检验序列 FCS (Frame Check Sequence)。
仅用循环冗余检验 CRC 差错检测技术只能做到无差错接受。
“无差错接受”是指:“凡是接受的帧(即不包括丢弃的帧),我们都近似认为这些帧在传输过程中没有产生差错”。也就是说:“凡是接收端数据链路层接受的帧都没有传输差错”(有差错的帧就丢弃而不接受)。
要做到“可靠传输”(即发送什么就收到什么)就必须再加上确认和重传机制。考虑帧重复、帧丢失、帧乱序的情况。可靠传输由传输层负责。
可以说“CRC是一种无比特差错,而不是无传输