参考:TCP的几个状态 (SYN, FIN, ACK, PSH, RST, URG)_lamb7758的博客-优快云博客_ack psh
wireshark 命令总结_丰梓林的博客-优快云博客_wireshark命令
1.SYN表示客户端发起请求,当服务端的端口未开启时,操作系统发送RST重置连接。
2.当服务端端口开启时,正常3次握手,SYN-->(SYN,ACK)-->ACK
3.四次挥手标志位FIN。有客户端或服务端发起
4.ACK的值代表下一个接收包的起始流水号。精确到字节。Seq,ACK双向确认,双向发送。PSH标志传输层消息体有数据发送
5.链路层,ip层,传输层,应用层(在传输层消息体)
6.TCP协议,因为滑动窗口机制(未解决传输慢时的问题),如果处理不及时,会产生粘包现象。传输层应用层都有可能产生半包粘包。
参考第3章_03-netty进阶-黏包半包-分析_哔哩哔哩_bilibili
7.直接关闭客户端程序时,客户端发送了一个[RST,ACK]就结束了。
一般地,当出现FIN包或RST包时,我们便认为客户端与服务器端断开了连接,服务端可以决定是否重连。
服务端直接关闭程序类似,
正常情况下,客户端关闭时发送FIN,再四次挥手
8.一次http响应有时会拆成多个tcp包,wireshark在最后个包显示类型为http
在这里已经解析合并
9.TCP保活
参考:c# - HttpResponseStream在Close时候,为什么要向Client发送 30 0D 0A 0D 0A ? - SegmentFault 思否
10.PacketSender 和 NetAssist发送接收测试
https://github.com/dannagle/PacketSender
发送http数据
抓包发送数据,复制应用层数据
packetsender发送接收数据
NetAssist 发送接收数据