首页 > 其他分享 >计算机网络 TCP流量控制---滑动窗口

计算机网络 TCP流量控制---滑动窗口

时间:2024-07-14 12:00:57浏览次数:13  
标签:计算机网络 窗口 字节 TCP 发送 --- 大小 发送窗口 接收

TCP滑动窗口是一种流量控制机制,它允许发送方在等待确认时继续发送数据,同时根据网络状况调整发送速率,以优化网络利用率和传输效率。

TCP连接的每一端都有一个接收窗口和发送窗口

接收窗口:接收端指定的能够接收的数据量,通过TCP报文头的窗口字段指定。

发送窗口:发送端指定的允许发送但未被确认的数据量。窗口大小就是指无需等待确认应答,而可以继续发送数据的最大值。

滑动窗口原理

发送方维护一个发送窗口,它是一个动态调整的窗口范围,可以包含多个TCP报文段。

接收方维护一个接收窗口,指示发送端可以发送多少字节的数据而不会导致溢出。

窗口大小由哪一方决定?

三次握手的第二次和第三次发ACK包的时候,会第一次交换窗口大小,通常窗口大小是由接收方的窗口大小来决定的。发送方发送数据大小不能超过接收方的窗口大小,否则接收方就无法正常接收到数据。 

滑动窗口的操作

发送方根据接收方发来的确认信息和窗口大小来调整发送窗口的大小。

如果接收窗口大小为零,发送方不能发送数据,必须等待接收方扩大窗口。

发送方每发送一个报文段,会启动一个定时器来跟踪未收到确认的报文段,当定时器超时时,发送方会重传相应的报文段。

优势和作用

流量控制

所谓流量控制,主要是接收方传递信息给发送方,使其不要发送数据太快,是一种端到端的控制。主要的方式就是返回的ACK中会包含自己的接收窗口的大小,并利用大小来控制发送方的数据发送,通过动态调整发送窗口大小,确保发送方不会发送超过接收方处理能力的数据量。

效率优化 

允许发送方在等待确认时继续发送数据,从而充分利用网络带宽,提高传输效率。 

可靠性 

发送方根据接收方的窗口大小和确认信息来管理重传,保证数据的可靠传输。

例子

首先在三次握手的时候接收方通过ACK包携带窗口大小信息给发送方,发送方根据接受方接收窗口大小设置自己的发送窗口的大小,此时接收方的窗口大小是360字节,发送方的发送窗口也是360字节。

发送方发送140字节的数据,自己的发送窗口变为220(360-140)字节,接收方收到数据后,应用程序读取了40字节,还有100字节一直占用着缓冲区,于是接收窗口收缩到了260(360-100)字节,并在发送ACK确认信息时,通告窗口大小给发送方,发送方接收到接收方的窗口通告,更新发送窗口为260。

标签:计算机网络,窗口,字节,TCP,发送,---,大小,发送窗口,接收
From: https://blog.csdn.net/weixin_63162063/article/details/140397722

相关文章

  • 计算机网络 TCP粘包问题
    什么是粘包?粘包是指的是数据和数据之间没有没有明确的分界线,导致不能够正确的传输数据(只有TCP会粘包UDP永远不会粘包),粘包问题只针对于一切字节流的协议。TCP也可以称为流式协议,UDP称为数据报式协议。对于流式协议:发送端可以1K1K的发送数据,接收端可以2k2k的提取数据,也可以......
  • 计算机网络 拥塞控制
    拥塞通常是由于网络中的资源(如路由器、链路)过载而导致的。当网络负载过大,超过其容量范围时,会出现数据包丢失、延迟增加、传输失败等问题,从而影响网络的性能和可靠性,如果发生,数据包丢失TCP就会重传数据,但是一重传就会导致网络的负担更重,产生更多的丢包,恶性循环不断放大。拥塞控......
  • Python数据容器(3)--遍历与列表生成式
    文章目录遍历直接遍历索引遍历list列表tuple元组字典遍历get()方法items()方法enumerate()函数与zip()函数enumerate()函数zip()函数列表生成式语法表现形式编写基本的列表生成式带有条件的列表生成式嵌套列表生成式字符串与列表之间的转换总结遍历:列表生成式遍......
  • python接口自动化(二十五)--unittest断言——下(详解)
    1.简介 本篇还是回归到我们最初始的话题,想必大家都忘记了,没关系看这里:传送门 没错最初的话题就是登录,由于博客园的登录机制改变了,本篇以我找到的开源免费的登录API为案例,结合unittest框架写2个用例。同样我们先来看一下接口文档。2.接口文档2.1登录接口请求方式......
  • P10678 『STA - R6』月
    P10678『STA-R6』月-洛谷|计算机科学教育新生态(luogu.com.cn)挺意外的一个题,从黄色到蓝色。贪心思想比较好想,尽量把度数多的连在一起。这样会形成一个中心聚集的图,就可以使得最长直径尽量小。#include<iostream>#include<cstring>#include<algorithm>usingnam......
  • 一维/二维码读取器SR-2000系列
            ......
  • 超声波_HC-SR04
    模块说明参考来源:HC-SR04超声波测距块讲解(附32单片机源码)_hcsr04超声波模块测距原理-CSDN博客**HC-SR04**超声波模块常用于机器人避障、物体测距、液位检测、公共安防、停车场检测等场所。HC-SR04超声波模块主要是由两个通用的压电陶瓷超声传感器,并加外围信号处理电路构成的......
  • linux-卸载phpstudy
    需要sudo-i再用root角色去/usr/bin/phpstudy-uninstall再删掉rm-rf/usr/local/phpstudy`运行状态===========webpanelstopphpstudyrunning=安装完成==请用浏览器访问面板:外网:http://119.139.137.25:9080/9B7E96内网:http://192.168.137.128:9080/9B7E96系统初......
  • 深度学习第P6周:VGG-16算法-Pytorch实现人脸识别
    >-**......
  • SP14887 GOODA - Good Travels 题解
    题目传送门前置知识Tarjan算法|最短路解法缩点后原图就成为了一个有向无环图,此时每个点最多被经过一次,故在求最长路的过程中可以将点权和边权混着转移。上篇题解用拓扑实现查找两点间最长路的做法正确性不会证,遂写了份Dijkstra求最长路。代码#include<bits/stdc++.h......