精华内容
下载资源
问答
  • 计算机网络d自顶向下方法的传输层部分,TCP可靠传输部分的笔记
    可靠数据传输需要用到的机制:

    1. 自动重传(ARQ):如果报文出错了,需要重传,这需要差错检测、接收方反馈(ack表示成功确认和nak表示失败确认)、重传三部分
    2. 有序到达:需要序号来标识数据包,确认是否是重传报文或者是否乱序到达报文
    3. 定时器:用于限制时延,超时则确认是丢包
    4. 流水线:为了加快传输速率,提高带宽利用率,在流水线中如果出现丢包或者乱序到达有两种应对方法

    a)       GBN(回退N步):只要出现丢包或者乱序到达,以后的数据包都不接收,全部需要重传

    b)       SR(选择重传):出现了丢包或者乱序到达,保留后接收到的数据包,同时提醒发送方重发丢失的数据包

     

    TCP可靠传输的实现:

    1. 实现了自动重传,有ack应答报文,但是没有nak报文(nak时使用重复上一次ack代替,形成冗余ack报文)
    2. 实现了有序到达,用序列号标识一个报文,同时序号不是按“个”计算的,而是按字节计算的。举例来说,相邻的两个TCP报文,各100字节大小,它们的需要不会是0,1,而是0,100
    3. 实现了定时器:丢包的定时器时间设定在TCP当中是一个很有技巧的事情。TCP通过随机检测报文的送达情况获得若干个RTT(往返时间)样本,然后将其加权(新RTT样本的权重比旧RTT样本的更大),然后加上一个RTT偏差(不可能正好一个RTT就回得来,需要一个可容忍的浮动时间),得到超时重传的时间。公式是:

    TimeoutRTT=EstimeedRTT(指数加权移动平均RTT)+4DevRTT(4倍的RTT偏差)

    1. 实现了流水线,当出现丢包或乱序时采取的策略既不是GBN也不是SR,看起来更像GBN一些。
    2. 超时时间计算:每一次确认丢包,TCP认为是网络拥塞,会将下一次的超时时间*2,避免加重拥塞
    3. 重复的ACK报文:即接收到对发送的同一报文的多次ACK报文,这是由于TCP没有否定确认,如果出现数据出错,或者报文乱序到达,只会重复应答最后一次正确接受的报文。TCP处理时认为这就是数据出错、发送数据乱序到达或者丢包的意思,但是网络的拥塞并不严重,此时TCP会启动快速重传机制
    4. 快速重传:即不用等丢包的计时器超时才重发报文,而是在3次冗余ACK之后立即发送冗余ACK确认的下一个序号的报文
    展开全文
  • 可靠传输的原理,TCP可靠传输实现 (1)差错控制:确认和重传机制(超时重传,累积确认) (2)流量控制:滑动窗口(平衡双方的发送接收速度) TCP可靠传输实现: 以字节为单位的滑动窗口 超时重传(超时...

    可靠传输的原理,TCP可靠传输的实现

    (1)差错控制:确认和重传机制(超时重传,累积确认)

    (2)流量控制:滑动窗口(平衡双方的发送接收速度)

    TCP可靠传输的实现:

    1. 以字节为单位的滑动窗口
    2. 超时重传(超时时间主要为加权平均往返时间)
    3. 选择确认

    TCP流量控制:

    1. 利用滑动窗口实现流量控制
    2. 考虑传输效率(最大报文段长度MSS,只要达到MSS就发送报文)

    TCP拥塞控制:

    1. 慢开始:由小到大逐渐增大拥塞窗口数值
    2. 拥塞避免:拥塞窗口cwnd按线性规律缓慢增长
    3. 快重传:接收方每收到一个失序报文段后立即发出重复确认。
    4. 快恢复:当发送方连续收到三个重复确认时,把慢开始门限减半,预防网络拥塞。然后把cwnd值设为慢开始门限减半后的值,然后执行拥塞避免算法。
    展开全文
  • TCP可靠传输实现原理

    千次阅读 2018-03-24 17:03:47
    (这一节提到的可靠传输协议并不是TCP采用的,在这里提到只是为了对后面的TCP可靠传输的讲解起到铺垫的作用)  我们知道,TCP发送的报文段是交给IP层传送的。但IP层只能提供尽最大努力服务,也就是说,TCP下面的...

    (这一节提到的可靠传输协议并不是TCP采用的,在这里提到只是为了对后面的TCP可靠传输的讲解起到铺垫的作用)

           我们知道,TCP发送的报文段是交给IP层传送的。但IP层只能提供尽最大努力服务,也就是说,TCP下面的网络所提供的是不可靠的传输。因此,TCP必须采用适当的措施才能使两个运输层之间的通信变得可靠。

           理想的传输条件有以下两个特点:

    1) 传输信道不产生差错。

    2) 不管发送以多快的速度发送数据,接收方总是来得及处理收到的数据。

           在这样理想的传输条件下,不需要采取任何措施就能实现可靠传输。

           然而实际的网络都不具备以上两个理想条件。但我们可以使用一些可靠的传输协议,当出现差错让发送方重传出现的差错的数据,同时在接收方来不及处理收到的数据时,及时告诉发送方适当降低发送数据的速度,这样一来,本来不可靠的传输信道就能够实现可靠传输了。下面我们从最简单的停止等待协议讲起(运输层并不使用这种协议)。

    停止等待协议

           全双工通信双方既是发送方也是接收方。下面我们仅考虑A发送数据而B接受数据并发送确认。因此A叫做发送方,而B叫做接收方。这里是讨论可靠传输的原理,因此把传送数据单元都称为分组,而并不是考虑数据是在哪一个层次上传送的(运输层传送的协议数据单元叫做报文段,网络层传送的协议数据单元叫做IP数据报。但在一般讨论问题时,都可以把他们简称为分组。)。“停止等待”就是每发送完一个分组就停止发送,等待对方的确认。在收到确认再发送下一个分组。

    1. 无差错情况

          停止等待可用图(a)来说明。图(a)是最简单的无差错情况。A在发送分组M1,发送完后就暂停发送,等待B的确认。B收到了M1就向A发送确认。A在收到了对M1的确认后,就再发送下一个分组M2。同样,在收到B对M2的确认后,再发送M3。

    2. 出现差错

           图(b)是分组在传输过程中出现差错的情况。B接收到了M1时检测出了差错,就丢弃M1,其他什么也不做(不通知A收到有差错的分组)。也可能是M1在传输过程中丢失了,这时B当然什么也不知道。在这两种情况下,B都不会发出任何信息。可靠传输协议是这样设计的:A只要超过一段时间仍然没有收到确认,就认为刚才发送的分组丢失了,因而重传前面的发送过的分组。这就叫做超时重传。要实现超时重传,就在每发送完一个分组时设置一个超时计时器。如果在超市计时器到期之前收到了对方的确认,就撤销自己设置的超时计时器。其实在图(a)中,A为每一个已发送的分组都设置了一个超时计时器,为了简单起见,在图(a)中都省略了。

           这里注意三点:

    第一、A在发送完一个分组后,必须暂时保留已发送的分组的副本(在发送超时重传时使用)。只有在收到相应的确认后才能清除暂时保留的分组副本。

    第二、 分组和确认分组都必须进行编号。这样才能明确是哪一个发送出去的分组收到了确认,而哪一个分组还没有收到确认。

    第三、 超时计时器设置的重传时间应当比数据在分组时传输的平均往返时间更长一些。

    3. 确认丢失和确认迟到

           下图(a1)说明的是另一种情况,B发送的对M1的确认丢失了。A在设定的超时重传时间内没有收到确认,并无法知道是自己发送的分组出错、丢失,或者是B发送的确认丢失了。因此A在超时计时器到期后就要重传M1。现在注意B的动作。假定B又收到了重传的分组M1,这时应采取两个行动。

    第一、 丢弃这个重复的分组M1,不向上层交付。

    第二、 向A发送确认。不能认为已经发送过确认就不再发送,因为A之所以重传M1.就表示A没有收到对M1的确认。

           上图(b1)也是可能出现的一种情况。传输过程中没有出现差错,但B对分组M1的确认迟到了。A会收到重复的确认。对重复的确认的处理很简单:收下后丢弃,B仍然会收到重复的M1,并且同样要丢弃重复的M1,并重传确认分组。

          通常A最终总是可以收到对所有发出的分组的确认。如果A不断重传分组但总是收不打确认,就说明通信线路太差,不能进行通信。

    像上述的这种可靠传输协议常称为自动重传请求ARQ(Automatic Repeat reQuest)。意思是重传的请求时自动进行的,接收方不需要请求发送方重传某个出错的分组。

    停止等待协议一个显著的特点是效率太低,信道利用率太低。我们可以使用下面介绍的连续ARQ协议。

    连续ARQ协议

           连续ARQ协议规定,发送方每收到一个确认,就把发送窗口向前滑动一个分组的位置。下图表示发送方收到对第1个分组的确认,于是把发送窗口向前移动一个分组的位置。如果原来已经发送了前5个分组,那么现在就可以发送窗口内的第6个分组了。

          接收方一般都是采用累积确认的方式,也就是说,接收方不必对收到的分组逐个发送确认,而是在收到几个分组后,对按序到达的最后一个分组发送确认,这就表示:到这个分组分组为止的所有分组都已正确收到了。

           累计确认优点:容易实现,即使确认丢失也不必重传。缺点:不能向发送方反映出接收方已经正确收到所有的分组的信息。

          例如,如果发送方发送了前5个分组,而中间的第3个分组丢失了。这时接收方只能对前两个分组发出确认。发送方无法知道后面三个分组的下落,而只好把后面的三个分组都再重传一次。这就叫做Go-back-N(回退N),表示需要再退回来重传已经发送过的N个分组。可见,当通信线路质量不好时,连续ARQ协议会带来负面影响。

    展开全文
  • TCP可靠传输实现

    千次阅读 2016-05-04 17:09:35
     为方便描述可靠传输原理,假定数据传输只在一个方向上进行,即A发送数据,B给出确认 2.以字节为单位的滑动窗口  TCP的滑动窗口是以字节为单位的。为了便于说明,字节编号取得很小。先假定A收到B发来的确认报...

    1.概述

         为方便描述可靠传输原理,假定数据传输只在一个方向上进行,即A发送数据,B给出确认
    2.以字节为单位的滑动窗口
         TCP的滑动窗口是以字节为单位的。为了便于说明,字节编号取得很小。先假定A收到B发来的确认报文字段,其中窗口是20字节,而确认号是31字节。(表明B期望接收到的下一个序号是31,序号30之前的数据已经收到了)。如图所示。
    • A的发送窗口:
              发送窗口表示:在没有收到B的确认的情况下,可以连续把窗口内的数据发送出去。凡是已经发送过的数据,在未收到确认之前都必须暂时保留,以便超时重传使用。
         发送窗口有如下特点:
              1)发送窗口里面的序号表示允许发送的序号(如31~50)
              2)发送窗口的位置由窗口的前沿和后沿的位置共同确定。发送窗口的后沿可能不动(没有收到确认),或者前移(收到新的确认)。发送窗口的前沿通常是不断的向前移动,但也可能不动。
         现在假定A发送了序号为31-41的数据,如上图所示,图种可以看出要描述一个发送窗口的状态需要三个指针P1, P2, P3。
         小于P1的是已发送并收到确认的部分,大于P3的是不允许发送部分。
         P3-P1 = A的发送窗口(又称为通知窗口)
         P2-P1 = 已发送但尚未收到确认的字节数
         P3-P2 = 允许发送但尚未收到的字节数(又称为可用窗口或有效窗口)
    • B的接收过程:
         B的接收窗口大小为20。在接收窗口外面,到30号为止的数据均发送过确认并交付主机使用,因此B不再保留(之前的数据)。
         如图所示,B收到了32和33的数据。这些数据没有按序到达,因为序号为31的数据没有收到。由于B只能对按序到达的数据中的最高序号给出确认,因此B的发送的确认号仍然是31,而不能是32或33。现在假定B收到序号为31的数据并把序号为31-33的数据交付给主机,然后B删除这些数据。接着把接收窗口向前移动3个序号,同时给A发出确认。其窗口值仍未20,但确认号34,表明B已经接收到序号33为止的数据。而B收到的37 38 40的数据没有按序到达,先暂存在接收窗口中。
         如果按照以上的方式进行发送数据。当发送窗口已满,可用窗口减小到0,因此发送停止。如果发送窗口内所有数据都正确到达B,而发出的确认由于网络问题没有到达A,为保证传输,此时A只能认为B还没有收到这部分数据。于是A经过一段时间过(由超时计时器控制)重传这部分数据,直到收到B的确认为止。
    3.缓存机制
         发送方的应用进程把字节流写入了TCP的发送缓存,接收方的应用进程从TCP的接受缓存中读取字节流。下面进一步谈论窗口与缓存的关系。注:缓存空间和序号空间都是有限的并且循环使用的。
    • 发送缓存和发送窗口
         发送缓存用来暂时存放:1.发送应用程序传送给发送方TCP准备的数据2.TCP已发送但尚未收到确认的数据。
         发送窗口通常只是发送缓存的一部分。已被确认的数据应当从发送缓存中删除,因此发送缓存与发送窗口的后沿是重合的。发送应用程序必须控制写入缓存的速率,不能太快,否则发送缓存就会没有存放数据的空间。
    • 接收缓存与接收窗口
         接收缓存用来暂时存放:1.按序到达的,但尚未被接收应用程序读取的数据。2,未按序到达的数据。
         如果收到的分组检测出有差错,则要丢弃。如果接收应用程序来不及读取收到的数据,接收缓存最终就会被填满。使接收窗口减小到0.反之,接收应用程序能够及时从接收缓存中读取收到数据,接收窗口就会变大,但最大也不能超过接收缓存的大小。
    4.超时重传的时间选择
         TCP每发送一个报文段,就对这个报文段设置一次计时器。只要计时器设置的重传时间到还没有收到确认,就要重传这个报文段。由于数据链路层和运输层的往返实验概率分布存在很大差异,因此有必要选择合适的超时重传时间。
         报文段的往返时延是指收到确认报文的时间与每一个报文段发出的时间之差。报文段的平均往返时延RTT是由各个报文段的往返时延样本加权平均得出来的。计算公式为:
         平均往返时延RTT=α×(旧的RTT)+(1-α)×(新的往返时延样本),1 ≤ α < 1 典型的值为α为7/8.
     
         即使有一个好的RTT,要选择一个合适的超时重传时间RTO(Restransmission Time out)仍然不是一个容易的事情。, 显然RTO要大于RTT。其计算公式为 RTO = β × RTT, β > 1, 推荐是2
     
    5.选择确认SACK
         若收到的报文段无差错,只是未按序号,中间还缺少一些序号的数据,采用选择确认的方法来传送缺少的数据,而不重传已经正确接收到的数据。
         用一个例子来说明(Selctive ACK)工作原理。如图所示,接收放收到了前面的字节流不连续的两个字节块。如果这些字节的序号都在接收窗口内,那么接收方就先收下这些数据,但要把这些信息准确的告诉发送放,使发送方不要在重复发送这些已经收到的数据。
         
         TCP首部没有哪个字段能够提供上述这些字节快的边界信息。如果要使用选择确认,那么在建立TCP连接时,就要在TCP首部的选项上加上“允许SACK”的选项。
    转载自 点击打开链接
    展开全文
  • UDP实现TCP可靠传输

    千次阅读 2018-10-22 11:30:12
    TCP(TransmissionControl Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。 使用超时重传、数据确认、滑动窗口等方式确保数据包被正确地发送至目的端 UDP是(User Datagram Protocol...
  • TCP可靠传输实现——超时重传的时间选择
  • 在局域网内实现TCP可靠传输的源代码 自己编写 可靠安全
  • TCP 可靠传输机制详解

    万次阅读 多人点赞 2019-08-31 20:23:44
    TCP可靠传输 TCP流量控制 TCP拥塞控制 面试相关问题 前言 本篇博文主要是为了复习TCP协议而做的总结。其中很多内容都是来自于《计算机网络》,《Linux网络编程》,《TCP/IP详解》等书籍。首先可以从TCP协议思维...
  • TCP可靠传输及流量控制实现原理

    千次阅读 2019-03-26 10:17:00
    一、为什么TCP可靠传输?  1. 停止等待协议 通过确认与超时重传机制实现可靠传输 在发送完一个分组后,必须暂时保留已发送的分组的副本。 分组和确认分组都必须进行编号。 超时计时器的重传时间应当比...
  • 26-tcp可靠传输——停止等待协议

    千次阅读 2018-04-30 18:39:39
    1. tcp可靠传输   通过前面的学习可知,网络层传输数据时是尽最大努力传输到目的地,并不保障数据的可靠传输,对于网络拥塞,延迟,数据丢失等问题没有采取有效的措施。因此我们需要一种数据可靠传输的通信方式,...
  • TCP可靠传输详解

    千次阅读 2016-10-03 00:24:13
    TCP提供了可靠传输服务,这是通过下列方式提供的: 分块发送:应用数据被分割成TCP认为最适合发送的数据块。由TCP传递给IP的信息单位称为报文段或段(segment)定时确认重传:当TCP发出一个段后,它启动一个...
  • TCP可靠传输、流量控制和拥塞控制的实现可靠传输:对于收到的请求,给出确认响应超时重传流量控制: 所谓流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收。利用滑动窗口实现流量控制。拥塞控制:...
  • TCP如何实现可靠传输

    2019-08-24 20:30:23
    TCP的特点:面向字节流、面向连接、可靠传输 可靠传输实现: 1.确认应答机制:对收到的信息给发送方发送报文确认收到数据 ...但是TCP为了实现可靠传输做了一些不必要的牺牲,于是作为弥补,增加了...
  • TCP协议作为一个可靠的面向流的传输协议,其可靠性和流量控制由滑动窗口协议保证,而拥塞控制则由控制窗口结合一系列的控制算法实现。 一、滑动窗口协议  关于这部分自己不晓得怎么叙述才好,因为理解的部分更多,...
  • TCP可靠传输&流量控制&拥塞控制

    千次阅读 2016-01-14 14:22:14
    摘要 TCP 可靠性算法解释,TCP 可靠性传输的理论知识LwIP协议栈推荐 ...TCP可靠传输TCP可靠传输...停止等待协议4.TCP可靠传输实现5.滑动窗口图解TCP拥塞控制和流量控制的差别TCP流量控制TCP流量控制原理TCP拥塞
  • TCP 可靠传输的工作原理

    千次阅读 2018-10-19 11:33:06
    TCP 可靠传输的工作原理 ARQ(Automatic Repeat-reQuest)(自动重传请求) 停止等待ARQ协议 连续ARQ协议   停止等待ARQ协议 全双工通信的双发既是发送方也是接收方。下面为了讨论问题的方便,我们...
  • 27-tcp可靠传输——连续ARQ协议

    千次阅读 2018-05-01 09:01:01
      前面我们所说的tcp可靠传输停止等待协议是每发送一个分组就停止发送,等待确认后再发送下一个分组,这种传输协议虽然实现了可靠传输,但是因为每发一个分组就要确认一次,使通信效率降低了,而连续ARQ协议是停止...
  • TCP协议如何实现可靠传输

    千次阅读 2018-03-18 13:23:55
    1. 可靠传输的工作原理————停止等待协议 1. 使用确认和重传机制,我们就可以在不可靠的传输网络上实现可靠的通信 2. 这种可靠传输协议常称为自动重传请求ARQ(Automatic Repeat reQuest)。 3. ARQ表明...
  • TCP可靠传输

    千次阅读 2017-05-22 21:14:05
    TCP可靠传输
  • TCP发送的报文段是交给IP层传送的,但IP层只能提供尽最大努力交付的服务,也就是说,TCP下面的网络所提供的是不可靠传输。因此,TCP采用了一些适当的措施来提供可靠传输,使得两个传输层直接的通信变得可靠。 -...
  • TCP可靠数据传输是如何实现的: 1.应用层向传输层发送数据流 2.TCP把数据流分成适当长度的报文段 3.TCP为了保证不丢包以及按序接受,给每个字节一个序号 4.TCP把结果报包给网络层 5.接收端对于成功的接收会...
  • TCP、UDP的区别以及TCP如何实现可靠传输 1,TCP(Transmission Control Protocol): TCP充分实现了数据传输时各种控制功能,可以进行丢包的重发控制,还可以对次序乱掉的分包进行顺序控制。而这些在UDP中都没有。此外...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 140,947
精华内容 56,378
关键字:

tcp可靠传输的实现