Daily_Ques2.TCP协议中的滑动窗口(Sliding Window)以及Buffer

        在初次学习计算机网络时,都有涉及到滑动窗口以及Buffer,但初次接触都比较模糊,在项目实战中我们经常会遇到要封装滑动窗口(Sliding Window)和Buffer,今天也特意再次简单复习一下这块的概念。
        TCP(Transmission Control Protocol)中的滑动窗口(Sliding Window)是一种流量控制机制,它允许发送方在未收到接收方确认的情况下连续发送多个数据包,同时还能动态调整发送速率以适应接收方的处理能力和网络状况,防止数据拥塞和丢失。滑动窗口机制对于TCP的可靠性与效率至关重要。

滑动窗口的工作原理如下:

  1. 窗口大小:接收方会通知发送方自己当前的接收窗口大小(rwnd),这个大小代表了接收方还能接收多少数据而不至于溢出其缓冲区。发送方据此设置自己的发送窗口大小(swnd),但发送窗口的实际大小还受限于拥塞窗口(cwnd)的大小,最终的发送窗口大小是这两个窗口中的最小值。

  2. 窗口滑动:发送方维持一个连续的、允许发送的数据序列号范围,这个范围就是发送窗口。随着数据的发送和接收方的确认返回,发送窗口就像在数据序列上滑动一样向前移动。当接收方确认收到了某些数据段后,这些被确认的数据就从发送窗口中移除,使得窗口内的序列号向前推进,从而允许发送更多的数据。

  3. 流量控制:通过调整接收窗口大小,接收方可以控制发送方的发送速率,确保数据不会因为接收方处理不及而丢失。如果接收方的缓冲区接近满载,它会减小通告的窗口大小,发送方则相应减少发送数据量。

  4. 拥塞控制:除了上述的流量控制,TCP还通过拥塞窗口来应对网络拥塞。当网络出现拥塞迹象(如数据包丢失),TCP会减小拥塞窗口大小,从而减缓发送速率,避免进一步加剧网络拥塞。

        相比之下,UDP(User Datagram Protocol)是一个无连接的、不可靠的传输协议,它不使用滑动窗口机制进行流量控制或拥塞控制。UDP只是简单地将数据包发送出去,不关心对方是否准备好接收或者数据包是否到达,因此UDP的效率较高,但牺牲了数据传输的可靠性和顺序保证。

        在TCP(Transmission Control Protocol)中,buffer指的是用于存储待发送或已接收数据的临时内存区域。TCP协议作为一种面向连接的、可靠的传输协议,需要处理数据的有序传输、流量控制、拥塞控制等问题,因此缓冲区的使用是其核心机制之一。TCP缓冲区主要分为发送缓冲区(send buffer)和接收缓冲区(receive buffer):
  1. 发送缓冲区(Send Buffer): 发送缓冲区用于暂存应用程序准备发送到网络的数据。当应用程序调用send()函数向TCP连接发送数据时,数据首先被放入发送缓冲区。TCP协议栈会根据当前的网络状况和接收方的接收能力,从缓冲区中取出数据进行发送。如果发送缓冲区填满,应用程序的后续send调用可能会被阻塞,或者可以选择非阻塞模式并返回相应的错误信息。

  2. 接收缓冲区(Receive Buffer): 接收缓冲区用于暂存从网络接收到的数据,直到应用程序准备好读取这些数据。当数据包到达时,TCP协议栈将数据放置在接收缓冲区中,然后通知应用程序有数据可读。应用程序通过recv()或类似的函数从缓冲区中读取数据。如果接收缓冲区满了,TCP可能开始丢弃数据包或者请求对方减缓发送速度,以避免数据丢失。

        TCP缓冲区的大小(通常可以通过套接字选项SO_SNDBUF和SO_RCVBUF进行设置)对协议的性能有直接影响,过小的缓冲区可能导致频繁的系统调用和网络包的拆分,而过大的缓冲区可能导致资源浪费以及潜在的TCP bufferbloat问题,即缓冲区过度填充导致的延迟增加。

        此外,TCP还利用滑动窗口机制来控制数据的发送速率,确保发送的数据量不会超出接收方的处理能力,而缓冲区在这里扮演着存储未被确认数据的重要角色。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一杯凉丶水ღ҉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值