第3章数据链路层数据链路层的两种信道点对点信道:使用一对一的点对点通信方式实现协议是PPP(Point-to-PointProtocol)广播信道:使用一对多的广播通信方式实现协议是CSMA/CD(CarrierSenseMultipleAccesswithCollisionDetection)3.1.1链路、数据链路和帧链路(link):一条点到点的物理线路段,中间没有任何其他交换结点。链路是一条路径的组成部分数据链路(datalink):在物理线路上加上通信协议控制数据的传输。最常用的方法是使用适配器(即网卡)来实现协议的硬件和软件。把实现协议的硬件和软件加到链路上,构成数据链路。3.1使用点对点信道的数据链路层IP数据报1010……0110帧取出数据链路层网络层链路结点A结点B物理层数据链路层结点A结点B帧(a)(b)发送帧接收链路IP数据报1010……0110帧装入数据链路层传送的是帧数据链路层像个数字管道在两个对等的数据链路层之间画出一个数字管道,在数字管道上传输的数据单位是帧。结点结点帧帧数据链路层在网络互连中的地位广域网广域网主机H1主机H2路由器R1路由器R2路由器R3电话网局域网链路层应用层运输层网络层物理层链路层应用层运输层网络层物理层链路层网络层物理层链路层网络层物理层链路层网络层物理层R1R2R3H1H2从层次上来看数据的流动广域网广域网主机H1主机H2路由器R1路由器R2路由器R3电话网局域网链路层应用层运输层网络层物理层链路层应用层运输层网络层物理层链路层网络层物理层链路层网络层物理层链路层网络层物理层R1R2R3H1H2仅从数据链路层观察帧的流动3.1.2数据链路层解决的问题1.封装成帧:在网络层交付下来的数据前后分别添加首部和尾部,构成帧。首部和尾部的作用是进行帧定界。2.透明传输:如何在收发两端透明传输数据帧。3.差错检测:检测传输过程中出现的差错1.封装成帧帧结束帧首部IP数据报帧的数据部分帧尾部MTU数据链路层的帧长开始发送帧开始SOH装在帧中的数据部分帧帧开始符帧结束符发送在前EOT用控制字符进行帧定界帧定界使用帧定界符:SOH(StartOfHeader)、EOT(EndOfTransmission)发送端:在网络层交付下来的数据前后分别添加首部和尾部,构成链路层数据帧。然后在数据帧的前后分别添加开始和结束定界符,交付到物理层。接收端:收到物理层上交的比特流后,根据开始和结束定界符,识别帧的开始和结束。2.透明传输SOHEOT出现了“EOT”被接收端当作无效帧而丢弃被接收端误认为是一个帧数据部分EOT完整的帧发送在前解决方法:字节填充发送端的数据链路层在数据中出现控制字“SOH”或“EOT”的前面插入一个转义字符“ESC”(十六进制编码是1B)接收端的数据链路层在将数据送往网络层之前删除插入的转义字符。如果转义字符也出现数据当中,在转义字符前面插入一个转义字符。当接收端收到连续的两个转义字符时,就删除前面的一个。SOHSOHEOTSOHESCESCEOTESCSOHESCESCESCSOH原始数据EOTEOT经过字节填充后发送的数据字节填充字节填充字节填充字节填充发送在前帧开始符帧结束符用字节填充法解决透明传输的问题SOH3.差错检测为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。在传输过程中可能会产生比特差错:1可能会变成0,0也可能变成1。在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率BER(BitErrorRate)。循环冗余检验的原理发送在前数据00…0(n位)除法器FCS(n位)得出余数发送方数据FCS除法器余数(n位)得出余数接收方数据FCS(n位)若余数为0则接受;否则丢弃。(n位)在数据链路层传送的帧中,广泛使用了循环冗余检验(CRC)的检错技术。发送端:在数据分组的后面添加供差错检测用的n位冗余码一起发送。接收端:对收到的帧进行CRC检验。余数为0,则没有差错,接受(accept)。否则丢弃。冗余码的计算用二进制的模2运算进行2n乘M的运算,这相当于在M后面添加n个0。用得到的数除以事先选定好的长度为(n+1)位的除数P,得出商是Q而余数是R余数R比除数P少1位,即R是n位。举例要发送的数:M=101001,被除数是:2nM=101001000(假设添加3位余数)设选定的除数P=1101(n=3)模2运算的结果是:商Q=110101,余数R=001把余数R作为冗余码添加在数据M的后面发送出去。则发送的数据是:2nM+R即:101001001110101←Q(商)P(除数)→1101101001000←2nM(被除数)11011110110101110000111011010110000011001101001←R(余数),作为FCS接收端对收到的每一帧进行CRC检验(1)若得出的余数R=0,则判定这个帧没有差错,接受(accept)。(2)若余数R0,则判定这个帧有差错,丢弃。这种检测方法并不能确定究竟是哪一个或哪几个比特出现了差错。帧校验序列FCS在数据后面添加上的冗余码称为帧校验序列FCS(FrameCheckSequence)。循环冗余检验CRC和帧检验序列FCS不等同。CRC是一种常用的检错方法,而FCS是添加在数据后面的冗余码。FCS可以用CRC这种方法得出,但CRC并非用来获得FCS的唯一方法。注意用循环冗余检验(CRC)技术只能做到无差错接受(accept)。“无差错接受”指:“凡是接受的帧(即不包括丢弃的帧),都能以非常接近于1的概率认为这些帧在传输过程中没有产生差错”。要做到“可靠传输”(即发送什么就收到什么)就必须再加上确认和重传机制。练习要发送的数据为1101011011,采用CRC的生成式是P(X)=X4+X+1。求应添加在数据后面的余数。若数据在传输过程中最后两个1都变成了0,接收端是否能发现?在数据传输过程中,若接收方收到发送方送来的信息为10110011010,生成多项式为G(x)=x4+x3+1。要发送的数据是什么?请判断接收方收到的数据是否正确?(请写出判断依据及推演过程)