数据链路和帧
帧:数据链路层传输基本单元。链路层将网络层传过来的数据构成帧发到链路上,并将发到链路层的帧取出数据交给网络层
数据报/分组/包:网络层传输基本单元
三个基本问题
即封装成帧、透明传输、差错检测
封装成帧
概念:将数据在头部和尾部加帧头和帧尾组,数据,帧头,帧尾组成的结构叫帧,是链路层发送的基本单位。帧头和帧尾可用来帧定界,即从发来或收到的一串数据甄别哪里是一个帧的开始和结束,定界可用来对数据帧进行差错检验
透明传输
即帧的数据中如果出现帧头和帧尾,识别帧起始时,会误把数据里的帧头和帧尾当作帧头或帧尾,导致数据未读取完就截取了,只截取了片段。数据里出现的和帧头帧尾编码一样的字节序,数据里的东西(帧头帧尾相同的字节序)不是透明的。
当帧数据里出现了和帧头帧尾相同字节序的数据怎么办?加转义字符,发的时候加,收到的时候去掉
差错检测
数据传输过程中,可能会产生误码,即传输的数据1变成0或者0变成1。这种误码和信噪比有关,信噪比越高误码率越小。链路层广泛使用循环冗余校验(CRC,Cyclic Redundancy Check)来检测这种误码
CRC:发送方和接收方共同商议一个n + 1位除数P,用数据对这个除数P进行模2运算得出n位余数,将原始数据末尾加上这个n位余数就是crc校验,接收方对这个数据同样做模2运算,如果余数不相同则丢弃数据,如果余数相同则接受数据
无比特差错和无传输差错:链路层的CRC校验只能保证帧无比特差错,不能保证其他差错,比如帧丢失,帧乱序,所以仅实现CRC不能叫无传输差错,只能叫无比特差错。链路层不保证无传输差错,仅可保证帧传输无比特差错,无传输差错由上层协议保证
PPP协议
早期通信线路质量较差年代,链路层使用一种可靠传输协议HDLC(高级数据链路控制),后来用的少了,取代之的是简单的多的PPP协议(点对点协议,Point-To-Point)
ppp协议保证差错检测
ppp帧格式
帧头4个字段帧尾2个字段
字段含义
帧头帧尾的F表示帧定界符,标志帧的开头和结束。两个F出现时表示这是个空帧,应该丢弃(会不会是没有数据中间是空的,开头和结尾的F连在一起变成两个F)
A和C表示2个固定字符,还没有明确含义
协议字段表示数据类型,2个字节
帧尾的FCS是冗余校验的字串
字节填充
即帧数据中出现帧开始结束标识符等字符时处理逻辑是添加填充字符比如转义字符,虽然填充字符后帧长度会变长,但接受后进行相反处理可还原出原始帧
零比特填充
因为ppp协议帧标志字段比特由连续超过5个1,所以发数据时如果发现至少有5个连续的1则在1后面加一个比特0,可以让数据和标志符区分开,接收方如果发现5个连续的1就把五个连续1后面的位删除
ppp协议工作状态
使用广播信道的链路层
局域网数据链路层
共享信道方法:静态划分(频分,时分,波分等,代价高,不太适用)和动态划分(随机接入和受控接入)