TCP 3握4挥
学习自https://mp.weixin.qq.com/s/yH3PzGEFopbpA-jw4MythQ
文中出现的问题是
TCP 3握 完成,但是服务端响应不到这个连接,这一点在程序启动的时候尤其明显
(判断出现这个问题的现象:client的56911端口 established,但是server没有对应连接)
推断出
accept队列满了(这里还有点深奥,后面细讲)
握手图
服务端一开始处于listen状态,然后有客户端发syn,这个时候服务端半连接队列会入栈1个元素,然后服务端发syn+ack,客户端再发ack,这个时候服务端半连接队列会出栈1个 元素,全连接队列会入栈1个元素。
如果在全连接队列满的时候,服务端就会晚一些发送syn+ack给客户端。
而syn、syn+ack后,客户端认为已经established了。两端出现了信息
这里的问题就出在全连接 队列的容量限制为50,在扩大到100后就不会再有这个问题了。
暂时就了解这么多了,挥手可能是对应 出栈入栈。
再讲一些老的知识点
为什么要挥手4次?
server需要发光报文
为什么最后一次ack后 还需要等待一会?
fin
ack
fin
ack->
wait
怕传送失败,打算超时重传来着!如果连接 保持着,资源就大大浪费了