首页 > 其他分享 >TCP 的滑动窗口是什么?

TCP 的滑动窗口是什么?

时间:2023-10-20 19:01:47浏览次数:27  
标签:收到 窗口 TCP 发送窗口 发送 滑动 接收

TCP 发送一个数据,如果需要收到确认应答,才会发送下一个数据。这样的话就会有个缺点:效率会比较低。

“用一个比喻,我们在微信上聊天,你打完一句话,我回复一句之后,你才能打下一句。假如我没有及时回复呢?你是把话憋着不说吗?然后傻傻等到我回复之后再接着发下一句?”

为了解决这个问题,TCP 引入了窗口,它是操作系统开辟的一个缓存空间。窗口大小值表示无需等待确认应答,而可以继续发送数据的最大值。

TCP 头部有个字段叫 win,也即那个 16 位的窗口大小,它告诉对方本端的 TCP 接收缓冲区还能容纳多少字节的数据,这样对方就可以控制发送数据的速度,从而达到流量控制的目的。

“通俗点讲,就是接受方每次收到数据包,在发送确认报文的时候,同时告诉发送方,自己的缓存区还有多少空余空间,缓冲区的空余空间,我们就称之为接受窗口大小。这就是 win。”

TCP 滑动窗口分为两种: 发送窗口和接收窗口。发送端的滑动窗口包含四大部分,如下:

已发送且已收到 ACK 确认

已发送但未收到 ACK 确认

未发送但可以发送

未发送也不可以发送

TCP 的滑动窗口是什么?_窗口大小

深蓝色框里就是发送窗口。

SND.WND: 表示发送窗口的大小, 上图虚线框的格子数是 10个,即发送窗口大小是 10。

SND.NXT:下一个发送的位置,它指向未发送但可以发送的第一个字节的序列号。

SND.UNA: 一个绝对指针,它指向的是已发送但未确认的第一个字节的序列号。

接收方的滑动窗口包含三大部分,如下:

已成功接收并确认

未收到数据但可以接收

未收到数据并不可以接收的数据

TCP 的滑动窗口是什么?_数据_02

蓝色框内,就是接收窗口。

REV.WND: 表示接收窗口的大小, 上图虚线框的格子就是 9 个。

REV.NXT: 下一个接收的位置,它指向未收到但可以接收的第一个字节的序列号。

标签:收到,窗口,TCP,发送窗口,发送,滑动,接收
From: https://blog.51cto.com/u_11344924/7958239

相关文章

  • tcp/ip协议和opc协议对比详解
    TCP/IP协议和OPC协议是两种重要的网络协议,它们在不同的网络层级上运行,并为数据传输和通信提供了不同的功能。TCP/IP协议(TransmissionControlProtocol/InternetProtocol,传输控制协议/互联网协议)是互联网通信的基础协议,它定义了互联网中数据传输的基本规则和标准。TCP/IP协议包括......
  • 在Alt+Tab中使窗口不可见
    #region在Alt+Tab中使窗口不可见//定义用于修改窗口样式的常量privateconstintGWL_EXSTYLE=-20;privateconstintWS_EX_TOOLWINDOW=0x00000080;//导入WindowsAPI函数[DllImport("user32.dll")]privatest......
  • TCP FOR PGST
     Uplink:1//////////////////////////////////////////////////////////////2EnLength=0;34//flagReport=fGasLowAlarm;5//GasWorker.Alm_Lel=25;67encodingString[EnLength++]=0x5D;//起始符8encodingString[EnLe......
  • 【前端开发】跨标签页广播通信教程,可方便新窗口修改原窗口实时更新
    日常业务开发中我们常常会碰到如下的场景,即两个标签页之间的通信问题。我们在第一个标签页如何执行操作后在第二个标签页获取到信息。 BroadcastChannelAPI为我们提供了一种快捷且高效的途径创建useTagMessage.ts文件//跨标签页通信方案‘Msg’即通道名称,可以是任何你想......
  • TCP/IP--理解TCP三次握手和四次挥手
    本篇结构:前言TCP报文首部格式三次握手四次挥手wireshark抓包三次握手wireshark抓包四次挥手一、前言比较郁闷,明明年纪不大,记性却出奇显出老态,不久前学习过的知识,再回头看发现基本已经忘却。可能也是学得不扎实,不深入的原因吧。抛开这些无关的念头,少年,再来深入理解一下吧,要知道......
  • TCP和UDP
                ......
  • TCP 的流量控制是怎么实现的
    TCP提供了一种机制,可以让发送端根据接收端的实际接收能力控制发送的数据量,这就是流量控制。TCP通过滑动窗口来控制流量,我们看下简要流程:首先双方三次握手,初始化各自的窗口大小,均为400个字节。假如当前发送方给接收方发送了200字节,那么发送方的SND.NXT会右移200个字节,也就是说......
  • html+css3+anime.js实现线条来回滑动且渐隐动画
    效果: 代码:<!DOCTYPEhtml><html><head><metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"/><metaname="viewport"content="width=device-width,initial-sc......
  • 这可能是最全面的TCP面试八股文了
    计算机网络基础,考验一个程序员的基本功,也能更快的筛选出更优秀的人才。说说TCP的三次握手假设发送端为客户端,接收端为服务端。开始时客户端和服务端的状态都是CLOSED。最全面的Java面试网站第一次握手:客户端向服务端发起建立连接请求,客户端会随机生成一个起始序列号x,客户端向......
  • 传输层协议:TCP/IP协议,UDP的协议
    传输层:定义了⼀些传输数据的协议和端口号(WWW端口80等),如:TCP(传输控制协议,传输效率低,可靠性强,⽤于传输可靠性要求⾼,数据量⼤的数据),UDP(⽤户数据报协议,与TCP特性恰恰相反,⽤于传输可靠性要求不⾼,数据量⼩的数据,如QQ聊天数据就是通过这种⽅式传输的)。主要是将从下层(应用层)接收......