停止-等待协议的弊端
发送方大部分时间都在等待接收方的回复。。。信道利用率很低
一个改善方法:流水线技术
对于发送方来说,窗口内后面的“2,3,4,5,6”可以直接发送也可以选择暂时不发送
GBN发送方必须响应的三件事
1.上层的调用
上层要发送数据时,发送方先检查发送窗口是否已满,如果未满,则产生一个帧并将其发送;如果窗口已满,发送方只需将数据返回给上层,暗示上层窗口已满。上层等一会再发送。(实际实现中,发送方可以忽略这些数据,窗口不满时再发送帧)
2.收到了一个ACK
GBN协议中,对n号帧的确认采用累计确认的方式,标明接收方已经收到n号帧和它之前的全部帧
3.超时事件
协议的名字为后退N帧/回退N帧,来源于出现丢失和时延过长帧时发送方的行为。就像在停等协议中一样,定时器将再次用于恢复数据帧或确认帧的丢失。如果出现超时,发送方重传所有以发送但未被确认的帧。
GBN接收方必须要做的事
1.如果正确收到n号帧,并且按序,那么接收方为n帧发送一个ACK,并将该帧中的数据部分交付给上层。
2.其余情况都丢弃帧,并为最近按序接收的帧重新发送ACK。接收方无需缓存任何失序帧,只需要维护一个信息:expectedseqnum(下一个按序接收的帧序号)
滑动窗口可以无限长嘛?
若采用n个比特对帧编号,那么发送窗口的尺寸Wt应满足:1<=Wt<=2^n-1.因为发送窗口尺寸过大,就会使得接收方无法区别新帧和旧帧。
GBN协议重点总结
GBN协议性能分析
为了解决后退N帧协议中原来已经正确发送得数据帧也要重传得问题。
解决办法:设置单个确认,同时加大加收窗口,设置接收缓存,缓存乱村到达得帧。
SR发送方必须响应的三件事
1.上层调用:
从上层收到数据后,SR发送方检查下一个可用于该帧的序号,如果序号位于发送窗口内,则发送数据帧;否则就像GBN一样,要么将数据缓存,要么返回给上层之后再传输。
2.收到了一个ACK
如果收到ACK,加入该帧号在窗口内,则SR发送方将那个被确认的帧标记为已接受。如果该帧序号是窗口的下界(最左边第一个窗口对应的序号),则窗口向前移动到具有最小序号的未确认帧处。如果窗口移动了并且有序号在窗口内的未发送帧,则发送这些帧。
3.超时事件
每个帧都有自己的定时器,一个超时事件发生后只重传一个帧。
SR接收方要做的事
窗口内的帧来者不拒:SR接收方将确认一个正确接收的帧而不管其是否按序。失序的帧将被缓存,并返回给发送方一个该帧的确认帧(收谁确认谁),直到所有帧(即序号更小的帧)皆被收到为止,这时才可以将一批帧按序交付给上层,然后向前移动滑动窗口。
如果收到了窗口序号外(小于窗口下届)的帧,就返回一个ACK。其他情况,就忽略该帧。
窗口长度可以无限嘛?
还是接收端无法区分新帧旧帧的问题
发送窗口最好等于接收窗口(大了会溢出,小了没意义)
Wtmax=Wrmax=2^(n-1) 注意:和GBN是不同的
SR协议重点总结
1.对数据帧逐一确认,收一个确认一个
2.只重传出错帧
3.接收方有缓存
4.
点对点链路
两个相邻节点通过一个链路相连,没有第三者。
应用:PPP协议,常用于广域网
广播式链路
所有主机共享通信介质。
应用:早期得总线以太网、无线局域网,常用于局域网。
典型拓扑结构:总线型、星型(逻辑总线型)
像下面对讲机这个例子,如果AB同时说话就会有冲突,导致双方都无法说话;链路层就要解决这种冲突问题
介质访问控制得内容就是,采取一定得措施,使得两对节点之间得通信不会发生相互干扰得情况。
信道划分介质访问控制:将使用介质得每个设备与来自同一个信道上得其他设备的信道隔离开,把时域和频域资源合理地分配给网络上的设备。
当A.B.C主机都休息时,D仍要每等待3个时间片才能发数据,这样信道利用率就很低,所以有下面的改进方法