tcp滑动窗口原理

TCP 滑动窗口是个什么东西?这篇讲清楚 在这篇中,我们认真全面地探讨了TCP滑动窗口的原理,从基本定义到源码分析应有尽有。一般而言,准备面试的话不需要到源码那一步的。TCP滑动窗口主要有以下作用:1. TCP在滑动窗口的基础上提供流量控制,防止较快主机致使较慢主机的缓冲区溢出,主要是根据网络情况。 阅读详情

参考:​​​计算机网络-传输层_wiscourper的博客-优快云博客

TCP 滑动窗口

作用:

    1. 提供TCP可靠性:对发送的数据进行确认
    2. 流量控制:窗口大小随链路变化

一、TCP窗口机制

    TCP中窗口大小是指tcp协议一次传输多少个数据。因为TCP是一个面向连接的可靠的传输协议,既然是可靠的就需要传输的数据进行确认。
TCP窗口机制有两种,一种是固定窗口大小,另一种是滑动窗口。数据在传输时,TCP会对所有数据进行编号,发送方在发送过程中始终保持着一
个窗口,只有落在发送窗口内的数据帧才允许被发送;同时接收方也始终保持着一个接收窗口,只有落在窗口内的数据才会被接收。这样通过改变
发送窗口和接收窗口的大小就可以实现流量控制。

二、TCP窗口大小

    TCP的窗口滑动技术通过动态改变窗口的大小来调节两台主机之间数据传输。每个TCP/IP主机支持全双工数据传输,因此TCP有两个滑动窗口,
一个用于接收数据,一个用于发送数据。接收方设备要求窗口大小为0时,表明接收方已经接收了全部数据,或者接收方应用程序没有时间读取数据
,要求暂停发送。
    TCP在传送数据时,第一次接受方窗口大小是由链路带宽决定的,但是接收方在接收到的数据后,返回ack确认报文,同时也告诉了发送方自己
的窗口大小,此时发送方第二次发送数据时,会改变自己的窗口大小和接收方一致。
    当窗口过大时,会导致不必要的数据来拥塞我们的链路,但是窗口太小时,会造成很大的延时,比如为1时,发送方每发送一个数据,接收方
就会返回一个ack报文,在发送方未接收到接收方的确认报文ack之前不会进行下一次发送。(当链路变好了或者变差了这个窗口还会发生变化,
并不是第一次协商好了以后就永远不变了。)【这句话不太理解】

三、窗口滑动协议

    窗口滑动协议是TCP使用的一种流量控制方法。该协议允许发送方在停止并等待接收确认报文前可以连续发送多个分组。由于发送方不必每发
一个分组就停下来等待确认,因此该协议可以加速数据的传输。只有在接收窗口向前滑动时(与此同时也发送了确认),发送窗口才有可能向前滑
动。收发两端的窗口按照以上规律不断地向前滑动,因此这种协议又称为滑动窗口协议。

四、滑动窗口原理

  1. 窗口大小是指无需等待确认就可以继续发送数据的最大值,上图的窗口大小是4000字节(4段)

  2. 发送前4段时,无需ACK,直接发送

  3. 收到第一个ACK后,滑动窗口向后移动,继续发送第五段的数据

  4. 操作系统内核为了维护这个滑动窗口,需要开辟发送缓冲区来记录当前还有哪些数据没有应答,只有应答的数据才会从缓冲区中删除

  5. 窗口越大,则网络的吞吐率就越高

五、滑动窗口丢包原理

发送端丢包原理

当某一段报文丢失了,图中(1001-2000)数据段丢失了,接收方没有接收到该数据段,则会一直给发送端发送ACK(下一个是1001),如果发送端连续收到同样的ACK(下一个是1001),就会将对应的(1001-2000)重新发送,这时候如果接收端收到1001后,再次返回的就是ACK(7001)。这种机制被称为“高速重发机制”(快速重传)

接收端丢包原理

接收端的下一个2001丢失了,但是发送端收到了ACK(下一个3001),说明1-3000的数据段已经接收到了,数据已经传输到了发送端,所以不需要理会。

