封装成帧
定义:将网络层传过来的ip数据报添加首部和尾部封装成一个帧。
帧长:ip数据报的长度加上帧首部和帧尾部的长度就是帧的长度。
帧的发送方向:帧的发送方向是从帧的首部开始的,
MTU(max transfer unit):帧中数据部分的最大长度,每一种链路层的协议都规定了MTU
帧定界符
当我们传输的数据是由ASCII编码的文本文件时(ASCII可打印的字符有95个,即可从键盘输入的字符,不可打印的有33个),帧定界可以使用十六进制的01和04分别代表帧的开始和结束。
帧的差错判断:因为帧包括了帧定界符,所以当接受方子接收到了单个定界符(开始或结尾),则可以判断该帧是一个错误的帧,随即将这个错误帧丢弃。
透明传输
当我们的帧的数据部分是ASCII组成的文本文件时,数据部分必然不会出现SOH和EOT界定符,这样就实现了透明传输。而当传输的数据时图像、视频等数据的时候,数据部分可能出现SOH和EOT等界定符,这必然会导致接收端错误的接收帧。
透明:站在数据的角度,数据是不知道有数据链路层的存在,不知道有什么阻碍数据传输的障碍。
解决方法:要使接收端不会因帧的数据部分含有帧界定符而错误的接收帧,那就需要接收端可以在数据部分接收到帧界定符时不解释为控制字符。
字符填充法:在帧的数据部分出现的帧界定符之前填充一个转义字符(ESC,十六进制为1B,27),同样在遇到帧数据部分含有转义字符时,在其前面在加一个转义字符。
差错检测
比特差错:数据部分的0变为1或者1变为0.
传输差错:包括比特差错、帧重复、帧丢失、帧乱序。
误码率(Bit Error Rate):一段时间内,传输错误的比特数占传输比特总数的比率。
循环冗余检验(CRC,Cyclic Redundancy Check)
帧检验序列(FCS):为了进行检错而添加的冗余码。
who实现:发送端FCS的生成和接收端CRC的检验都是硬件来完成的,速度很快。
原理:实现接受方和发送方商量出一个除数P,用原数据M1乘2的m-1次方,即在原数据M1的后面添加p-1个0得到M2,在用M2对P进行模2运算,得出余数R,R与M2相加,得到最后要发送的帧。接收方接收到帧首先进行对P的模2运算,余数为0表示帧正确,不为0表示出现了bit差错。
可靠传输
前面提到的传输并不是可靠的传输,只是实现了无bit差错的传输,而对于帧的丢失等错误并没有解决。最先OSI认为必须让数据链路层提供可靠的传输,即提供帧编号、确认、重传等机制。现在由于因通信链路质量不好而引起差错的概率大大降低,所以互联网现在才去区别对待的方法,通信质量好的有线传输链路,数据链路层不用提供可靠的传输。而对于通信质量不好的无线传输,数据链路层提供可靠的传输。
PPP协议
由三部分组成
1.一个将IP数据包封装到串行链路的方法。
2.一个用来建立、配置和测试数据链路连接的链路控制协议(LCP Link Control Protocol)。
3.一套网络控制协议NCP(Network Control Protocol),其中每个协议支持不同的网络层协议。
帧的格式
PPP帧的介绍:帧的头部和尾部分别有3个字段和2两个字段,带有F的事帧的界定符(16进制的7E,126),这样连续的两个帧之间就只需要一个帧界定符,帧界定符的长度为1字节,如果出现连续的两个7E代表空帧,应该丢弃。A和C对ppp帧没有作用。ppp帧头部还有第4个字段被我忘画在上面了,第4个字段是两字节的协议字段,当为0x0021代表ppp帧是IP数据报,若为0xC021,则信息字段是ppp链路控制协议的数据,而0x8021表示这是网络层的控制数据。
字节填充
当PPP使用异步传输时,将转义字符设为0x7D。
当信息字段出现了帧界定符7E,将其转为7D和5E两个字节
当信息字段出现了7D,将其转为7D和5D两个字节。
当信息字段出现ASCII码的控制字符,则在前加上0x7D,同时将该字符的编码改变。(在这里遇见ASCII部分字符,是因为在LCP和NCP等进行建立连接的过程中可能用到了ASCII的字符作为某种标志符。
零比特填充
当ppp使用同步传输时,采用零比特填充的方法。
原理:在发送端先对整个信息字段进行扫描,只要发现5个连续1立马在后面填一个0,这样信息字段就不会出现连续6个1,这样接收端就可以确定帧的边界,然后用硬件对信息字段扫描,当出现了连续的5个1就删除后面的0,还原为原来的数据。
ppp协议的工作状态
1.首先建立物理层的连接。
2.物理层建立连接后,链路层发送LCP配置请求帧,这是ppp帧,协议字段为LCP协议对应的代码,信息字段包括特定的配置请求
链路另一端可以响应:配置确认帧(ACK)所有选项都接受,配置否认帧(NCK)所有选项都理解但不接受,配置拒绝帧(REJECT)选项无法识别或不能接受。LCP配置选项包括链路上的最大帧长、所使用的鉴别协议、不实用ppp帧的地址和控制字段,协商结束后就建立了LCP链路。
3.建立了LCP链路,进入鉴别状态,在这个状态只运行传送LCP协议的分组、鉴别协议的分组、检测链路质量的分组,若使用口令鉴别协议PAP,则需要通信发起方,发送身份标识符和口令。还可采用更复杂的口令握手鉴别协议。鉴别失败,则断掉所有的连接,鉴别成功,进入网络层协议状态。
4.进入网络层协议状态,ppp链路的两端的网络控制协议NCP根据网络层的不同协议互相交换网络层特定的网络控制分组。(类似于两台主机运行着不同的网络层协议,但通过NCP可以使得两台主机仍然可以使用同一种ppp协议进行痛惜)。
5.数据传输结束后,通信双方可以通过发出终止请求,断开连接。