TCP 窗口 "TCP/IP详解" 第十五章 读书笔记

2020-10-08  本文已影响0人  再凌

ssh连接每一次的键盘敲击意味着三个数据包: 发送到服务器, 服务器确认并回显, 客户端对回显的确认
如果客户端输入过快, 可能多个输入放在一个tcp数据包中.

一般ssh数据包每一个包都是PSH置位的, 意味着发送端发送缓存为空, 没有其他数据

Nagle算法

为了减少网络中存在的小型TCP包

策略:
在等到所有的ack前不发送数据, 在任意时刻只有一个网络包在传输中

弊端: 增大了延迟

如果一端启用了延时ACK, 一端启用了Nagle算法, 那么每一轮传输都有短暂的死锁

在要求低时延的程序中应该关闭Nagle算法

滑动窗口

零窗口

当产生0窗口的时候, 发送端持续探测, 发送了1字节的数据, 这样可以保证是可靠传输(0字节的包不是可靠传输)

糊涂窗口综合征

当接收方有一个小窗口就通告, 导致双方一直以一个很小的窗口传输数据, 导致传输的数据都是小包

解决方法: 窗口在大到一定程度前都不要再发送数据

自动调优

新版的系统会动态变化接受窗口(本地缓存)的大小, 如果能收到对方的包, 就增大自己的缓存, 否则缩小.(类似拥塞控制)

带外数据

使用TCP的URG指针来指明特殊数据, 这些数据应当被应用层额外的函数读取, 优先处理.

eg.

ssh中的Ctrl+C就应当被优先处理

上一篇下一篇

猜你喜欢

热点阅读