TCP超时重传算法
持续定时器:当收到的滑动窗口为0时,发送方会启动一个持续定时器,发送探测包判断接收方滑动窗口大小
糊涂窗口综合征:
有两种办法可以解决此问题:
针对接收方来说,先等一段时间,等到接收缓存有足够的空间了才发出确认。
针对发送方来说,发送方不要发送太小的报文,而是把数据积累成一个足够大的报文段(达到 MSS),或者是积累到接收方通告窗口大小一半的报文段。
如果发送方总是有很多小数据要发送怎么办呢?实际上,我们前面学习过 Nagle 算法,它正是用于解决这个问题的。Nagle 算法的目的就是把小数据组合成一个大报文段发送出去的。
–
向收到 RST 套接字执行写,会引发 SIGPIPE
对于服务器崩溃的情况,一般 readline 会返回
EHOSTUNREACH 错误(网络存在,但是主机不存在)
ENETUNREACH(网络不存在,可能是中间路由器宕机了)
ETIMEDOUT 主机存在,但是主机根本不响应。
flower 崩溃后重启(我们使用断网来模拟的),但是客户端对此毫不知情,客户端此时却仍然持有着一个《半打开的连接》,若继续向对端发送数据,flower 主机可以收到此报文,但是并不认识这个连接(因为 flower 已经重启,之前的连接早已不存在),因此回复了一个 RST 段。