告别环境冲突:用Anaconda虚拟环境为你的TensorFlow和JAX项目创建独立沙盒
2026/6/1 22:25:13
在网络通信中,TCP(传输控制协议)以其“可靠性”著称。而支撑这种可靠性的核心机制之一,就是滑动窗口(Sliding Window)。本文将结合课堂笔记,深入探讨滑动窗口的原理,并通过 Python 代码模拟高并发发送与慢速接收的场景,直观展示流量控制的过程。
在 TCP 报文头部中,有一个 16 位(2 字节)的字段叫做“窗口大小”。
TCP 是面向连接的,每个连接在 Linux 内核中都有两个独立的缓冲区:
send/write时,数据先进入这里。recv/read取走。数据流转路径:发送端应用层 -> 发送端写缓冲区 -> 网络传输 -> 接收端读缓冲区 -> 接收端应用层。
滑动窗口的动态调整过程如下:
为了直观观察滑动窗口的作用,我们编写一个 Python 程序。
time.sleep模拟极慢的处理速度。server.py)importsocketimporttime# 配置SERVER_IP='127.0.0.1'SERVER_PORT=8888# 为了演示效果,将系统接收缓冲区设置为极小值 (如 4KB)# 注意:系统通常有最小值限制,实际可能比设置略大RCV_BUF_SIZE=4096defstart_server():server=socket.socket(socket.AF_INET,socket.SOCK_STREAM)# 设置套接字选项:SO_RCVBUF 影响滑动窗口大小server.setsock