一、数据链路层
数据链路层主要研究在同一个局域网中,分组怎样从一台主机传送到另一台主机1,但并不经过路由器转发(本来数据的传送是要经过路由器的,再从物理层->链路层->网络层,在转发表中找到下一跳的地址后,再下到物理层转发出去),即想象数据使在数据链路层之间水平传送。
二、使用点对点的数据链路层
链路:指一个结点到相邻结点的一段物理线路,中间没有其他交换结点。即链路只是一条路劲的组成部分
数据链路:当在一条线路上传输数据时,除了必须有一条物理线路外,还必须有一些必要的通信协议来控制这些数据的传输。
三个基本问题
-
封装成帧
即在一段数据的前后分别添加首部和尾部,构成一个帧。从网络层传来的都是以IP数据报为传送单位,传到数据链路层便成为帧的数据部分(MTU——每一种数据链路层都会规定所能上传的帧的数据部分长度上限,即最大传送单元)。在数据部分的首位加上首部(SOH(00000001))和尾部(EOT(00000100),SOH,和EOT都是不可打印的
ASCII码字符),就构成了完整的帧。首部和尾部的作用就是进行帧定界。即接收端接收到物理层上交的信息后,根据首部和尾部的标志,直到帧的开始和结束。使用帧定界符,接收端才能够保证至少接收到的数据帧是完整的。 -
透明传输
当用户都是从键盘输入时,即都是文本文件类型,则不会出现SOH和EOT这样的帧定界控制字符,所以不会造成错误(误认为找到帧的边界),这样的传输称为透明传输。
但当数据部分时非ASCII码文件时,便会造成前面所说的错误,所以接收到的帧便不是完整的。
解决办法:
字符填充:在数据链路层封装帧的控制字符SOH和EOT前再加上一个转义字符ESC,而在接收端的数据链路层往网络层发送数据前,删除这个转义字符。如果转义字符也在数据中,则在转义字符前再加一个转义字符,即当接收端收到两个连续的转义字符时,便删除一个。 -
差错检测
即传输过程中由于电压,信号干扰等原因,0可能变1,1可能变0造成的比特差错。
方法:循环冗余校验(CRC)
即使数据链路层使用了循环冗余校验技术,但只是做到了无差错接收,并不是可靠传输。比如,发送方发送123,接收方可能出现13(帧丢失),1223(帧重复),132(帧失序)。
现在的做法,对于通信质量良好的有线传输链路,数据链路层协议可以不使用确认重传机制,如果出现差错由上层(运输层的TCP协议)来改正。
三、点对点协议PPP
用户上网必须要连接某个ISP才能接入网络,ppp协议就是用户和ISP进行通信时所使用的数据链路层协议。
ppp协议要求
- 简单:只进行CRC检验,正确就收下,反之丢弃。
- 封装成帧:即规定特殊的字符做为帧定界符,以便接收端知道帧的开始和结束位置
- 透明性:即对于出现和定界符一样的比特符时,有检测的方法
- 多层网络协议:ppp协议能够在同一条链路上同时支持多种网络层协议的运行
- 多种类型链路:ppp协议还能够在多种类型的链路上运行。
- 差错检测
- 检测连接状态
- 最大传送单元
- 网络层地址协商
- 数据压缩协商
ppp协议的工作状态
如图,用户个人电脑通过调制解调器呼叫路由器时,路由器便能检测到调制解调器发出的载波信号。双方建立了物理层的连接后,ppp就进入“链路建立状态”,目的是建立LCP连接。这个LCP开始协商一些配置参数,即发送LCP的配置请求帧(ppp帧,协议字段为LCP的代码,信息字段包括特定的请求)。
协商结束后双发便建立LCP链路,进入鉴别状态,即判断是否为合法的身份信息,若成功,则进入网络层协议,进行NCP配置协商,即分配一个IP地址给用户。当以上操作都完成后,链路便打开,链路的两个端点便可以向彼此发送分组。
四、使用广播通信的数据链路层
适配器的作用
计算机与外界局域网的连接是通过适配器进行的。适配器和局域网之间的通信时通过电缆或双绞线以串行的方式进行传输的,而适配器与计算机是以并行方式传输的。所以它需要实现串并传输的转换。因为在网络上的数据率和计算机上的数据率不相同,所以适配器需要有对数据进行缓存的芯片,要实现与局域网的通信就还需实现以太网协议。
适配器实现的功能是基于数据链路层和物理层之上的,而不是某个单独的层次。
CSMA/CD协议(载波监听/多点接入/碰撞检测)
载波监听:即不管在发送前,还是发送中,都必须要不停的检测信道。发送前检测,是为了获得发送权,发送中检测是为及时发现有没有碰撞。
多点接入:即网络的结构为总线型网络,计算机以多点的方式连接在一根总线上。
碰撞检测:即适配器一边发送数据一边检测信道上的电压变化情况,以判断自己发送数据时其他用户是否也在发送数据。
综上所述,即发现使用CSMA/CD协议时,一个站不可能即发送又接收,所以使用该协议的以太网只能进行半双工通信。