网络学习笔记(数据链路层)

来源:互联网 发布:linux调整分区大小 编辑:程序博客网 时间:2024/05/24 01:55

链路(link)是从一个结点到相邻结点的一段物理线路,而中间没有其他的交换结点。
数据链路(data link):当需要在一条线路上传送数据时,除了必须有一条物理线路外,还必须有一些必要的通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。现在最常用的方法是使用网络适配器等来实现这些协议。一般的适配器都包括了数据链路层和物理层这两层功能。

点对点信道的数据链路层在进行通信时的主要步骤如下:

  1. 结点A的数据链路层把IP数据报添加首部和尾部封装成
  2. 结点A把封装好的帧发送给结点B的数据链路层。
  3. 若结点B收到的帧无差错,则从收到的帧中提取出IP数据报上交给网络层,否则丢弃这个帧。

数据链路层协议有许多种,但有三个基本问题是相同的:封装成帧,透明传输和差错检测。
最大传送单元MTU(Maximum Transfer Unit)规定了帧的数据部分的长度上限。
在ASCII码中,控制字符有33个。帧定界可以使用特殊的帧定界符SOH(Start Of Header,16进制编码x01)放在最前面,EOT(End Of Transmission,16进制编码x04)表示帧结束。
所传输的数据中任何8bits的组合一定不允许和帧定界符的编码一样,否则会出现帧定界错误。当传输数据部分是非ASCII码文本文件时(如二进制码的程序或图像),可能会出现上述错误。为了解决这个问题,发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”(16进制编码是1B)。而在接收端的数据链路层在将数据送往网络层之前删除这个转义字符。这种方法称为字节填充。如果转义字符也出现,在转义字符前插入一个转义字符。

差错检测
误码率BER(Bit Error Rate):传输错误的比特占所传输比特总数的比率。
误码率与信噪比有很大关系。提高信噪比可以降低误码率。
循环冗余检验CRC(Cyclic Redundancy Check):假定待传送的数据M有k个比特,CRC在M后面加供差错检验的n位冗余码,构成一个帧(一次发送k+n位)。
n位冗余码的获得:用二进制的模2运算进行2n乘M的运算,相当于在M后面添加n个0。得到(k+n)位的数除以收发双方事先商定的长度为(n+1)位的除数P,得出商是Q而余数是R(n位,比P少一位),将R拼接在数据M后面发送出去(即2nM+FCS)。这种为了进行检错而添加的冗余码常被称为帧检验序列FCS(Frame Check Sequence,并不特指CRC的冗余码)
在接收端将数据以帧为单位进行CRC检验:把收到的每一个帧都除以同样的除数P,如果传输无差错,那么余数肯定是0
例如:假定M=101001(k=6),假定n=3,除数P=1101,M23/P=110101001,因此加上FCS后发送的帧是101001001共(k+n)位.

数据链路层没有向网络层提供可靠传输的服务。CRC等方式仅保证了比特差错不太可能发生,但仍可能出现帧丢失、帧重复或帧失序

点对点协议PPP

PPP协议(Point-to-Point Protocaol)是用户计算机和ISP进行通信时所使用的数据链路层协议。PPP协议只支持全双工链路。PPP协议由三个部分组成:

  • 一个将IP数据报封装到串行链路的方法。
  • 一个用来建立、配置和测试数据链路连接的链路控制协议LCP(Link Control Protocol)
  • 一套网络控制协议NCP(Network Control Protocol),其中每一个协议支持不同的网络层协议。

PPP协议工作状态:
这里写图片描述

  • PPP链路的起始和终止状态永远是图中的链路静止(Link Dead)状态,这时在PC机和ISP的路由器之间不存在物理层连接。
  • 当用户PC机通过调制解调器呼叫路由器时,路由器能够检测到发出的载波信号,在双方建立物理层连接后,PPP就进入链路建立(Link Establish)状态,目的是建立LCP连接。
  • 这时LCP开始协商一些配置选项,包括连路上的最大帧长,所使用的鉴别协议(如果有的话),以及不适用PPP帧中的地址和控制字段,即发送LCP的配置请求帧
  • 协商结束后双方就建立了LCP链路,进入鉴别(Authenticate)状态,目的是鉴别双方的身份。若鉴别成功,则进入网络层协议(Network-Layer Protocol)状态。
  • 在网络层协议状态,PPP链路的两端网络控制协议NCP根据网络层的不同协议互相交换网络层特定的网络控制分组。由于现在的路由器呢能够同时支持多种网络层协议,所以,PPP协议两端的网络层可以运行不同的网络层协议,但仍然可以使用同一个PPP协议进行通信
  • 如果在PPP链路上运行的是IP协议,则对PPP链路的每一段配置IP协议模块时要使用NCP中支持IP的协议——IP控制协议IPCP(IP Control Protocol)
  • 当网络层配置完毕,链路进入可进行数据通信的链路打开(Link Open)状态。两个PPP端点还可发送回送请求回送回答,以检查链路的状态。
  • 数据传输接受后,可以由一段发出终止请求来终止链路连接,在收到对方发来的终止确认后,转到链路终止状态,当调制解调器的载波停止后,则回到链路静止状态。
  • 由上可见,PPP协议已不是纯粹的数据链路层协议,还包含了物理层和网络层的内容。
0 0
原创粉丝点击