TCP如何实现可靠的传输?
一个滑动窗口和连续的ARP协议,连同流量控制和拥堵管理,为可靠的TCP/IP传输提供了基础:
- 传输信道无差错
- 无论发送者提供数据的速度有多快,接收者总是能够处理数据(由于累积确认、加班重新传送、冷凝控制和三个模块得到保证)。
幻灯片窗口和随后的 ARQ 方法
停止等待ARQ协议
- 发送后停止发送每组, 请求对方确认 。 请在获得确认后发送下一组 。
- (b) 终止等待协议对信徒没有多大用处,因为只要确定信息没有正确到达,发送者发出的每条电文都必须和预期得到确认。
可以分为四种情况
无差错情况

在没有错误的情况下,如图(a)所示,
- 发送一个 M0 组, 然后在发送后停止发送, 等待 B 确认 。
- B接收M0,与A确认
- 在收到M0确认后,将释放下列M1组。
- 同样,在得到B对M1的确认后,发送M2。
超时重传
如上图所示,这是发生传输错误时费时的再传送过程。
出现差错分为两种:
- 在传输过程中,M1失踪。
- 当M1收到时,发现一个错误,M1被丢弃。
B 在任一情况下都不会向A发送信息。
为解决上述情况中提出的问题,建议采用下列可靠的传播技术:
- 只要A在很长一段时间内仍未证实,就认为最近转交的小组已丢失,因此重新发送以前发送的小组,即所谓的加班重新传送程序。
- 为了能够重复超时,在集团发送之前就安装了定时器,如果在定时器结束前收到另一方的确认,则已建立的定时器被撤回。
必须保证以下几点:
- 一旦A提交集团,必须暂时保存集团的复制件,只有收到确认后才能清除集团的复制件。
- 分组和确认分组需要编号。
- 重新传送的时间框架应配置为超过该组返回数据的时间。
确认丢失
接收指示发送人发送确认框架1,但在传输过程中丢失了确认框架,而接收方没有在一定时间内获得确认框架,而是在一段时间内重复确认框架。

看个例子:

- 如上图中所示,假设B的M1确认书不见了然后,A没有在为重新发送过期电文规定的时限内获得确认。原因有很多,最有可能传播的是自己的群体错误或损失。或者 B 未能发送确认书 。因此,定时器一旦结束,A重复M1。
- 现在重点应放在B的行动上。
- 删除此重复的组 M1, 不交付到更高级别 。
- 向A.发送确认函。 假定已发送确认函是不安全的,因为A再发送的M1表示A没有收到M1确认函。
确认迟到
- 当发件人发送确认框架时,它返回给发件人,确认框架在一段时间内为0;当接收方收到0框架时,它发现它已经收到0框架,放弃重复的0框架,并以确认框架返回给发件人。
- 同样,如果发件人收到0的确认框架,随后0的确认框架不予考虑。

看个例子:

- 如图(b)所示,假设在传送过程中没有发生错误,则延迟收到M1 B组的确认,将获得重复确认。
- 处理确认再犯的程序很简单:一经收到,即予以丢弃。B重复M1仍会收到,重复M1将销毁,经核实的团体也将销毁。
连续ARQ协议
停止等待ARQ协议不太经济,因此设立了ARQ(自动重复查询:自动重新传输请求)。
- 它引入一个滑动窗口,可以大量传送数据,发件人保留一个发件人窗口,可以按顺序发送到发件人窗口中的任何一组人,而不必等待对方确认。
- 接受者通常使用累积确认书,接受者向连续提交最后组的确认书,表示该组之前的所有分组都已适当收到确认书。
如下图:
- 将大小为 6 的窗口幻灯片, 以大容量发送 6 条信息; 一旦收到一两条确认信息, 幻灯片窗口可能会被推回两次, 尚未发送的窗口中的数据可以发送出去 。

如果每份划界案要求确认滑动窗口,核实信息的费用将很高,因此,滑动窗口不需要确认每份划界案,而是需要累积确认技术。
假设同时提交一至六份报告,发送者在某个时候得到第五封电文的确认,如果使用累积确认,我们将假定收到所有五条一至五条电文,从而将窗口向前移动五条。

累积确认方式
为了给信士们以最大的利益,在实践中,已经采用了传送现有线路的技术。这就需要使用按顺序排列的ARQ和滑动窗口合同。发件人和收件人都负责发件人和接收窗口。发送人收到每一份确认书。只要将传输窗口移动到组位置即可。收款人通常使用累积确认书。换言之,接受者无需向每个接受群体提供确认书。获得少数团体是可行的,但只能获得少数团体。向最后一批人发送确认邮件,这意味着,本分组中应列入的所有分组都得到适当的接受。

