20.4 窗口大小

20.4  窗口大小

由接收方提供的窗口的大小通常可以由接收进程控制,这将影响TCP的性能

默认设置发送和接收缓存去的大小为2048个字节

注意: 为了与硬件和网络实际情况最佳匹配, bufsize的值应该是相对较小的2的幂,例如4096。


显示了在改变发送和接收缓存大小(在单向数据流的应用中,如文件传输,只

需改变发送方的发送缓存和接收缓存大小)的情况下,

位于以太网上的两个工作站之间进行文件传输时的一些结构 

win概念:

本端的接收窗口,通告对端我当前我消费win个字节的的能力,不要发送太多,太多我有可能消费不了。
接收窗口就是滑动窗口,用来做tcp的流量控制,防止流量过载主机。
与接收窗口对应的还有一个发送窗口的概念,是做拥塞控制的,防止流量过载网络。








import socket
import time
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.connect(("192.168.137.2",8080))
s.send('qazwsxedcrfvtgbyhnujmikolp')

# s.shutdown(1)
# #time.sleep(10)
print s.recv(10)
# time.sleep(3000)



10:35:42.992208 IP 192.168.137.1.51142 > node1.webcache: Flags [S], seq 1894110875, win 31, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
10:35:42.992302 IP node1.webcache > 192.168.137.1.51142: Flags [S.], seq 730850429, ack 1894110876, win 1460, options [mss 1460,nop,nop,sackOK,nop,wscale 6], length 0
10:35:42.993070 IP 192.168.137.1.51142 > node1.webcache: Flags [.], ack 730850430, win 7, length 0
10:35:52.981188 IP 192.168.137.1.51142 > node1.webcache: Flags [P.], seq 1894110876:1894110878, ack 730850430, win 7, length 2
10:35:52.981240 IP node1.webcache > 192.168.137.1.51142: Flags [.], ack 1894110878, win 23, length 0
10:35:52.981393 IP node1.webcache > 192.168.137.1.51142: Flags [P.], seq 730850430:730850441, ack 1894110878, win 23, length 11
10:35:52.982207 IP 192.168.137.1.51142 > node1.webcache: Flags [R.], seq 1894110878, ack 730850441, win 0, length 0


控制窗口大小  win 31

SEND_BUF_SIZE = 9
RECV_BUF_SIZE = 8
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.setsockopt( socket.SOL_SOCKET, socket.SO_SNDBUF, SEND_BUF_SIZE)
s.setsockopt( socket.SOL_SOCKET, socket.SO_RCVBUF, RECV_BUF_SIZE)
print s.getsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF)
原文地址:https://www.cnblogs.com/hzcya1995/p/13348547.html