首页 > 编程知识 正文

数据链路层层协议有哪些,协议负责数据的可靠传输

时间:2023-05-06 18:07:34 阅读:178724 作者:640

可靠性传输1 .差错控制发送侧发送数据帧,发送侧发送1的情况下,接收侧接收0。

)检查接收方如果在帧检查中接收到的帧没有问题,则向发送方发送肯定确认,检查该数据帧,当发现该帧有问题时,一方丢弃该数据帧,另一方丢弃发送方接收到的数据

)检错和纠错检错是当数据帧的传输中被发现问题的时候,丢弃所接收的数据帧;纠正是当在接收方接收的数据帧中被发现问题的时候,进行最常用的校验码

重发是在发送侧设置计时器,在发送侧发送数据时定义时间,在发送侧发送数据后的计时器时间内发送侧接收到了确认响应的情况下,发送侧认为接收侧接收到了数据,发送侧在计时器内未接收到来自接收侧的确认消息

)3)帧号码一个帧中包含有数据的真实数据、帧的校验码、帧的号码、校验码、校验信息、帧头、帧结束。 接收方在接收到帧的时候向发送方发送确认消息,该消息也有可能中途丢失。 在此情况下,在计时器达到时间的时间点,发送侧再次发送帧。 此时,为了防止帧重复接收,数据帧必须包含表示数据帧号码的号码。 在接收时,接收方也必须发送发送方自己已接收到该帧,因此数据帧也必须包含用于识别接收方已接收到该数据帧的确认号码。

2 .流量控制发送端发送数据的速度太快,接收端接收数据的速度太慢,发送端需要降低自己的发送速度。 如果发送方发送数据的速度非常快,而接收方接收数据的速度特别快,则在接收方设置缓冲区,当缓冲区达到一定限度时,接收方会向发送方发送消息,要求停止发送。

基本数据链路协议wait_for_evet(event )

其中,参数event是应该等待的事件

各层是对应的过程,它们处于等待状态。 对于发送方来说,网络层有要传递到数据链路层的数据,对应于数据链路层的过程等待传递网络层准备的数据。 然后数据链路层封装数据并传递到物理层。 物理层发送数据。 对于接收方来说,数据链路层总是准备物理层来传递数据。 然后数据链路层封装数据并传递给网络层。

1 .为了简化无限制的单协议(1) 1a和b之间的信道传输没有错误,在传输中不需要进行错误检查

)在简化后2 a和b间的传输中接收侧不能无限地进行数据的接收

因此,有了上述两个简化,对于数据链路层来说,只需要进行数据的封装和上下层之间的交换就可以了,其他的任务就不用理会了。 发送方只需要发送物理层数据。 由于数据链路层需要在每次询问网络层中是否有数据时自己发送,如果没有,则继续dengdai,如果有数据,则需要自己发送,所以从wait_for_event这个函数中退出

//发送方的voidsender1(VOD ) { frame s; 数据包缓冲器; while(ture ) from_network_layer ) buffer; s.info - buffer; //数据链路层将从网络层传来的数据作为自己的数据部分放入info中,封装帧to_physicl_layer(s ); //数据链路层将自己的帧作为参数传递到物理层}}对于接收端来说,接收端只需要继续等待,物理层向自己发送数据时,接收端直接接收数据,对数据进行解分组并发送到上面的网络层

//收件人的voidreceiver1(void ) { frame r; event_type event; while(ture ) wait_for_evnet ) event; //等待物理层向自己发送数据的from_physical_layer(r ); //解包从物理层给出的数据to_network_layer(r.info ); //将解开数据包的数据发送到网络层}2.单次停止-等协议,由于接收方接收数据的能力有限,发送方无法继续发送信息。 发送端发送完数据后停止,等待接收端给自己发送消息,接收端接收到数据后,处理该数据,处理完数据后,接收端将消息发送给发送端,发送端通知现在数据处理完成后发送此时

//发送方的voidsender2(VOD ) { frame s; 数据包缓冲器; while(ture ) from_network_layer ) buffer; s.info - buffer; //数据链路层将从网络层传来的数据作为自己的数据部分放入info中,封装帧to_physicl_layer (

amp;s);//数据链路层将自己的帧作为参数传给物理层 wait_for_event(&evet);//发送方等待接受方给自己一个信号告诉自己可以继续发送数据了 }} //接收方void receiver2(void){ frame r; event_type event; while(ture) { wait_for_evnet(&event);//等待物理层给自己发送数据 from_physical_layer(&r);//将物理层给出的数据进行解包 to_network_layer(&r.info);//把解包的数据送给网络层 to_physical_layer(&s);//给发送方发送一个信号, 这个信号也是一个帧 }} 3. 有噪声的信道