TCP滑动窗口原理终于清楚了! 本期我们认真,全面的探讨了TCP滑动窗口的原理,从基本定义到源码分析应有尽有。一般而言,准备面试的话不需要到源码那一步的。 阅读详情

相关推荐

TCP滑动窗口协议作用

什么使用滑动窗口协议(或滑动窗口协议有什么作用?) 1. 目的: TCP 引入滑动窗口的最直接的原因是“接收方的缓存是有限的” 发送方不能假设接收方缓存无限大,一直发包,造成接收方丢包。 发送方不能假设接收方窗口很小,发一会停一会,效率不高,浪费带宽。 所以需要发送方随时报告自己的缓存能力(即窗口)给发送方,发送方可以根据此窗口大小来发送一定的数据。 2. 作用: 可靠性:保证数据准确(按序、完整、未出错)到达目的地,如果未到达或数据出错,能够发现并重传。..

ARM-Linux 6206

TCP面试题之滑动窗口原理

TCP 滑动窗口 作用: 1. 提供TCP可靠性:对发送的数据进行确认 2. 流量控制:窗口大小随链路变化 一、TCP窗口机制 TCP中窗口大小是指tcp协议一次传输多少个数据。因为TCP是一个面向连接的可靠的传输协议,既然是可靠的就需要传输的数据进行确认。TCP窗口机制有两种,一种是固定窗口大小,另一种是滑动窗口。数据在传输时,TCP会对所有数据进行...

码瘾的空间 2823

TCP滑动窗口原理

TCP滑动窗口原理 假设存在如下数据包 TCP讲32、33、34、35这四个片段,依次发送出去,此时假设接收端之接收到了32、33、35 此时接收端的行为是回复一个ACK包说明已经接收到了32~33的数据,并将35进行缓存(保证顺序,产生一个保存34 的hole) 发送端收到ACK之后,就会将32~36的数据包从发送并没有确认切到发送已经确认,提出窗口,这个时候窗口向右移动,变成如下 对于丢失的34,如果超过一定时间,TCP就会重新传送(重传机制),重传成功会34 35一块被确认,不成功,35也将被丢

诺浅的专栏 799

什么是TCP滑动窗口?(解释+流程示例)

滑动窗口(Sliding Window)是一种用于实现流量控制和可靠数据传输的机制,在网络通信中被广泛使用,尤其是在传输控制协议(TCP)中。 滑动窗口是发送方和接收方之间的一种协议约定,用于控制发送方发送数据的速率和接收方接收数据的能力。接收方按照自己接收缓冲区大小和处理能力决定接收窗口大小,用接收窗口大小控制发送窗口大小,再由发送窗口大小控制发送速率。

qq_46631497的博客 2万+

微信小程序 | 小程序开发

事实上,目前小程序在我们生活中已经随处可见(特别是这次疫情的推动,不管是什么岗位、什么年龄阶段的人,到哪都需要打开健康码)WePY是由腾讯开源的,一款让小程序支持组件化开发的框架,通过预编译的手段让开发者可以选择自己喜欢的开发风格去开发小程序。Mpvue是一个使用Vue开发小程序的前端框架,也是 支持 微信小程序、百度智能小程序,头条小程序 和 支付宝小程序;微信小程序、支付宝小程序、淘宝小程序、抖音小程序、头条小程序、QQ小程序、美团小程序等。,其他平台的小程序往往是平台本身的一些公司或者顺手开发的。

CoderHing的博客~ 1万+

RAG项目简历包装指南:从“流水线工人”到“问题解决者”的跃迁(附代码与思路)

本文代码已在Python 3.11 + CUDA 12.3环境测试,部分功能需LangChain 0.2+支持。

Conan_0728的博客 1885

TCP滑动窗口原理终于清楚了!_tcp滑动窗口机制

⑤失序处理:作为IP数据报来传输的TCP分片到达时可能会失序,TCP将对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层;⑥重复处理:作为IP数据报来传输的TCP分片会发生重复,TCP的接收端必须丢弃重复的数据;⑦数据校验:TCP将保持它首部和数据的检验和,这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。如果收到分片的检验和有差错,TCP将丢弃这个分片,并不确认收到此报文段导致对端超时并重发。其中很重要的一环就是“滑动窗口”,下面我们重点关注一下。