看个例子:
该图显示,三点指针P1、P2、P3必须标明传送窗口的状态。
- P3-P1 = 发送(通知)窗口
- P2和P1已发送但未经核实的复送字节。
- P3-P2 = 允许但尚未发送的字节(可用或有效的窗口)
第一部分:由于B目前无法获得序列号31的数据,因此只能核实序列中收到数据的最高序列号,即确认号B目前仍为30(因为B没有收到序列号31,只有确认号30可以发送)。
第 二 条: 当 B 收到 序号 31 数据 时, 他 将被 处理 如下 :
- 向主机提供31至33的数据。 B 清除数据缓存 。
- 然后,使用三个序列号, 提前接收窗口 并提交A的确认号33。
在A收到B的确认号后,他可以用三个序列号提前发送发送窗口,但P2指示器保持不变。

剖析三:A不断发送序列号42 -53P2P2和P3P3指针重叠。传输窗口的序列号都耗尽了但还没有收到确认。由于发送窗口已满,可用窗口已缩小为零。因此必须停止发送。在此点启动计时器 。定时器过期后,此部分数据将重新传送。重置超时计时器,等B传来消息再说如果A通过发件人窗口收到确认号码,然后发件人窗口可以由A保持向前移动。并发送新的数据。
接收缓存和接收窗口,发送缓存和发送窗口
发送短期存储的缓存缓存( 即要发送的窗口) :
- 将 TCP 数据传送到发送程序
- 转交但未经核实的TCP数据
获取临时储藏处:
- 相继生成的数据,但接收申请表尚未读取
- 未按序到达的数据
发送和接收缓存
- A 发送窗口由 B 的接收窗口决定, 尽管两者的大小总是相同 。
- TCP横截面没有明确界定对并非按顺序生成的数据的处理(通常临时保留在接收窗口,直到在申请过程按顺序发送到上层之前完全收到字节流)。
- TCP需要接收者的累积确认,从而降低传输费用。
流量控制
连接建立时,B根据其本身接收缓存的大小决定窗口的大小。然后告诉A,我的窗口有多大,然后,A根据B提供的窗口值建立自己的发件人窗口(发送缓存不必大于接收缓存)。如图,窗户前面有两根手指 后面有两根手指二者都只能前移。
尽管如此,指示器的前向和后向移动不一定同步,以下可能发生,取决于我可能仍然接受的数据B告知A多少,因此,A根据B下提供的信息传输数据,特别注意发件人的发件窗口不能超过接收方接受窗口给出的价值。

如果B立即向A发送了零窗口通讯B的接收缓存中增加了一些存储设置。B然后将Rwnd=400转交A。然而,这部分损失是在交付过程中损失的。A.A.仍在等待B向他发出非零窗口通知。B一直在耐心等待A的数据传输。导致死锁。
因此,需要一个连续的计时器。当TCP链接的一方 发现对方的零窗口,就启动持续计时器。计时器继续, 并发送零窗口检测器部分 。在验证该探测器段时,另一方提供了当前窗口值。如果窗口仍为零,然后,保持时钟的时钟滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答答滴答答滴答答滴答答滴答答滴答答滴答答滴答答滴答答滴答答如果不为零,则可以打破死锁。
拥塞控制
- 如果网络内大量资源同时供应不足,网络的性能就会急剧波动,随着输入负荷增加,整个网络的容量将会减少,从而造成抽搐。
- 一致控制防止将多余的数据注入网络,防止路由器或网络连接超载。
- 流动控制常常指点到点的交通控制,这是一个端到端的问题。 一致性控制是当总留存输入负荷超过网络容量时,控制信息传递给发送者,冰雹浸泡的终点必须放慢交付速度。

慢开始和拥塞避免
发件人保留一个凝结窗口 cwnd 状态变量, 其大小取决于网络的拥挤程度和动态变化方式。 发件人压缩自己的发件人的窗口, 使其小于一个凝结窗口 。
算法缓慢的起始概念如下:
- 在发件人窗口中设置 cwnd=1, 然后发送第一段, 然后确认每段接收的 cwnd+1 。
- 窗口 cwnd 压缩的双倍(即每个传输轮的指数发展假设。)
- 当 cwnd 超过 ssthresh 阈值时, 使用对流避免算法 1 (加增加) 。
- 假设某一数额的增长(如24),网络就会超时,Sshresh值将减少到其原始价值的一半(如12)(减号),此后,cwnd被重复前一步的缓慢启动算法所取代。
避免抽搐的方法使压缩窗口的 cwnd 线性增长。

快重传和快恢复
开始速度缓慢,拥挤可能无法充分解决这些问题,因此建议采用快速再传输和快速恢复的交通拥挤控制办法。
快速再传输技术并不废除再传输机制,但允许在特定情况下尽早重新传输损失部分(发件人最后收到三份重复的ACK确认书时,决定分组丢失,缺失的位数在等待再传输期结束之前迅速重新传输)。
迅速重新传送算法的概念如下:
- 收款人在等待提供数据时,不应接受确认,而应在收到每个时间序列报告期间后立即提供对等确认。
- 当发件人一行收到三份确认书时,它应重新发送未收到的信件,而不必等待计时器用完。
快速休养的算术概念如下:
- 当发件人收到三次递减重复确认,将延迟启动标准减半时,实施“减少倍数”技术。
- 然后,避免抽搐的方法将从新的阈值sshresh(额外增加)而不是缓慢的开始执行。

本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/21149.html。