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设置的比上一次小的话,该值是不会作为新窗口大小通告给对方的。

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

SO_RCVBUF和SO_SNDBUF默认值

内核: cat /proc/version Linux version 2.6.32-431.23.3.el6.centos.plus.x86_64 (mockbuild@c6b9.bsys.de...

套接字选项(SO_RCVBUF和SO_SNDBUF)

有时候我们需要控制套接字的行为(如修改缓冲区的大小),这个时候我们就要学习套接字选项。   int getsockopt(int sockfd,int level,int optname,voi...

linux网络编程四:socket选项: SO_REUSEADDR, SO_RCVBUF, SO_SNDBUF

最近在看《linux高性能服务器编程》,在此做个日记,以激励自己,同时分享于有需要的朋友。 1. 读取和设置socket文件描述符属性: #include int getsocko...

setsockopt设置SO_SNDBUF

case SO_SNDBUF: /* Don't error on this BSD doesn't and if you think ...

SO_SNDBUF设置为0会发生什么事情

一个应用程序通过设定SO_SNDBUF为0把缓冲区关闭,然后发出一个阻塞send()调用。在这样的情况下,系统内核会把应用程序的缓冲区锁定,直到接收方确认收到了整个缓冲区后send()调用才返回。似乎...

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

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

SO_RCVBUF SO_SNDBUF

先明确一个概念:每个TCP socket在内核中都有一个发送缓冲区和一个接收缓冲区,TCP的全双工的工作模式以及TCP的滑动窗口便是依赖于这两个独立的buffer以及此buffer的填充状态。接收缓冲...

SO_SNDBUF and SO_RECVBUF

参见 http://stackoverflow.com/questions/4257410/what-are-so-sndbuf-and-so-recvbuf The "SO_" prefi...
  • wf1982
  • wf1982
  • 2014年08月27日 15:35
  • 5132

SO_SNDBUF设置为0会发生什么事情

chiway翻译的里面的一段 http://www.csdn.net/Develop/Read_Article.asp?Id=15224 一个应用程序通过设定SO_SNDBUF为0把缓冲区关闭...

ServerSocket选项的基本解析:SO_TIMEOUT选项、SO_REUSEADDR选项、SO_RCVBUF选项

1:SO_TIMEOUT选项      此选项表示等待客户连接的超时时间设置该选项:public void setSoTimeOut(int timeout) throws SocketExcepti...
  • woshisap
  • woshisap
  • 2011年07月11日 13:32
  • 14287
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:TCP滑动窗口和SO_RCVBUF之间的实际关系
举报原因:
原因补充:

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