在协议二的基础上加上一个定时器. 同时也有差错检验. 对于发送方必须有一个时间限制,当定时器时间已经到的时候, 接受方还没有给自己一个确认信号, 此时发送方就认为接受方没有接收到帧, 对于接受方而言, 在收到数据后将数据进行处理, 处理完数据后就需要在定时器的时间范围内给发送方一个信号, 告诉接受方自己接受到数据. 同时对于发送方而言, 为了防止帧的重复发送, 它必须有一个帧的序号, 来记录下一个发送的帧的序号, 而对于接受方为了防止接收帧的重复, 此时接受方就需要有一个帧的序号来记录下一个要接收帧的序号. 因此用一个比特位就可以记录帧的序号. 发送方发送一个 1 号帧, 接收方等待接收 1 号帧, 接受方接收到 1 号帧的时候就发送一个确认等待接受 0 号帧, 此时发送方再发送一个 0 号帧, 接收方等待接收 0 号帧, 接收方接收到 0 号帧的时候就发送一个确认信号等待接收 1 号帧. 同时协议三增加一个应答号, 应答号用来表示当前收到的是哪个帧.帧的序号是发送方发送的帧的序号, 一个比特位就好了, 应答号是接收方接收到的帧的序号, 只需一个比特位.

4. 双向传输

当接收方接收到数据后对其进行处理, 然后当它要将数据发送给上面的网络层的时候会给发送方发送一个确认信号, 而在此过程中这个信号每次都会被丢失, 此时接受方就会因为接受不到确认信号且定时器已经到达时间, 此时发送方会不断地发送重复帧, 接受方会不断地将接受到的重复帧扔掉, 此时系统会陷入死锁状态.
为了提高信道的利用率, 我们采用两条信道来解决发送方和接受方的通信. 对于发送方, 当发送方发送一个数据帧的时候, 就将它所发送的帧的类型也包括在这个帧中. 假如两个进程 A 和 B, 当 A 向 B 发送数据帧的时候, 在这个数据帧的首部加上一个帧的类型, B 接受到 A 发来的数据帧的时候就先检查数据帧的类型, 当 B 检查该数据帧的时候, 发现这是一个数据帧的时候, 此时就将这个数据帧交给上面的网络层, 再向 A 发送一个应答帧, 当 A 接收到这个帧的时候就先检查帧的类型, 当发现这是一个应答帧的时候就说明发给对方的帧对方成功接受, 此时就从网络层取下一个数据进行发送.

5. 滑动窗口

包含楼量控制, 差错处理. 每一方都有一个发送窗口, 发送窗口表示发送一次最多发送多少数据对方可以接收. 每一个接收方有一个接收窗口, 这个窗口的大小可以根据发送方的不同设定自己一次可以接收数据的接受量.

(1)滑动窗口原理(设 Wt = 5, Wr = 3)


发送方发送数据时一次发送 5 个数据帧(0 ~ 4)之后就停下来, 接受方接受数据的时候一次接受多个, 其中它接受一个数据初处理一个数据, 接受到第三个数据的时候就处理第三个数据, 当处理完第三个数据(2)的时候给发送方一个确认消息2, 此时发送方就知道接收方接受到了第三个数据了, 于是下次从 2 号数据开始发送.

(2) 一维滑动窗口协议

A 发送一个数据帧发送窗口满了, 此时就必须等待 B给 A 发送确认消息, B 接受到一个数据帧后等给 A 发送一个确认消息,A 接受到这个确认消息后知道 B 成功接受到了 自己的消息, 于是发送下一个数据帧, 到了 B 之后, B 发送一个数据给 A 时, 此时 B 的窗口已满, 于是它就停下来等待 A 的确认消息, A 接受到这个消息后就发送一个确认消息给 B, 此时 B 就知道 A 成功接受到了消息
A 发送一个帧后 B 接受到一个帧, 然后发送一个确认消息给 B, B接收到确认消息后发送

(3)后退 n 帧协议

发送方有大于 1 个的发送窗口, 接受方只有一个接受窗口. 发送端每次发送数据帧的时候一次发送一批数据帧. 当有一个帧出错, 将后面的所有的帧全部重发. 加入发送方发送 0, 1, 2, 3, 4, 5, 6 七个帧, 接受方此时接受一个 0 号帧, 处理完 1 号帧后就发送一个0 号确认消息, 此时发送方滑动窗口转过就可以发送第八个数据帧了, 接着接受方接收到了一个 1 号帧, 处理 1 号帧, 处理完之后发送一个 1 号确认消息给 发送方, 发送方就可以发送第九个数据帧了, 但是此时 2 号帧丢失了, 此时丢失的这个帧就必须等到发送方的定时器时间到的时候发送方才知道对方没有接受到 2 号帧, 于是就将2号后面所有的数据帧进行重新发送. 信道利用率较低, 适用于出错率较低的信道. 是一种实用的 PPP 可靠传输. 当数据帧的序号是 n 位的时候, 此时发送方的发送窗口是 2 ^ n - 1 个滑动窗口, 接收方的窗口数是 1

(4) 选择性重发

在后退 n 帧协议上的基础上增加的功能是对于出错的数据帧, 刚才已经发过的数据帧不用重新发送, 只对出错的数据帧进行重新发送.发送窗口大于 1, 接受窗口大于 1.

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。