数据链路层

信道类型

  • 点对点信道:这种信道使用一对一的点对点通信方式。
  • 广播信道:这种信道使用一对多的广播通信方式,因此过程比较复杂。广播信道上连接的主机很多,因此必须使用专用的共享信道协议来协调这些主机的数据发送。

链路与数据链路

  • 链路(link):是一条点到点的物理线路段,中间没有任何其他的交换结点。

    • 一条链路只是一条通路的一个组成部分。
  • 数据链路(data link):除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。

    • 现最常用的方法是使用适配器(即网卡)来实现这些协议的硬件和软件。
    • 一般的适配器都包括了数据链路层和物理层这两层的功能。
    • 数据链路层传送的是帧

三个基本问题

  • 封装成帧

    • 封装成帧(framing):就是在一段数据的前后分别添加首部和尾部,然后就构成了一个帧。确定帧的界限。
    • 首部和尾部的一个重要作用就是进行帧定界。确保数据完整接收。
  • 透明传输

    • 当传送的帧是用文本文件组成的帧时(文本文件中的字都是从键盘上输入的),其数据部分显然不会出现像SOH或EOT这样的帧定界控制字符。可见不管从键盘上输入什么字符都可以放在这样的帧中传输过去,因此这样的传输就是透明传输。
    • 但当数据部分是非ASCII码的文本文件时(如二进制代码的计算机程序或者图像等),情况就不同了。如果数据中的某个字节的二进制代码恰好和SOH或EOT这种控制字符一样,数据链路层就好错误地“找到帧的边界”,把部分帧收下(误以为是个完整的帧),而把剩下的那部分数据丢弃(这部分找不到帧定界控制字符SOH)。这种情况就不是透明传输,因为当遇到书中碰巧出现字符“EOT”时就传不过去了,而其后面的数据因找不到“SOH”被接收端当做无效帧而丢弃。但实际上数据中出现的字符“EOT”并非控制字符而仅仅是二进制数据00000100 。
    • 为了解决透明传输问题,字节填充法或字符填充:在控制字符SOH、EOT的前面插入一个转义字符ESC(其十六进制编码是1B,二进制是00011011)。而接收端的数据链路层在把数据送往网络层之前删除这个插入的转义字符。
  • 差错检测

    • 现实的通信链路都不会是理想的。传输过程中,1可能变成0, 0 可能变成1 。这就叫比特差错。——误码率。 误码率和信噪比有很大的关系。

    • 因此,在计算机网络传输数据时,必须采用各种差错控制技术。目前在数据链路层广泛使用了循环冗余检验(CRC)的检错技术。在数据链路层的CRC检验都是用硬件完成的,处理很迅速,因此不会延误数据的传输。(除数越大,校错能力越强)

    • 对于通信质量良好的有线传输链路,数据链路层协议不使用确认和重传机制,即不要求数据链路层向上提供可靠传输的服务。如果在数据链路层传输数据时出现了差错并且需要进行改正,那么改正差错的任务就由上层协议(例如,运输层的TCP协议)来完成。

    • 对于通信质量较差的无线传输链路,数据链路层协议使用确认和重传机制,数据链路层向上提供可靠传输的服务。

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

  • CSMA/CD 表示 Carrier Sense Multiple Access with Collision Detection。

  • “多点接入”表示许多计算机以多点接入的方式连接在一根总线上。

  • “载波监听”是指每一个站在发送数据之前先要检测一下总线上是否有其他计算机在发送数据,如果有,则暂时不要发送数据,以免发生碰撞。

  • 总线上并没有什么“载波”。因此, “载波监听”就是用电子技术检测总线上有没有其他计算机发送的数据信号。

  • 特点:

    • 使用 CSMA/CD 协议的以太网不能进行全双工通信而只能进行双向交替通信(半双工通信)。
    • 每个站在发送数据之后的一小段时间内,存在着遭遇碰撞的可能性。
    • 这种发送的不确定性使整个以太网的平均通信量远小于以太网的最高数据率。
  • 争用期:

    • 最先发送数据帧的站,在发送数据帧后至多经过时间 2τ(两倍的端到端往返时延)就可知道发送的数据帧是否遭受了碰撞。
    • 以太网的端到端往返时延 2τ称为争用期,或碰撞窗口。
    • 经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞。
    • 以太网的端到端往返时延2t称为争用期,或碰撞窗口。通常,取51.2us为争用期的长度。
    • 对于10Mb/s以太网,在争用期内可发送512bit,即64字节。
    • 以太网在发送数据时,若前64字节未发生冲突,则后续的数据就不会最短有效帧长。
    • 如果发生冲突,就一定是在发送的前64字节之内。
    • 由于一检测到冲突就立即中止发送,这时已经发送出去的数据一定小于64字节。
    • 以太网规定了最短有效帧长为64字节,凡长度小于64字节的帧都是由于冲突而异常中止的无效帧。
  • 二进制指数类型退避算法 :

    • 发生碰撞的站在停止发送数据后,要推迟(退避)一个随机时间才能再发送数据。
    • 确定基本退避时间,一般是取为争用期 2τ。
    • 定义重传次数 k ,k≤10,即:k = Min[重传次数, 10]
  • 从整数集合[0,1,…, (2k-1)]中随机地取出一个数,记为 r。重传所需的时延就是 r 倍的基本退避时间。

  • 当重传达 16 次仍不能成功时即丢弃该帧,并向高层报告。

results matching ""

    No results matching ""