TCP窗口
一、窗口移动
1、在建立TCP连接时,接收端会告诉发送端自己的接收窗口。
2、发送端在发送数据时,会先为数据分包,编号,然后先发送窗口大小的数据(数据大于窗口大小),小于则全部发送了,窗口后的不允许发送。
3、发送的数据被放在缓存区,并为已发送数据启动定时器,确认超时则重发。
4、然后发送端等待接收端的确认信息,确认信息可能是无序的,并不会按照发送的顺序返回。
5、从窗口起始位置,如果确认消息已回,则窗口向前滑动已回确认消息的长度,如果后面的消息回,而初始消息未确认,则窗口不滑动。
6、接收端通过数据包序号完成拼包,保证消息的有序性(传输层)。
二、流量控制
1、窗口控制:接收端ACK返回窗口大小,发送方只能发送窗口内的数据,窗口可用为0不允许发送,若接收端发送可用窗口为0,则发送端会定时获取窗口大小,直到窗口不为0,允许再次发送。
2、Nagle算法:先探知窗口大小,然后将后续数据放入缓存区,拼成合适的报文再发送,在确认消息到达一定数量时再继续下次发送。
TCP窗口的更多相关文章
- TCP窗口扩大选项
TCP窗口扩大选项(TCP Window Scale Option) TCP窗口扩大选项 TCP Window Scale Option (WSopt) 窗口扩大选项用于扩大TCP通告窗口,使TCP的 ...
- tcp窗口机制(写的最简单精炼的文章)
tcp窗口机制(写的最简单精炼的文章) http://blog.csdn.net/occupy8/article/details/48468445
- 一站式学习Wireshark(五):TCP窗口与拥塞处理
https://community.emc.com/message/821593#821593 介绍 TCP通过滑动窗口机制检测丢包,并在丢包发生时调整数据传输速率.滑动窗口机制利用数据接收端的接收窗 ...
- tcp窗口滑动以及拥塞控制
转自:http://blog.chinaunix.net/uid-26275986-id-4109679.html TCP协议作为一个可靠的面向流的传输协议,其可靠性和流量控制由滑动窗口协议保证,而拥 ...
- tcp窗口滑动以及拥塞控制(转)
转自:http://blog.chinaunix.net/uid-26275986-id-4109679.html TCP协议作为一个可靠的面向流的传输协议,其可靠性和流量控制由滑动窗口协议保证,而拥 ...
- 网络编程之tcp窗口滑动以及拥塞控制
TCP协议作为一个可靠的面向流的传输协议,其可靠性和流量控制由滑动窗口协议保证,而拥塞控制则由控制窗口结合一系列的控制算法实现.一.滑动窗口协议 关于这部分自己不晓得怎么叙述才好,因为理解的部 ...
- 【转载】tcp窗口滑动以及拥塞控制
转自:http://blog.chinaunix.net/uid-26275986-id-4109679.html TCP协议作为一个可靠的面向流的传输协议,其可靠性和流量控制由滑动窗口协议保证,而拥 ...
- 计算机网络【七】:可靠传输的实现 (tcp窗口滑动以及拥塞控制)【转】
转自:http://blog.chinaunix.net/uid-26275986-id-4109679.html TCP协议作为一个可靠的面向流的传输协议,其可靠性和流量控制由滑动窗口协议保证,而拥 ...
- TCP窗口扩大选项Window Scale
窗口扩大选项使TCP的窗口定义从16bit增加到32bit.这并不是通过修改TCP首部来实现的,TCP首部仍然使用16bit,而是通过定义一个选项实现对16bit的扩大操作来完成的.于是TCP在内部将 ...
随机推荐
- 学习日记18、easyui 文件框上传文件
前台 <tr> <td style="width:100px; text-align:right;"> @Html.LabelFor(model => ...
- 通过Hadoop jmx收集Namenode,Jobtracker相关信息
经常会有一些Hadoop监控的需求,例如datanode节点掉线,Tasktracker blacklist的数量,以及Namenode,Jobtracker的内存GC信息等. 之前采用Hadoop ...
- 20175214 《Java程序设计》第11周学习总结
20175214 <Java程序设计>第11周学习总结 本周学习任务总结 1.根据<java2实用教程>和蓝墨云学习视频学习第十三章: 2.尝试将课本重点内容用自己的话复述手打 ...
- weui 框架
weui是一个框架,但是官方并没有提供文档: 所以我们需要在github上来通过案例来了解他的用法 一般做列表,左边的图片要么60x60,要么80x80用的比较多 weui是一个小巧的框架,所以带来的 ...
- Linux内核调试方法总结之Call Trace
内核态call trace 内核态有三种出错情况,分别是bug, oops和panic. bug属于轻微错误,比如在spin_lock期间调用了sleep,导致潜在的死锁问题,等等. oops代表某一 ...
- P1058立体图
一道大模拟 思路: 首先是打表找规律时间 仔细思考(暴力手算)后推出这么一个数组: //宽的增加量 ]={,,,};//1竖着摞,2横着摞,3前后摞 //长的增加量 ]={,,,};//1竖着摞,2横 ...
- ASP 数据库分页
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <% Response.buffer=false %> ...
- Emmet - 自动补全 JSX
VSCode 中设置"emmet.syntaxProfiles": {"javascript": "jsx"} reactjs - JSX ...
- MySQL使用命令导出/导入数据
导出数据库文件 常用命令 mysqldump -uroot -pMyPassword databaseName tableName1 tableName2 > /home/foo.sql mys ...
- python实现建立udp通信
实现代码如下: #udp协议通信import socket,timeclass UdpConnect: def get_udp(self,ip,port,message): #建立udp连接 myso ...