zoukankan      html  css  js  c++  java
  • 考研级《计算机网络》知识梳理——第八期

    数据链路层的功能概述

    1、数据链路层的研究思想

      以抽象的相同层级之间的数据通信进行研究。

      

     

     2、数据链路层基本概念

      

     

     

      数据链路层负责通过一条链路从一个结点向另一个物理链路直接相连的相邻结点传送数据报。

      结点:主机、路由器(相邻之间叫相邻结点)

      链路:网络中两个结点之间的物理通道,链路的传输介质主要有双绞线、光纤和微波,分为有线链路、无线链路。

      数据链路:网络中两个结点之间的逻辑通道,把实现控制数据传输协议的硬件和软件加到链路上就构成数据链路。

      帧:链路层的协议数据单元,封装网络层数据报。

    3、数据链路层功能概述

      数据链路层在物理层提供服务的基础上向网络层提供服务,其最基本的服务是将源自网络层来的数据可靠地传输到相邻结点的目标机网络层。其主要作用是加强物理层传输原始比特流的功能,将物理层提供的可能出错的物理连接改造成为逻辑上无差错的数据链路,使之对网络层表现为一条无差错的链路。

      

     

      功能一:为网络层提供服务。包括:

        一、无确认无连接服务(通常用于实时通信或误码率比较低的通信)

        二、有确认无连接服务(虽然不需要事先连接,但目的主机收到信息后需要发送一个确认信号,如果一定时间内发送方没有收到该信号,则重发一次,常用于误码率比较高的通信信道)

        三、有确认面向连接服务(先建立好连接,同时通信过程中也会不停确认,是最可靠的一种通信)(如果是有连接的,一定是有确认的)

      功能二:链路管理,即连接的建立、维持、释放(用于面向连接的服务)

      功能三:组帧。

      功能四:流量控制。(接收方告诉发送方不要发太快,否则接受不来)

      功能五:差错控制(帧错/位错)。

     

     

    封装成帧&透明传输

    1、透明传输

      定义:透明传输是指不管所传数据是什么样的比特组合,都应当能够在链路上传送。因此,链路层就“看不见”有什么妨碍数据传输的东西。

      所传数据中的比特组合恰巧与某一个控制信息完全一样时,就必须采取适当的措施,使收方不会将这样的数据误认为是某种控制信息。这样才能保真数据链路层的传输是透明的。(也就是说需要保证组帧时的控制部分的信息足够特殊,能够与数据部分做好足够的区分,才能做到透明传输,具体的方法见下面组帧的四种方法)

    2、封装成帧

      封装成帧:就是在一段数据的前后部分添加首部和尾部,这样就构成了一个帧。接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的bit流中识别帧的开始和结束。(发送端需要做的工作)(首先应尽量让帧的数据部分远远大于控制部分,而受帧控制协议的限制,数据部分的长度是有极限的,该极限叫做最大传送单元MTU(Maximum Transmission Unit))

        组帧的四种方法:

          1、字符计数法

            帧首部使用一个计数字段(第一个字节,8bit)来标明帧内字符数(包括这个字节)。

            

     

            痛点:鸡蛋装在一个篮子里了,标明计数的字符出错后后面全错。

          2、字符(节)填充法

            首先一般情况下帧首跟帧尾使用特定的bit编码(根据协议不同使用的编码也不尽相同),该方法可以对文本文件进行透明传输,因为文本文件中所有的字符都可以ASCII编码,控制信息只需要跟所有的ASCII编码做区分就可以了,但是对于图片文件和二进制代码文件等非ASCII编码数据就无法实现透明传输,因此字符填充法在数据部分中与控制部分巧合一致的字符位置前加入转义字符(类似于java中的“\”),与转义字符恰好一致的也要加一个转义字符(类似于“\\”)。

            接收端收到一串帧的时候会从头到尾扫描,见到转义字符就去掉然后不再管转义字符紧后面的内容,直到碰见有效的结束字符。

            

     

          3、零比特填充法

            非常无脑好用,遵循“5110”原则(具体实现为发送端帧首和帧尾的控制部分都是01111110(这里有六个相连的1),而在后面的数据部分中,单凡见到有五个1的时候就在后面无脑加上一个0;接收端可以轻松判别帧首尾并且在数据部分无脑见到11111就去掉后面的0,因为源码里的111110都变成了1111100所以并不会出错)保证了透明传输:在传送的比特流中可以传送任意比特组合,而不会引起对帧边界的判断错误。

            

                     

          4、违规编码法

            使用物理层中并不可能会出现的编码方式来标识帧的起始和终止。比如在物理层中使用的是曼彻斯特编码,正常情况下只会有“高低”和“低高”两种情况,因此可以用“高高”或“低低”这样的违规编码来与正常数据部分做区分。

            

           

      首部和尾部包含许多的控制信息(包括差错控制的信息、流量控制的信息、物理地址等信息),他们的一个重要作用:帧定界(确定帧的界限)。

      帧同步:接收方应当能从接收到的二进制比特流中区分出帧的起始和终止。(接收端需要做的工作)

      

     

  • 相关阅读:
    APEX安装
    SNN对抗攻击笔记
    Exploring Adversarial Attack in Spiking Neural Networks with Spike-Compatible Gradient
    Inherent Adversarial Robustness of Deep Spiking Neural Networks: Effects of Discrete Input Encoding and Non-Linear Activations
    NeuroAttack: Undermining Spiking Neural Networks Security through Externally Triggered Bit-Flips
    Training spiking neural networks for reinforcement learning
    Kernel methods on spike train space for neuroscience: a tutorial
    Eligibility Traces and Plasticity on Behavioral Time Scales: Experimental Support of neoHebbian Three-Factor Learning Rules
    python操作MySQL数据库
    连接mysql报错:error 2003 (hy000):can't connect to mysql server on 'localhost' (10061)
  • 原文地址:https://www.cnblogs.com/monkiki/p/15738135.html
Copyright © 2011-2022 走看看