TCP 之 抓包分析
首先,要對tcp通信有一定的了解,如何分析包seq,ack等。
不會的點這里
抓包出現 spurious retransmission
指實際上并沒有超時,但看起來超時了,導致虛假超時重傳的原因有很多種:
原因
(1)對于部分移動網絡,當網絡發生切換時會導致網絡延時突增
(2)當網絡的可用帶寬突然變小時,網絡rtt會出現突增的情況,這會導致虛假超時重傳
(3)網絡丟包(原始和重傳的包都有可能丟包)會導致虛假重傳超時。
tcp虛假重傳分析(摘自網絡)
分析
當Client端收到Server的SYN+ACK應答后,其狀態變為ESTABLISHED,并發送ACK包給Server;
如果此時ACK在網絡中丟失,那么Server端該TCP連接的狀態為SYN_RECV,并且依次等待3秒、6秒、12秒后重新發送SYN+ACK包,以便Client重新發送ACK包,以便Client重新發送ACK包。
Server重發SYN+ACK包的次數,可以通過設置/proc/sys/net/ipv4/tcp_synack_retries修改,默認值為5。
如果重發指定次數后,仍然未收到ACK應答,那么一段時間后,Server自動關閉這個連接。
但是Client認為這個連接已經建立,如果Client端向Server寫數據,Server端將以RST包響應,方能感知到Server的錯誤。
抓包結果
其他原因:
與網卡驅動能力有關,業務功能bug導致發出的包有細微差異,wireshark沒有很直觀地展現
WireShark出現的常見提示
TCP Out_of_Order的原因分析
一般來說是網絡擁塞,導致順序包抵達時間不同,延時太長,或者包丟失,需要重新組合數據單元,因為他們可能是由不同的路徑到達你的電腦上面。
TCP Retransmission原因分析
很明顯是上面的超時引發的數據重傳
TCP dup ack XXX#X原因分析
就是重復應答#前的表示報文到哪個序號丟失,#后面的是表示第幾次丟失
TCP previous segment not captured原因分析
意思就是報文沒有捕捉到,出現報文的丟失
下面就詳細的報文進行分析
示例
點擊進去,看最下面的異常情況分析即可。
?
?
報文分析時遇到的英文縮寫
SLE: Sequence Left Edge of already acknowledged data when Selective Acknowledgments are used. 即已收到tcp數據的左邊界。
SRE: Sequence Right Edge of already acknowledged data when Selective Acknowledgments are used. 即已收到tcp數據的右邊界。
?
?
?
?
本文來自:
https://www.cnblogs.com/stupidbug/articles/8144236.html
https://blog.csdn.net/huaishu/article/details/93739446
https://blog.csdn.net/chenfengdejuanlian/article/details/53761004
https://blog.csdn.net/season_hangzhou/article/details/48318599
總結
以上是生活随笔為你收集整理的TCP 之 抓包分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: outerDocument访问外部属性方
- 下一篇: 直接通过手机抓取GPS的qxdm日志