導(dǎo)讀 | 本文總結(jié)自己工作過程中遇到的TCP重傳問題的解決過程 ,側(cè)重于大致的解決問題的思路與具體的實踐,理論知識偏少,大家有興趣的可以多查閱相關(guān)文章以便深入了解tcp的工作機制。 |
TCP有重傳是正常的機制,為了保障數(shù)據(jù)傳輸可靠性。只是局域網(wǎng)環(huán)境,網(wǎng)絡(luò)質(zhì)量有保障,因為網(wǎng)絡(luò)問題出現(xiàn)重傳應(yīng)該極低;互聯(lián)網(wǎng)或城域網(wǎng)環(huán)境,線路復(fù)雜(可以想象下城市地下管網(wǎng),錯綜復(fù)雜的電線桿等),網(wǎng)絡(luò)質(zhì)量不好保障,重傳出現(xiàn)概率較高。
成都創(chuàng)新互聯(lián)公司專注于隴川網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供隴川營銷型網(wǎng)站建設(shè),隴川網(wǎng)站制作、隴川網(wǎng)頁設(shè)計、隴川網(wǎng)站官網(wǎng)定制、小程序開發(fā)服務(wù),打造隴川網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供隴川網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
TCP有重傳,也不一定是網(wǎng)絡(luò)層面的問題。也可能是接收端不存在,接收端receive buffer滿了,應(yīng)用程序有異常鏈接未正常關(guān)閉等等等。
排查網(wǎng)絡(luò)問題,要掌握TCP/IP原理,真相都在一個一個的數(shù)據(jù)包里。以下是和TCP重傳比較關(guān)鍵的幾個參數(shù)。
超時重傳
在請求包發(fā)出去的時候,開啟一個計時器,當(dāng)計時器達到時間之后,沒有收到ACK,則就進行重發(fā)請求的操作,一直重發(fā)直到達到重發(fā)上限次數(shù)或者收到ACK。
快速重傳
當(dāng)接收方收到的數(shù)據(jù)包是不正常的序列號,那么接收方會重復(fù)把應(yīng)該收到的那一條ACK重復(fù)發(fā)送,這個時候,如果發(fā)送方收到連續(xù)3條的同一個序列號的ACK,那么就會啟動快速重傳機制,把這個ACK對應(yīng)的發(fā)送包重新發(fā)送一次。具體可以參考:
可能是鏈接的服務(wù)器或端口無法訪問
可能是網(wǎng)絡(luò)抖動
查看網(wǎng)絡(luò)區(qū)域埋點,查看網(wǎng)絡(luò)設(shè)備報警,看是否有區(qū)域網(wǎng)絡(luò)抖動2區(qū)域網(wǎng)絡(luò)沒問題的話。可以用常見問題:的方法縮小排查范圍
1、查看主機監(jiān)控
1 網(wǎng)絡(luò)設(shè)備端口或光模塊異常等導(dǎo)致包checksum失敗 2 網(wǎng)絡(luò)路由收斂抖動 3 主機網(wǎng)絡(luò)驅(qū)動有bug,網(wǎng)絡(luò)設(shè)備有bug等
使用tsar -tcp -C 可以監(jiān)控到tcp的retran屬性也即是重傳次數(shù)。
tsar --tcp -C | sed 's/:/_/g;s/=/ /g' | xargs -n 2
感興趣的朋友可以直接執(zhí)行以下監(jiān)控
腳本獲取tcp相關(guān)的狀態(tài)監(jiān)控數(shù)據(jù),適用于open-falcon。
(1)在遇到丟包重傳的機器上抓包并使用wireshark 分析該包,注意因為重傳不是時刻都有的,所以抓包
命令是要持續(xù)執(zhí)行以便捕捉到重傳的包。使用wireshark打開tcpdump的結(jié)果,在搜索框里入手tcp.analysis.retransmission 得到如下結(jié)果:
圖1 表明服務(wù)端發(fā)生了三次重傳動作。
(2)由于包比較多,我們可以使用wireshark的追蹤流功能獲取重傳相關(guān)的tcp流。
圖二 追蹤流-->TCP流 可以得到重傳相關(guān)的數(shù)據(jù)包
圖三 可以看出客戶端和服務(wù)端的請求與應(yīng)答。
(3)解析重傳
特別需要說明的是:
NO 67,68 client端由于某些原因沒有收到正確的包數(shù)據(jù),向server端發(fā)送dup ack,參考基礎(chǔ)知識提到的快速重傳
NO.68和NO.69之間的時間差200ms(關(guān)注time那一列,其他都是相差小于1ms),server等待超時,于是重傳。
NO 73-74是client端發(fā)送了一個fin包并主動關(guān)閉連接。
這個案例僅僅發(fā)生一次,沒有復(fù)現(xiàn),通過抓包解析出來分析沒有得到明確的結(jié)論。
本文總結(jié)自己工作過程中遇到的TCP重傳問題的解決過程 ,側(cè)重于大致的解決問題的思路與具體的實踐,理論知識偏少,大家有興趣的可以多查閱相關(guān)文章以便深入了解tcp的工作機制。
原文來自: https://www.linuxprobe.com/tcp-retransmission.html
分享題目:詳說TCP重傳問題的排查思路與實踐
分享路徑:http://www.yijiale78.com/article36/jceepg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、關(guān)鍵詞優(yōu)化、App設(shè)計、動態(tài)網(wǎng)站、企業(yè)建站、電子商務(wù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)