本文主要是介绍数据链路层点对点通信,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
点对点通信
1.当主机H1向主机H2发送数据时,从协议的层次看,数据进入路由器后要先从物理层上升到网络层,在转发表中找到下一跳的地址后,再下到物理层转发出去。
点对点信道的数据链路层在进行通信时的主要步骤如下:
(1)结点A的数据链路层把网络层交下来的IP数据报添加首部和尾部封装成帧。
(2)结点A把封装好的帧发送给结点B的数据链路层。
(3)若结点B的数据链路层收到的帧无差错,则从收到的帧中提取出IP数据报交给上面的网络层;否则丢弃这个帧。
2.三个基本问题:封装成帧、透明传输、差错检测。
封装成帧就是在一段数据的前后部分分别添加首部和尾部,这样就构成了一个帧。接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。
分组交换:所有在互联网上传送的数据都以分组(IP数据报)为传送单位。网络层的IP数据报传送到数据链路层就成为帧的数据部分。在帧的数据部分的前面和后面分别添加上首部和尾部,就构成了一个完整的帧。
透明传输表示无论什么样的比特组合的数据,都能够按照原样没有差错地通过这个数据链路层。
实现透明传输的具体方法是:发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”。而在接收端的数据链路层在把数据送往网络层之前删除这个插入的转义字符。如果转义字符也出现在数据当中,那么解决方法仍然是在转义字符的前面插入一个转义字符。因此,当接收端收到连续的两个转义字符时,就删除其中前面的一个。
差错检测使用循环冗余检验CRC技术来检测计算机网络数据传输是否出现差错。在接收端把接收到的数据以帧为单位进行CRC检验:把收到的每一个帧都除以同样的除数P(模2运算),然后检查得到的余数R。如果在传输过程中无差错,那么经过CRC检验后得出的余数R肯定是0。如果要在数据链路层进行差错检验,就必须把数据划分为帧,每一帧都加上冗余码,一帧接一帧地传送,然后在接收方逐帧进行差错检验。
这篇关于数据链路层点对点通信的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!