TCP协议的相关特性

目录

正文:

1.可靠性

2.连接管理

3.滑动窗口

4.流量控制

5.拥塞控制

6.延迟应答

7.捎带应答

总结:


正文:

1.可靠性

TCP协议是一个有连接,可靠传输,面向字节流,全双工的协议。其中可靠传输的实现应该是属于最抽象的了,而想要实现可靠传输就需要确认应答和超时重传这两个机制。

确认应答:在 TCP 传输过程中,接收方接收到数据后会发送确认应答给发送方,通知发送方已经成功接收数据。发送方接收到确认应答后才会继续发送新的数据,保证数据的有序传输。TCP将每个字节的数据都进行了编号,即为序列号。每一个ACK都带有对应的确认序列号, 意思是告诉发送者, 我已经收到了哪些数据,下一次你从哪里开始发。大概图形如下:

超时重传: TCP 传输过程中,发送方发送数据后会等待接收方的确认,如果发送方在规定的超时时间内未收到确认,就会认为数据丢失,触发超时重传机制,重新发送数据。超时重传可以确保即使在网络出现丢包等情况时,数据依然能够可靠传输。超时时间的选择很重要,如果设置过短会导致频繁重传,影响传输效率,如果设置过长会延迟重传时间,影响数据传输的实时性。大致图形如下:

当超时重传和确认应答机制配合得当时,TCP协议可以在复杂的网络环境下高效地传输数据,并保障数据的完整性和可靠性。

2.连接管理

TCP 协议中的连接管理是指通过三次握手建立连接和四次挥手终止连接的过程。TCP连接的建立过程通常被称为三次握手(Three-way Handshake)。这个过程确保了两个端点都准备好进行数据传输。当通信双方完成数据传输后,它们需要释放连接。TCP连接的释放过程称为四次挥手(Four-way Handshake)。

三次握手: a. 第一次握手:客户端向服务器端发送 SYN 报文段,请求建立连接。 b. 第二次握手:服务器端接收到 SYN 报文段后,回复一个 SYN+ACK 报文段,表示同意建立连接。 c. 第三次握手:客户端接收到服务器端的 SYN+ACK 报文段后,发送一个 ACK 报文段,确认连接建立。 此时,TCP 连接建立成功,双方可以开始进行数据传输。大致图片如下:

四次挥手: a. 第一次挥手:客户端发送一个 FIN 报文段,表示数据传输完成。 b. 第二次挥手:服务器端接收到 FIN 报文段后,回复一个 ACK 报文段,表示确认收到客户端的关闭请求。 c. 第三次挥手:服务器端发送一个 FIN 报文段,表示数据传输完成。 d. 第四次挥手:客户端接收到 FIN 报文段后,回复一个 ACK 报文段,表示确认收到服务器端的关闭请求。此时,TCP 连接正式关闭,双方释放连接资源。大致图片如下:

通过三次握手建立连接,可以确保双方都同意建立连接,并同步连接状态;通过四次挥手终止连接,可以安全地结束数据传输并释放连接资源,避免出现半开连接等问题。连接管理的规范流程保证了 TCP 在通信过程中的正常运行,提升了网络的稳定性和安全性。

3.滑动窗口

确认应答策略, 对每一个发送的数据段, 都要给一个ACK确认应答。收到ACK后再发送下一个数据段.。这样做有一个比较大的缺点, 就是性能较差。尤其是数据往返的时间较长的时候。既然这样一发一收的方式性能较低, 那么我们一次发送多条数据, 就可以大大的提高性能(其实是将多个段的等待时间重叠在一起了)。

操作原理:

  • 发送方使用发送窗口来控制发送数据的数量。发送窗口大小取决于接收方通知的窗口大小和拥塞控制算法调整的窗口大小。发送窗口内的数据可以被发送,窗口外的数据暂时不能发送;
  • 接收方使用接收窗口来控制接收数据的数量。接收窗口表示接收方可以接收的数据的范围,接收窗口内的数据可以被接收,窗口外的数据则会被丢弃或拒绝。发送前四个段的时候, 不需要等待任何ACK, 直接发送;
  • 收到第一个ACK后, 滑动窗口向后移动, 继续发送第五个段的数据; 依次类推;
  • 操作系统内核为了维护这个滑动窗口, 需要开辟 发送缓冲区 来记录当前还有哪些数据没有应答只有确认应答过的数据, 才能从缓冲区删掉;
  •  窗口越大, 则网络的吞吐率就越高;

大致图像如下:

滑动窗口是 TCP 协议中一个重要的机制,通过对发送和接收窗口的动态调整,可以更好地管理数据的传输,提高数据传输的效率。

4.流量控制

