没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
转帖|行业资讯|编辑:龚雪|2015-01-04 09:27:41.000|阅读 631 次
概述:TCP是目前Internet上最为流行的传输控制协议,本文介绍了其工作原理。
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
TCP是目前Internet上最为流行的传输控制协议,即便你是搞存储的,我觉得多少也得知道点儿,因为在File-Level storage慢慢成为主角的今天,SMB、NFS、FTP等关键协议都依赖于TCP,就连block-level的iSCSI协议也是如此。窗口是TCP中一个极为重要的概念,它直接关系到TCP的一个关键功能-流量控制。今天我简单介绍下TCP发送窗口,从较为微观的角度去理解TCP是如何限制发送端可发送的数据量的。
我们知道TCP header中有一个Window Size字段,它其实是指接收端的窗口,即接收窗口,用来告知发送端自己所能接收的数据量,从而达到一部分流控的目的。假设你现在有10MB的数据要通过TCP发送,或许你点个按钮就开始发送了,然后就认为TCP仅仅是简单的把数据从一端挪到另一端(宏观上的确如此)。其实TCP在整个发送过程中,也在度量当前的网络状态,目的是为了维持一个健康稳定的发送过程。因此,这10MB数据是在某些机制的控制下进行传输的,其中一种重要机制就是窗口机制。发送端的发送窗口是基于接收端的接收窗口来计算的,我们可以把这10MB数据分为如下四类来看(见图):

已发送且已应答(Sent/Acked)
Sent/Acked数据的第一个字节是ISN+1,ISN是指在TCP建立连接时由SYN分段所选择的第一个编号。SYN Flag被当作是一个字节的数据,特地会被应答一次。因此,TCP连接上发送的数据的第一个字节编号就是ISN+1,被应答的数据的最后一个字节编号为【ACK编号-1】。例如,A发送1000个字节给B,假设ISN=1,则所要发送数据的第一个字节的编号为2,全部发送到B之后,B会应答1002,意思是说前1001(包括ISN)个字节我都收到了,请给我第1002个字节。所以,被应答的数据的最后一个字节的编号为1001。
已发送但尚未应答(Send/UnAcked)
Send/UnAcked数据的状态可能是正在传输的过程中,或是被网络丢弃了,或是已到达接收端但应答尚未被发送(因为Delayed-Ack),又或是应答正在传输过程中。为了区分Sent/UnAcked数据和Unsent/Inside数据,TCP维护一个叫做SND.NEXT的变量,它是下一个即将被发送的字节的编号。所以SND.NEXT的值将是下一个即将被发送的TCP分段的Sequence Number字段的值。Send/UnAcked数据的第一个字节是接收端上一次接受的应答分段的Acknowledge Number字段的值。
未发送,但位于当前发送窗口之内(Unsent/Inside)
Unsent/Inside数据是接收端允许发送端发送的数据,发送端可以发送窗口内的所有数据,无需等待应答以及窗口更新。换句话说,如果发送端停止发送并等待应答,那就说明已经没有Unsent/Inside的数据了。然而,如果遇到拥塞,发送端的流控机制,即slow start和congestion avoidance会阻止发送端发送所有位于接收窗口内的数据。在这种情况下,这些机制会主宰等待应答之前的可发送数据量。
未发送,但位于当前发送窗口之外(Unsent/Outside)
Unsent/Outside数据是位于当前发送窗口意外的数据,代表将来要发送的数据,但根据目前的接收窗口它们是不允许被发送的。接收端会丢弃无法保存在接收缓存区中的数据,并用当前的应答编号来应答发送端。
发送窗口的移动
发送窗口有一个左侧边缘和一个右边边缘。当收到一个带有更高Ack number的应答时,发送窗口的左侧边缘就会向右移动(close)。当收到的应答的Ack number+Window>之前的Ack number+Window时,发送窗口的右侧边缘会向右移动(open)。另外,发送窗口仅close但不open也是有可能的。比如发送端收到一个应答,它的Ack number增加了,但是窗口变小了,最终Ack number+Window并没有变化。这种情况发生在接收端收到了数据,但还没有把数据给应用层,因此Ack number会增加,但是窗口大小会减少同样多的值。
更多新体验,欢迎试用TCP安全信息开发控件。另外还有5折限时抢购和免费领iPhone 6、iPad air等好礼!
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com



近日,Stimulsoft 正式发布了2025.3 版本的报表工具,为 .NET 和 .NET Framework 平台带来了重要更新 —— 支持在报表计算过程中以解释模式运行 C# 脚本。这一功能将进一步提升报表的灵活性和扩展性,方便开发者在报表设计与运行中实现更多自定义逻辑。
在 Python 开发中处理 Microsoft Excel 文件,选择一个功能完善、易于使用的 Excel 库都能显著提升效率。Aspose.Cells for Python 兼顾了性能、灵活性与功能丰富度,能够满足不同业务场景下的表格处理需求。它不仅仅是一个读取 Excel 文件的工具,更是一套完整的电子表格处理引擎,已在金融、数据分析、自动化、报表生成等领域广泛应用。
传统的建模工具通常依赖于基于文件的存储方式,这种方式在处理小型项目时可能足够,但在面对大型团队和复杂模型时,往往会暴露出诸多问题,如文件版本冲突、数据一致性难以保证、扩展性受限等。企业级建模工具Sparx EA的DBMS存储库为企业提供了一种基于服务器的存储解决方案,通过将模型数据存储在企业级数据库管理系统(如Oracle和SQL Server)中,有效解决了这些问题。
TestComplete与BitBar的整合方案,成功破解了跨平台自动化测试的核心痛点。通过高效覆盖多技术栈、利用云端真机实现大规模并行测试、无缝融入CI/CD流程,团队得以将测试效率提升,显著加快反馈闭环,最终确保应用在多样化终端上的一致性与可靠性,驱动业务高效发展。
相关产品
最优化的网络通讯组件包,包含电子邮件、网络管理、文件传送、telnet、 HTTP等功能
IPWorks SSL为桌面或网络应用程序加入安全连接功能
IPWorks S/MIME为邮件、文件、新闻组文章提供S/MIME安全的组件
IPWorks Zip为桌面和网上应用程序添加压缩和解压功能的组件套包。
EDI Integrator用于收发基于AS2的Internet电子数据交换(EDI-INT)信息,实现Internet上EDI交易的安全传输。
相关文章 MORE
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@evget.com
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢
慧都科技 版权所有 Copyright 2003-
2025 渝ICP备12000582号-13 
渝公网安备
50010702500608号
首页