2401_87555412的博客 1987

ATGM332D模块串口配置保姆级教程:从9600波特率到NMEA数据过滤,一次搞定

本文提供ATGM332D模块串口配置的详细教程,涵盖从基础硬件连接到高级NMEA数据过滤的全过程。内容包括波特率优化、数据输出频率调整、NMEA语句过滤等实用技巧,帮助开发者快速掌握GNSS模块配置,提升定位系统性能。

weixin_30664051的博客 513

TCP滑动窗口原理终于清楚了!_tcp滑动窗口机制(1)

②到达确认:接收端接收到分片数据时,根据分片数据序号向发送端发送一个确认;③超时重发:发送方在发送分片时启动超时定时器,如果在定时器超时之后没有收到相应的确认,重发分片;④滑动窗口:TCP连接每一方的接收缓冲空间大小都固定,接收端只允许另一端发送接收端缓冲区所能接纳的数据,TCP在滑动窗口的基础上提供流量控制,防止较快主机致使较慢主机的缓冲区溢出;⑤失序处理:作为IP数据报来传输的TCP分片到达时可能会失序,TCP将对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层;

2401_87613081的博客 1516

DIY必备:如何用N-MOS管搭建低成本DC有刷电机驱动电路(附原理图+避坑指南)

本文详细介绍了如何使用N-MOS管搭建低成本、高可靠性的DC有刷电机驱动电路。针对DIY爱好者,从核心原理、电路设计、元件选型到焊接调试,提供了完整的实战指南,并重点解析了续流二极管选型、栅极驱动设计等关键避坑要点,帮助读者成功驱动电机并确保电路稳定运行。

delta的博客 776

Codex 接入自定义大模型终极教程:插件解锁、会话管理、国产模型一键搞定

🚀 Codex 默认只能使用 OpenAI 官方模型?这篇文章带你从零接入 DeepSeek、通义千问、GLM 等国产大模型,并彻底解锁插件、会话删除、多模型切换等隐藏功能。配置原理、常见坑点、傻瓜式增强工具分享,小白也能轻松上手!🔥

XiaoqiangClub的博客 3151

tcp滑动窗口_运维技术小视频 | TCP成块式数据流传输之滑动窗口原理

上期课程我们学习了TCP交互式数据流传输方式,本期课程我们学习TCP成块式数据流传输方式之滑动窗口传输原理。成块式数据流有哪些特点?滑动窗口的原理是什么?滑动窗口机制有哪些动作?锁定每周三,一起学习TCP传输原理系列课程。相比交互式数据流,成块式数据流的交互方式更加复杂。成块式数据流的特点像HTTP/FTP/HTTPS,这些协议的传输方式在TCP层面就是成块数据流。成块数据流对网络带宽消...

weixin_39926943的博客 144

智能汽车嘚啵嘚 --- 智能座舱第七稿:智能座舱的升级OTA

智能汽车嘚啵嘚 --- 智能座舱第七稿:智能座舱的升级OTA

Soly_kun的博客 414

TCP滑动窗口控制流量的原理

TCP的滑动窗口机制 TCP这个协议是网络中使用的比较广泛,他是一个面向连接的可靠的传输协议。既然是一个可靠的传输协议就需要对数据进行确认。TCP协议里窗口机制有2种:一种是固定的窗口大小;一种是滑动的窗口。这个窗口大小就是我们一次传输几个数据。对所有数据帧按顺序赋予编号,发送方在发送过程中始终保持着一个发送窗口,只有落在发送窗口内的帧才允许被发送;同时接收方也维持着一个接收...

296

学Simulink——十二脉波整流电路(移相变压器)谐波抵消仿真

