我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:欢乐棋牌下载手机版 > 高速数据传输 >

TCPIP 之 可靠数据传输原理

归档日期:07-11       文本归类:高速数据传输      文章编辑:爱尚语录

  可靠数据传输对于应用层、传输层、链路层都很重要,是网络领域的Top10问题。

  对于传输层来说,由于相邻的网络层是不可靠的,所以要在传输层实现可靠数据传输(rdt)就比较复杂。

  第一种思路当然是纠正错误,但是这样实现的难度和代价都比较大,在计算机网络中,我们一般都会采取第二种思路

  第二种思路就是直接重传,如果我们发现了错误,很自然,那我们就重传一次,直到接受方收到正确的分组。

  其实处理起来也很简单,就是向接收方发送一个信号,代表出现错误,如果没错误就发送一个信号,表示没错误。

  我们看rdt2.0有什么问题,我们知道确认信号也需要通过信道传播,那么如果ack,nck的信号发生了错误呢?发送方应该怎么处理?

  但是这里,又有一个问题,接收方怎么知道发送方这次新传过来的是新的报文段还是因为ack出错而重传的报文段呢?显然我们需要区分,上一个报文段和当前的报文段,我们给报文段编写好序号就可以了,而且只需要0,1两个序号,一个表示上次的报文段,一个表示新接受的。

  这样接收方如果收到0,就知道这次不是新的报文段,可能是上次ack出错了,发送方无法确认,就重传了上次的报文段,所以接收方需要丢掉这个报文段,然后再次传一次ack确认信号,如果收到的是序号为1的报文段,则接收方直接接受就可以了。

  到rdt2.2为止,我们基本解决了“不错”的要求,即报文和确认信息在信道上发生了错误的话,我们都可以很好的解决,解决的方法其实就是重传

  我们假设这时候ack不是错误而是直接丢了,那么发送方就会无限制的等着接收方的ack,同时接收方也会无限制的等着发送方的新报文。

  就是说发送方发了一个数据包,就停下来了,直到得到来自接收方的确认才发送第二个,这样就造成了很多的空余时间都在空闲等待。

  为了改进停等机制所造成的效率低下,我们可以采用流水线的机制,一次发送多条报文段,充分利用空闲的时间

  进一步的,我们采用滑动窗口协议,顾名思义,就是发送给定窗口大小的报文数,随着报文被接收确认,同时窗口可以动态的向前滑动

  超时Timeout(n)事件: 重传序列号大于等于n,还未收到ACK的所有分组

  接收方是没有缓存的,所以接收方对于乱序到达的分组直接丢弃,并且重新发送目前为止接收到的分组中序列号最大的按序到达的分组

  由于GBN接收方没有缓存,对于非按序的分组直接丢弃,就会造成很多到达的分组由于顺序乱了,却白发了,需要再次重新发送。

  显然为了提高效率,我们可以在接收方设置缓存,对于未按序达到的分组,先存起来,而不是直接丢弃。

  从图中我们可以看到,接收方是动态移动滑动窗口的,只有当窗口部分前面的全部正确接受并确认了,才向前移动。

  传输层-TCP, TCP头部结构 ,TCP序列号和确认号详解 TCP主要解决下面的三个问题 1.数据的可靠传输。发送方如何知道发出的数据,接收方已经收到。 现实生活中,我们在打电话的时候,当我们自己根对方说了一句话或者一段话之后,我们都会等待对方的回应,譬如她们会回答...

  个人认为,Goodboy1881先生的TCP /IP 协议详解学习博客系列博客是一部非常精彩的学习笔记,这虽然只是他个人的笔记,但是这个系列的博客对我们这些读者具有非常大的启迪作用。 我想,这一系列的博客对于我们这些读者更大的意义在于:这可以当作我们去阅读、学习《TCP/I...

  1.这篇文章不是本人原创的,只是个人为了对这部分知识做一个整理和系统的输出而编辑成的,在此郑重地向本文所引用文章的真正作者-----CSDN 博客-Goodboy1881先生致以我崇高的敬意和十二分的感谢2.转载声明:本文虽然不是本人100%原创,但也是辛辛苦苦整理的,可以...

  TCP/IP协议 作者:xinyuans 本文为参考TCP/IP详解卷一,某些知识点加上了作者自己的理解,如有错误,欢迎指正,可以联系我! TCP包格式和IP包格式如下: TCP的正常建立与关闭 建立连接 TCP协议提供可靠的面向连接服务,采用三次握手建立连接。 第一次握手...

  20.1 引言 在第15章我们看到TFTP使用了停止等待协议。数据发送方在发送下一个数据块之前需要等待接收对已发送数据的确认。本章我们将介绍TCP所使用的被称为滑动窗口协议的另一种形式的流量控制方法。该协议允许发送方在停止并等待确认前可以连续发送多个分组。由于发送方不必每发...

  其实想过很多种我和你之间的不可能,你不是我喜欢的类型,你不够高,不够帅,可是在高三最后一年,我还是喜欢上了你。 发现自己喜欢你,是在你要换座位的时候,想到以后不能每隔四个星期和你同桌一次,心里就莫名失落,后来知道不是莫名,我就是喜欢你。 但是我没说出来,后来上了大学,你即使...

  离2018年还有1个月,不如来「 楼+ 」参加Python实战,在2018成为Python工程师! 「 楼+ 」Python实战 第四期 开放报名啦!! 「 楼+ 」是实验楼建立以来,推出的最重量级的产品,如果你还不知道「 楼+ 」,那么快戳链接了解吧; 如果你想学Pyth...

  title: AFN为什么添加一条常驻线tags: AFN 的做法是把网络请求的发起和解析都放在同一个子线程中进行,但由于子线程默认不开启 runloop,它会向一个 C语言程序那样在运行完所有代码后退出线程。而网络请求是...

本文链接:http://doctor-7.com/gaosushujuchuanshu/134.html