[TODO] 抓包分析tcp3次握手+实现echo+运行情况分析 + 半连接队列和全连接队列


Linux 网络收发流程

tcp断开连接: RST与FIN

  • FIN表示正常关闭连接,没有数据丢失,缓冲区所有数据包都发送完成才会发送FIN包,这与RST不同。
  • RST表示复位,用来异常的关闭连接,在TCP的设计中它是不可或缺的。发送RST包关闭连接时,不必等缓冲区的包都发出去,直接就丢弃缓存区的包发送RST包。而接收端收到RST包后,也不必发送ACK包来确认。

代码验证

// 附录1,4和代码

  1. 如果正常关闭连接defer conn.Close(),抓包结果如下

  2. 如果不关闭连接退出程序 注释掉// defer conn.Close(), 抓包结果如下

echo 网络交互图 + 半连接队列和全连接队列

附录1.1, 5
半连接队列和全连接队列

参考

1.代码:用Golang实现 echo服务器/客户端
1.1 02.丢掉nc,自己实现echo客户端+各种命令查看进程信息
2.TCP三次握四次挥手里seq和ack号的【正确】理解 //这个博客写得很完善
3.Linux 网络收发流程
4.TCP协议之RST与FIN
5. 五分钟带你读懂 TCP全连接队列(图文并茂)

posted @ 2020-12-26 23:05  sicnu-yudidi  阅读(123)  评论(0编辑  收藏  举报