美文网首页
TCP可靠传输

TCP可靠传输

作者: Sarahhhh | 来源:发表于2019-04-26 17:51 被阅读0次

特点

  1. 面向连接(可靠的连接建立和连接关闭)
  2. 点对点通信(一对一)
  3. 可靠的
  4. 面向字节流(把上层协议的数据当成字节传输)
  5. 全双工通信

采用的技术

  1. 排序技术(处理分组重复和乱序)
  2. 重传技术(处理分组丢失)
  3. 避免分组重复的技术
  4. 流量控制(机器间的速度不一致)
  5. 拥塞控制(网络延迟)

1.排序技术

分组
为每一个分组附加一个序号

接收方保存

  • 当前按顺序收到的最后一个分组的序号
  • 乱序到达的分组列表

接收方执行

  • 如果分组是所期待的下一个分组,递交给上一层协议,并检查乱序分组列表中有没有可以继续递交的分组;
  • 如果是乱序到达的分组,添加到乱序分组列表
  • 如果是重复分组,丢弃
2.重传技术

发送方发送分组的同时启动一个计时器,如果在计时器超时之前,还未收到来自接收方的ACK确认报文,发送方将发送该分组的副本并再次启动计时器

3.避免分组重复的技术

问题:较早的连接中的分组可能在未来的连接中被接收
解决:用唯一的ID标记每一次会话(连接),并且保证在很长一段时间内(如几小时)都不重复使用相同的ID

4.流量控制

问题:速度快的计算机发送太多数据造成速度慢的计算机过载
解决:滑动窗口。接收方通过通告发送方自己的窗口大小,从而控制发送方的发送速度

知乎·TCP协议的滑动窗口具体是怎样控制流量的?
ACK报文包含两个非常重要的信息:
1. 接收方期望接收到的下一字节的序号n。

  • 该n代表接收方已经接收到了前n-1字节数据,此时如果接收方收到第n+1字节数据而不是第n字节数据,接收方是不会发送序号为n+2的ACK的。
  • 举个例子,假如接收端收到1-1024字节,它会发送一个确认号为1025的ACK,但是接下来收到的是2049-3072,它是不会发送确认号为3072的ACK,而依旧发送1025的ACK。

2. 接收方当前的窗口大小m。

  • 如此发送方在接收到ACK包含的这两个数据后就可以计算出还可以发送多少字节的数据给对方。
  • 假定当前发送方已发送到第x字节,则可以发送的字节数就是y=m-(x-n)。这就是滑动窗口控制流量的基本原理。

假设发送方和接收方同意滑动窗口的大小为5个分组。

来源:https://www.webfalse.com/article/7651254.html

(1)发送方提取数据填充这5个分组,并发送分组的副本;
(2)此时最多可以发送5个分组,发送1个分组后,继续发送剩余4个分组;
(3)只有在收到来自接收方的ACK确认报文之后,发送方才会丢弃该分组。此处收到第一个分组的ACK,可以丢弃第一个分组,窗口中剩下4个分组,还能再发送一个分组。

5.拥塞控制

TCP利用分组延迟的变化来作为对网络拥塞的测量,通过减小重传数据的速率来应对网络拥塞。实际上,TCP不是直接改变传输速率,而是通过减小窗口的大小,来降低速率。

拥塞窗口
接收方通告一个接收窗口大小(接收缓冲区的大小),发送方可以在接收到ACK之前填满接收窗口

*窗口分为滑动窗口和拥塞窗口
拓展链接:TCP的滑动窗口与拥塞窗口
知乎·既然有了滑动窗口,为什么还要有等同于滑动窗口的拥塞窗口?

慢开始
(开始一个新连接)
发送方先发送一个报文,如果一个ACK确认报文到达,TCP就把发送的数据量加倍,即发送两个报文。如果对应的两个ACK也到达了,就发送四个报文,以此类推,直到TCP正在发送的数据量等于接收窗口大小的一半为止。之后数据量改为线性增长,每次加一。
(出现报文丢失时)
如果发送方超过一定时间没有收到ACK确认报文,说明报文丢失,出现网络拥塞,此时将窗口大小设置为1,重新进行慢开始算法。

参考链接:TCP协议概述

相关文章

  • TCP如何保证可靠传输

    TCP和UDP的区别之一:TCP是可靠传输,UDP是不可靠传输,那么可能一不小心就会被追问TCP是如何保证可靠传输...

  • NETWORK

    传输层 TCP协议 TCP协议的特点 TCP是在不可靠的IP层之上实现的可靠的数据传输协议,它主要解决传输的可靠、...

  • 八.网络协议学习笔记 传输层TCP-可靠传输

    TCP的几个要点 可靠传输 TCP-可靠传输-停止等待AQR协议 AQR(Automatic Repeat-reQ...

  • TCP和UDP详解

    本篇文章主要是从运输层协议概述、UDP、TCP、可靠传输的工作原理、TCP首部格式、TCP可靠传输的实现、TCP流...

  • TCP 三次握手 和 四次挥手

    概述 我们都知道 TCP 是 可靠的数据传输协议,UDP是不可靠传输,那么TCP它是怎么保证可靠传输的呢?那我们就...

  • 常问知识点-网络

    网络 TCP和UDP的区别 TCP面向有连接,提供可靠的传输;UDP面向无连接,不可靠传输 TCP面向字节流,UD...

  • 为什么 TCP 建立会话要三次握手?

    TCP 位于传输层,提供可靠的字节流服务。 所谓可靠的传输服务是指,能够把数据准确可靠的传给对方,并且 TCP 协...

  • TCP与UDP

    1)TCP TCP传输控制协议,是一种面向连接的,可靠的、基于字节流的传输层通信协议。 优点:可靠、稳定。TCP...

  • TCP可靠传输

    TCP提供了可靠传输,主要按照下面方法实现。 分块发送:应用程序被分割成TCP认为最适合发送的数据段。 定时确认重...

  • TCP 可靠传输

    这篇文章转载自http://blog.chinaunix.net/uid-26275986-id-4109679....

网友评论

      本文标题:TCP可靠传输

      本文链接:https://www.haomeiwen.com/subject/vfufnqtx.html