TCP滑动窗口和SO_RCVBUF之间的实际关系

原创 2011年01月21日 10:14:00

  上次转载了一篇文章http://blog.csdn.net/jwybobo2007/archive/2010/12/30/6107419.aspx, 上面提到了TCP窗口大小与SO_RCVBUF选项之间的关系.但其实这篇文章描述的是有问题的.

 

  在以Unix为核心的一些操作系统中(不一定都是),SO_RCVBUF选项确实决定了TCP窗口的大小.你设置为多少窗口就为多少.但在Windows上确并非如此,通过一些抓包工具分析后,你会发现这两者并不是一一对应关系,MSDN的说明上确实也告知这一事实.

  如使用Windows2003作服务器时,它的SO_RCVBUF在默认不设置的条件下为8192,但是握手时告知的窗口大小为16384,而后在正式的数据通信中又马上通知对方自己的窗口大小为65535.

 

  上面谈的只是一个问题,还有关于设置SO_RCVBUF的时机描述也有问题.服务端在accept前设置了缓冲区后可以向下继承,同样客户端connect前设置缓冲区大小可以在握手时通告窗口(上面说的Windows下的窗口和该设置关系不大,但通过测试还是有一定关系的),但实际上是可以随时设置 的(主要指的是Windows下面,其它系统不一定可以),一但设置后,会随着下一个ACK包,或者普通数据包通告给对方最新的TCP窗口大小,需要注意的是此时窗口只能增大,不能减小,也就是说SO_RCVBUF设置的比上一次小的话,该值是不会作为新窗口大小通告给对方的。

版权声明:本文为博主原创文章,未经博主允许不得转载。

windows socket编程函数(一)

5.1 Windows Socket 1.1库函数参考本章以字母顺序列出了套接口库函数,并介绍了技术细节。使用任一库函数时应在程序中包含WINSOCK.H头文件。在附录A.2中还列出了一些与BERKE...
  • hellosijian
  • hellosijian
  • 2011年07月29日 00:11
  • 5190

SO_RCVBUF和SO_SNDBUF默认值

内核: cat /proc/version Linux version 2.6.32-431.23.3.el6.centos.plus.x86_64 (mockbuild@c6b9.bsys.de...
  • jiangguilong2000
  • jiangguilong2000
  • 2015年01月27日 16:40
  • 8325

TCP滑动窗口和SO_RCVBUF之间的关系

在以Unix为核心的一些操作系统中,SO_RCVBUF选项决定了TCP窗口的大小,你设置为多少窗口就为多少。对于客户端,SO_RCVBUF选项必须在connect之前设置;对于服务器,SO_RCVBU...
  • farmwang
  • farmwang
  • 2017年03月21日 19:34
  • 411

[总结]TCP滑动窗口和SO_RCVBUF之间的关系

在以Unix为核心的一些操作系统中,SO_RCVBUF选项决定了TCP窗口的大小,你设置为多少窗口就为多少。对于客户端,SO_RCVBUF选项必须在connect之前设置;对于服务器,SO_RCVBU...
  • wangwenwen
  • wangwenwen
  • 2012年12月18日 09:45
  • 5111

TCP 滑动窗口及 MTU

TCP 滑动窗口:
  • lizhihaoweiwei
  • lizhihaoweiwei
  • 2014年09月07日 11:54
  • 1158

TCP/IP详解--TCP/IP可靠的原理 滑动窗口 拥塞窗口

TCP和UDP处在同一层---运输层,但是TCP和UDP最不同的地方是,TCP提供了一种可靠的数据传输服务,TCP是面向连接的,也就是说,利用TCP通信的两台主机首先要经历一个“拨打电话”的过程,等到...
  • yusiguyuan
  • yusiguyuan
  • 2014年09月02日 22:51
  • 3177

tcp滑动窗口以拥塞窗口和各种缓冲的总结

tcp总结
  • lishanmin11
  • lishanmin11
  • 2017年08月11日 11:02
  • 771

带宽时延积、TCP 滑动窗口和拥塞窗口

带宽时延积(BDP),带宽 * RTT
  • lkkey80
  • lkkey80
  • 2014年09月29日 13:21
  • 972

TCP 滑动窗口机制

本文要解决的问题: 了解滑动窗口机制的原理和基本方法。 (1).窗口机制     滑动窗口协议的基本原理就是在任意时刻,发送方都维持了一个连续的允许发送的帧的序号,称为发送窗...
  • sbq63683210
  • sbq63683210
  • 2016年08月03日 10:00
  • 1235

高性能网络编程7--tcp连接的内存使用

当服务器的并发TCP连接数以十万计时,我们就会对一个TCP连接在操作系统内核上消耗的内存多少感兴趣。操作系统里可配置的、貌似跟TCP内存相关的设置项却很让人疑惑,例如,tcp_rmem[2]和rmem...
  • russell_tao
  • russell_tao
  • 2014年01月23日 17:47
  • 31796
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:TCP滑动窗口和SO_RCVBUF之间的实际关系
举报原因:
原因补充:

(最多只允许输入30个字)