接收端处理数据的速度是有限的. 如果发送端发的太快, 导致接收端的缓冲区被打满, 这个时候如果发送端继续发送, 就会造成丢包, 继而引起丢包重传等等一系列连锁反应。流量控制是 TCP 协议中的一种机制,用于调节数据传输的速率,以确保发送方和接收方之间的数据传输不会出现过载。流量控制主要通过滑动窗口机制来实现。

操作原理:

  • 接收方通过 TCP 报文段中的接收窗口字段告知发送方自己当前的接收窗口大小,即可接收的数据量,窗口大小字段越大, 说明网络的吞吐量越高。
  • 发送方根据接收方通知的窗口大小来控制发送数据的速率,确保发送的数据不会超过接收方当前的处理能力,接收端一旦发现自己的缓冲区快满了, 就会将窗口大小设置成一个更小的值通知给发送端,发送端接受到这个窗口之后, 就会减慢自己的发送速度;。
  • 发送方发送的数据量不能超过接收方通知的窗口大小,否则接收方将丢弃多余的数据或发出窗口溢出信息,如果接收端缓冲区满了, 就会将窗口置为0。这时发送方不再发送数据, 但是需要定期发送一个窗口探测数据段, 使接收端把窗口大小告诉发送端。

通过流量控制可以避免网络拥塞和数据堆积,确保网络传输的稳定性和顺畅性。

5.拥塞控制

虽然TCP有了滑动窗口这个大杀器, 能够高效可靠的发送大量的数据. 但是如果在刚开始阶段就发送大量的数据, 仍然可能引发问题。拥塞控制是 TCP 协议中的一种机制,用于防止网络拥塞并在出现网络拥塞时适当降低数据流量,以避免数据丢失和网络性能下降。拥塞控制主要通过拥塞窗口和拥塞避免算法来实现。

操作原理:

  • TCP引入 慢启动 机制, 先发少量的数据, 探探路, 摸清当前的网络拥堵状态, 再决定按照多大的速度传输数据。
  • 发送开始的时候, 定义拥塞窗口大小为1,每次收到一个ACK应答, 拥塞窗口加1。每次发送数据包的时候, 将拥塞窗口和接收端主机反馈的窗口大小做比较, 取较小的值作为实际发送
    的窗口,像上面这样的拥塞窗口增长速度, 是指数级别的。"慢启动" 只是指初使时慢, 但是增长速度非常快。
  •  当拥塞窗口超过一个阈值的时候, 不再按照指数方式增长, 而是按照线性方式增长当TCP开始启动的时候, 慢启动阈值等于窗口最大值,在每次超时重发的时候, 慢启动阈值会变成原来的一半, 同时拥塞窗口置回1。

通过拥塞控制机制,TCP 可以确保网络中的数据流量在承载范围内,避免网络拥塞和数据丢失。

6.延迟应答

延时应答(Delayed ACK)是指在 TCP 协议中,接收端在接收到数据包后,并不立即发送确认应答(ACK),而是等待一段时间(通常为200ms),以期望在这段时间内可以捎带上之前接收到的其他数据包的确认信息一起发送。

操作原理:

  • 等待延时时间:接收端在接收到数据包后,等待一个固定的延时时间,看是否有其他需要发送的确认应答。如果在延时时间内接收到另一个数据包,可以将确认应答捎带发送。
  • 触发条件:一般情况下,当接收端发送数据包后,会等待一个较短的时间(如200ms)来判断是否应该发送确认应答,避免过长的延时导致发送端重传数据包。

7.捎带应答

捎带应答(piggybacking)是指在 TCP 协议中,当接收端向发送端发送确认应答(ACK)时,如果接收端正好要发送数据给发送端,就可以将数据放在确认应答中一起发送,达到“捎带”效果。这样可以减少网络中的数据包数量及传输延迟,提高网络传输的效率。

操作原理:

  • 采用累积确认:接收端可以将自己要发送的数据留在确认应答中,一旦 ACK 数据包到达发送端,发送端就可根据 ACK 中的确认号确认数据的成功到达,并处理接收端发送的数据。
  • 利用 ACK 数据包空间:确认应答(ACK)数据包中通常会携带有确认号,接收端可以利用 ACK 数据包的剩余控制位来放置自己要发送的数据。

捎带应答是 TCP 协议中一种优化的数据传输机制,通过将数据捎带在确认应答中一起传输,减少网络中的数据包数量和传输延迟,提高网络传输的效率和性能。

总结:

总的来说,TCP 是一种可靠、面向连接的传输层协议,通过提供可靠传输、连接管理,拥塞控制、流量控制、差错检测与重传等机制,确保数据在网络中的可靠传输和有效交互。

  • 17
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值