计算机网络 - 数据链路层

1、数据链路层提供的服务


  • 封装成帧
  • 透明传输
  • 差错检测

2、封装成帧


数据包在数据链路上传输时,发送端的数据链路层须要给每一个从网络层获得的包加上开始和结束的标记,接收端端根据标记把数据解析成不一样的数据包递交给网络层。数据包通过网络层封装以后称为一个数据帧,结构以下:算法

帧头 源物理地址 目标物理地址 数据包协议类型 数据包 帧检验序列 帧尾

3、透明传输


上面提到的帧头和帧尾,其实是在网络协议中约定好的一些特殊字节做为标识符(例如01111110)。若是数据包中的数据也包含这与帧头和帧尾相同的字节该如何处理呢?为了解决这些问题,数据层在封装数据包的时候若是发现包中有存在跟帧头帧尾相同的字节,会在这些特殊体特前面再加上一些特殊的填充字节用于提示接收端这并非帧头和帧尾,这很像编程语言中转义字符"\"。接收端在接收的时候会去掉这些"转义字符",把数据包原样递交给上层。这整个过程对于数据链路层之上的数据层是彻底无感知的,因此称为透明传输。编程

假如帧头和帧尾的标识符是01111110,也能够采用0比特填充法,来避免数据中出现标识符。只要数据中有5个连续的1比特,就在后面填充一个0,接收端若是发现有5个连续的1比特,切后面跟着0bit,就把这个0bit去掉,以此来实现透明传输。网络

4、差错检测


数据在物理介质上传输的时候收的时候,因为信道噪声的存在,必定会出现错误的比特。传输错误的比特占所传输比特总数的比率称为误码率。检测和纠正传输中的错误比特的功能是在数据链路层来实现的。并发

差错检测和纠正是经过在数据帧中封装上帧检验序列(冗余码)来实现的,冗余码在数据帧中的位置是在数据包以后帧尾以前。通常是使用循环冗余校验CRC。接收端根据检测算法来判断是否有错误的比特。这个算法只能知道是否存在错误的比特,可是没法知道哪个比特出错,发现错误后只能丢弃数据帧,进一步就须要传输层的排序和重传机制来保证传输的可靠性。编程语言

另外,还有一些带有纠错能力的差错检测编码,与上面相似也是在数据帧中附加帧检验序列,这种编码有必定的几率能够检测到具体是哪一个比特在传输中出现了错误,以减小数据链路层对数据帧的丢弃。以太网协议没有实现纠错,由传输层来保证传输的可靠性。优化

因为数据链路层不能保证它上面的协议层的可靠性传输,能够不实现接收确认机制,由高层来实现可靠性传输。例如TCP/IP协议中传输层的可靠性传输服务。编码

5、两种类型的数据链路层


  • 使用点对点信道特性的数据链路层
  • 使用广播信道的数据链路层

6、使用点到点协议PPP(Point-to-Point Protocol)

广域网采用点到点通讯机制。cdn

用户使用拨号电话线接入因特网(ADSL)时,通常使用PPP协议。PPP协议除了前面介绍的数据链路层功能以外,还包含了链路控制协议(可用于用户身份验证和计费)、网络控制协议(如协商分配IP地址等)等细分的协议层。blog

7、使用广播信道的数据链路层

局域网采用广播机制 - 以太网协议,以太网协议组中主要包含MAC协议,一个数据帧也能够称为一个MAC帧。排序

共享通讯媒体接入:

  • 静态划分网络(通常不采用,加入新的机器须要从新划分资源)

    • 频分复用
    • 时分复用
    • 码分复用
    • ... ...
  • 动态接入:

    • 随机接入(以太网多采用此方式)
    • 受控接入,polling和轮询等(如今基本已被淘汰)

以太网:

  • 一台机器发送数据,会广播给局域网内的全部联网设备,接收端的网卡不处理不是发送给本身的地址的数据
  • CSMA/CD(载波监听多点接入/碰撞检测)协议:多个机器能够接入一个总线,发送前须要先检测总线上有没有多个设备正在发送产生了碰撞。总线空闲的时候才能进行数据发送。两个设备都检测到总线空闲并发送时,信号在总线上叠加,就会检测到碰撞,检测到碰撞后设备会随机等待一段时间,再继续发送。只能进行半双工通讯,同时收发,信号会在总线上发生碰撞。
  • 因为存在传播时延,多个设备同时发送,信号叠加并被检测到须要必定的时间。因此以太网的发送速率要小于理论值。
  • 信道利用率 最大值:发送时间/(发送时间+传播时延)
  • MAC层:48位二进制组成全球惟一的MAC地址(前24位表明网卡的生产厂家,后24位厂家本身指定)。根据MAC地址,接收设备能够接收三种帧:1. 广播帧 2. 单播帧 3. 组播帧 (这里的广播指的是须要局域网内全部设备接收的帧,不是指信号是广播发送,以太网内全部的信号都是广播的)
  • 以太网经过基带(数字)信号来通讯。
  • 目前的以太网通常采用星型拓步结构,经过集线器(集线器工做在物理层)来链接不一样的设备。

优化的以太网:

前面提到多个设备同时发送数据时,信号会在总线上产生碰撞。若是使用交换机组网,交换机能够根据mac地址转发数据,信号不会扩散到网络内的其余设备,因此多个设备能够同时发送数据,并且支持全双工通讯。目前交换机是主流的以太网组网设备。

相关文章
相关标签/搜索