Author:onceday date:2022年7月20日
数据链路层主要使用两种类型的信道:
点对点信道,使用1对1的通信方式。
广播信道,使用1对多的广播通信模式。
链路(link)是从一个结点到相邻结点之间的一段物理线路,中间没有任何其他的交换结点。
数据链路(data link),在链路通信,所需要的硬件和软件协议,总和在一起就构成了数据链路。也就是现在所属的网络适配器。
数据链路层无需考虑物理层传输的细节,直接抽象成沿水平方向传递数据就好。
数据链路层的协议必须考虑三个问题:
封装成帧,在一段数据前后分别添加首部和尾部,进行帧定界。当检测到帧接收不完整时,可以直接丢弃。
透明传输,需要对数据里可能涉及帧定界字符的字符进行转义,即字节填充或字符填充。这些数据对于数据链路层的协议来说就是透明的。
差错控制。通信线路并非理想,传输过程可能出现差错。数据链路层广泛使用循环冗余校验CRC来进行检错。
差错检测只是保证接受的帧几乎没有错误,但是还是会出现帧丢失、失序、重复等问题,因此是不可靠传输。
但对于通信质量较差的无线传输链路,数据链路层使用确认和重传机制。因此有线传输的通信质量已经挺好了,不确认、不重传可以提高效率。
数据链路层网络中,协议数据单元PDU的大小是有限制的,以太网中为1500,PPP协议保持兼容一般也为1500.
该限制特征被称为最大传输单元MTU,在包含所有链路的整个网络路径上,最小MTU称为路径MTU。
ppp是一个协议集合,包含三部分:
将IP数据报封装到串行链路的方法。
一系列的链路控制协议(Link Control Protocol,LCP),用来建立、配置和测试数据链路连接。
以及NCP(网络控制协议),每一个协议支持不同的网络层协议,如IP、OSI的网络层,DECnet,以及AppleTalk等。
PPP对物理层链路有最低要求,即必须支持双向操作,以及异步或同步操作。
ppp基本帧格式借用了HDLC的格式。
1999年公布的PPP over Ethernet(PPPoe),工作在以太网中,可以把PPP帧在封装在以太网帧中。

标志字段用于帧定界,即收尾两个0x7E字符。
地址和控制字段来自于HDLC协议,但在PPP中由于只有一个目的地和无需提供可靠服务。因此是固定的0xFF和0x03。该字段可通过地址和控制字段压缩(ACFC)的选项来省略他们。
协议字段表示后面的数据类型,因为数据可能来自于网络控制协议NCP或者链路控制协议LCP以及网络层协议IP等。0x0021是IP数据报,0xC021是LCP的数据。协议字段压缩PFC可以减少长度到1字节。
总信息长度MRU一般不超过1500。
FCS检验序列一般采用CRC-CCITT多项式:
C R C − C C I T T = X 16 + X 12 + X 5 + 1 CRC-CCITT=X^{16}+X^{12}+X^5+1 CRC−CCITT=X16+X12+X5+1
默认为16位FCS,但可以通过LCP选项启用32位FCS。
异步传输采用字节填充:
转义字符定义为0x7D(01111101)
把数据段中出现的每一个0x7E字节转变成(0x7D,0x5E)序列
把数据段中出现的每一个0x7D字节转变成(0x7D,0x5D)序列
数据段中小于0x20的字符c,则改变成(0x7D,0x20+c)序列
同步传输时使用位填充(零比特填充):
即SONET/SDH链路,一连串的比特连续传输。
扫描整个字段,只要有5个连续的1,立即填入一个0。即不会出现连续六个1的序列,0x7E(01111110)。
PPP协议的LCP分组:

代码字段给出了请求或响应的操作类型:
配置消息(开始基本配置,建立商定的选项)
终止消息(清除一条链路)
回送请求/应答消息(验证对方的操作)
放弃请求消息(用于性能测试,丢弃没有响应的分组)
标识和剩余时间消息(用于管理目的)
标识字段是有LCP请求帧的发送方提供的序列号,并随每个后续消息进行递增。
长度字段给出LCP分组的字节长度,这不是PPP协议的一部分。

在鉴别阶段可进行用户身份认证。
NCP将根据网络层不同的协议进行配置,如IP协议将使用IP控制协议IPCP(IP Control Protocal)。