Y:Δ = 1:√3(若 DC 同压)— 此处同相电压故 220V(Y)=220V(Δ phase)Y(相电压=220V)、Δ(线电压=380V ⇒ 相=220V,30° 移相)可经 Lbal​=0.5mH(平衡电抗)或直接短(大 L_dc 下均流尚可)✅ 直流输出纹波频率 = 12·f_line(vs 6·f_line)直流输出 → Ldc​=50mH→Cdc​=2200µF→R=30Ω。Line‑Line RMS = 380 V(⇒ 相=220V)Vdc​≈1.35⋅380≈513V(同 6‑脉波)

xiaoheshang_123的博客 59

3步!Spring Boot+OCR引擎秒提身份证/营业执照?手把手教你从零实现!

OCR技术革新文档识别效率 本文演示了如何利用Spring Boot+Tesseract OCR+OpenCV构建自动化文档识别系统。相比传统人工录入,OCR技术可实现: 5秒极速提取身份证/营业执照关键信息 精准识别中文文本(准确率90%+) 正则过滤自动匹配结构化数据 技术要点: OpenCV图像预处理(灰度化+二值化) Tesseract多语言OCR识别 正则表达式精准提取证件号码 效率提升达100倍,错误率降低90%,适用于金融、政务等需要批量处理证件的场景。

java专栏 905

TCP原理 滑动窗口

滑动窗口机制滑动窗口协议是传输层进行流控的一种措施,接收方通过通告发送方自己的窗口大小,从而控制发送方的发送速度,从而达到防止发送方发送速度过快而导致自己被淹没的目的,并且滑动窗口分为接收窗口和发送窗口。 滑动窗口协议的基本原理就是在任意时刻,发送方都维持了一个连续的允许发送的帧的序号,称为发送窗口;

ye2moe的博客 3858

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

TCP滑动窗口技术原理是什么?

然而,它也面临着一些挑战,例如在网络拥堵、丢包率高的情况下,如何精确地调整发送和接收数据的速率以确保数据传输的稳定性和可靠性是一个亟待解决的问题。TCP滑动窗口技术是TCP协议中一项重要的技术,它通过设定和调整窗口大小以及流量控制等方式,实现了高效的数据传输和稳定的网络通信。了解和学习TCP滑动窗口技术的原理和优势,对于提高网络通信的稳定性和可靠性具有重要的意义。(3)接收响应:服务器接收到客户端发送的数据后,会根据接收到的数据量和当前的网络状态进行流量控制,确保数据传输的稳定性和可靠性。

2501_90410679的博客 117

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

TCP滑动窗口(Sliding Window)原理

———————————————— 版权声明:本文为优快云博主「CQ小子」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.youkuaiyun.com/wdscq1234/article/details/52444277 TCP的优势 从传输数据来讲,TCP/UDP以及其他协议都可以完成数据的传输,从一端传输到另外一端,TCP比较出众的一点就是提供一个可靠的,流控的数据传输,所以实现起来要比其他协议复杂的多,先来看下这两个修饰词的意义: Reli

qlexcel的专栏 1671

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

TCP滑动窗口的原理 - 清楚TCP的三次握手和四次挥手,在配上TCP的滑动窗口的原理更有说服力哦!

TCP的滑动窗口 概要 我们了解滑动窗口之前先了解一下两个概念。 RTT : 发送一个数据包到收到对应ACK所消耗的时间。换句话说就是从发送数据到收到数据确认的时间差。 RTO: 重传时间间隔。TCP在发送数据包之后会启动一个重传定时器。而这个RTO就是这个重传的时间。在RTO的时间到达后还没收到来之对方的一个ACK确认,则会重新发送该数据包。这个RTO不是固定写死的配置,而是根据RTT这个时间...

微信公众号《后端学长》 388

Java面试必备:TCP滑动窗口的作用与原理详解

TCP(传输控制协议)作为互联网最核心的传输层协议之一,其可靠传输机制确保了数据在网络中的有序、无误传递。其中,滑动窗口(Sliding Window)技术是TCP协议实现流量控制和可靠传输的关键机制。本文将深入探讨TCP滑动窗口的作用、工作原理及其实现细节。

qq_58299462的博客 1071
上一篇: nginx限流与连接数限制
下一篇: 计算机网络-1概念
wiscourper_
博客等级 码龄17年 1641粉丝 272原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值