数据链路层(2)封装成帧

封装成帧

  • 为了提高帧的传输效率,应当使帧的数据部分的长度尽可能大些
    • 帧的数据部分才是真要传输的数据,帧头和帧尾是为了实现数据链路层功能而额外添加的。
  • 考虑到差错控制等多种因素,每-种数据链路层协议都规定了帧的数据部分的长度.上限,即最大传送单元MTU(Maximum Transfer Unit)。

数据链路层(2)封装成帧_第1张图片

封装成帧

封装成帧是指数据链路层给上层交付的协议数据单元添加帧头和帧尾使之成为帧。

  • 帧头和帧尾中包含有重要的控制信息。
  • 帧头和帧尾的作用之一就是帧定界

数据链路层(2)封装成帧_第2张图片

发送方的数据链路层将上层交付下来的协议数据单元封装成帧后,还要通过物理层将构成帧的各比特,转换成电信导发送到传输媒体。

**接收方的数据链路层如何从物理层交付的比特流中提取出一个个的帧?**任何判断那一段是一个帧?

数据链路层(2)封装成帧_第3张图片

  • 下面是是PPP帧的格式,在其帧头和帧尾中,各包含有一个长度为1字节的标志字段,其作用就是帧定界

    假设发送方发送的是PPP帧,比特流中红色部分是帧定界标志,那么接收顺万的数据链路层就可以依据帧定界标志,从物理层交付的比特流中提取出一个个的帧。

    数据链路层(2)封装成帧_第4张图片

    注意:并不是每一种数据链路层协议的帧都包含有帧定界标志。

    比如:以太网版本2的MAC帧格式,在其帧头和帧尾中。并没有包含帧定界标志。那么,接收方又是如何从物理层交付的比特流中提取出一个个的以太网帧呢?

    1. 实际上。以太网的数据链路层封装好MAC帧后,将其交付给物理层,物理层会在MAC项前面添加8字节的前导码,然后再将比特流转换成电信导发送。
    2. 前导码中的前7个字节为前同步码,作用是便接收万的时钟同步。
    3. 之后的1字节为帧开始定界符,表明其后面是跟着的就是MAC帧。
    4. 另外,以太网还规定了帧间可隔时间为96比特的发送时间。
    5. 因此,MAC帧并不需要帧结束走界符。

    注意:帧间间隔整有其它作用。

    数据链路层(2)封装成帧_第5张图片

透明传输

透明传输:是指数据链路层对上层交付的传输数据没有任何限制,就好像数据链路层不存在一样。

  • 转义字符是一种特殊的控制字特,其长度为1个字节,十进制值为27,而并不是E、S以及C这3个学字符。

  • 面向字节的物理链路使用字节填充(或称字符填充)的方法实现透明传输

    发送方数据链路层收到其上层交付的协议数据单元,给其添加帧头和帧尾使其成为帧。其中都包含了,帧定界标志,也就是一个得定数值。

    如果在上层交付的协议数据单元中,恰好也包含了这个特定数值,接收方不能确接收该帧。

    1. 接收方接收到第一个帧定界标志时,认为这是帧的开始。当接收方再次接收到帧定界标志时,会误认为帧结束了。
    2. 如果数据链路层不采取其他措施,来避免接收方对帧是否结束的误判就不能称为透明传输

    数据链路层对上层交付的协议数据单元有限制,其内容不能包含帧定界符。

    很显然,这样的数据链路层没有什么使用价值。所以,各种数据链路层协议,一定会想办法来解决这个问题。

    例如:

    1. 在发送帧之前,对帧的数据部分进行扫描,每出现一个帧定界符,就在其前面插入一个转义字符。
    2. 接收方数据链路层在物理层交付的比特流中提取帧,遇到第一个帧定界符时,认为这是帧的开始;当遇到转义字符时就知道,其后面的1字节内容虽然与帧定界符相同,但它是数据而不是定界符,剔除转义字特后将其后面的内容作为数据继续提取。
    3. 当再次提取到帧定界符时,表明这是帧的结束。

    在上层交付给数据链路层的协议数据单元中,既包含了帧定界符,又包含了转义字符,应该怎么处理?
    image-20211015135454577

    方法仍然是至发送帧之前,对帧的数据部分进行 扫描。

    1. 每出现一个帧定界符或转义字符,就在其前面插入一个转义字符。
  • 面向比特的物理链路使用比特填充的方法实现透明传输

    • 是某个点对点协议的帧,为简单起见,在帧首部和尾部中,仅给出了帧定界标志。而未给出其他控制字段。

      而在帧的数据部分,出现了两个帧定界标志,但它们实际上是数据,而不是帧定界。

    数据链路层(2)封装成帧_第6张图片

    • 发送前。可以采用零比特填法,对数据部分进行扫描。

      每5个连续的比特1后面就插入1个比特0。这样就确保了帧定界在整个帧中的唯一性,也就可以实现透明传输。

    数据链路层(2)封装成帧_第7张图片

    • 接收方的数据链路层,从物理层交付的比特流中提取帧时。

      将帧的数据部分中的每5个连续的比特1后面的那个比特0剔除即可。

    数据链路层(2)封装成帧_第8张图片

你可能感兴趣的:(计算机网络,udp,计算机网络)