詳說TCP重傳問題的排查思路與實(shí)踐

導(dǎo)讀 本文總結(jié)自己工作過程中遇到的TCP重傳問題的解決過程 ,側(cè)重于大致的解決問題的思路與具體的實(shí)踐,理論知識(shí)偏少,大家有興趣的可以多查閱相關(guān)文章以便深入了解tcp的工作機(jī)制。
關(guān)于TCP重傳

TCP有重傳是正常的機(jī)制,為了保障數(shù)據(jù)傳輸可靠性。只是局域網(wǎng)環(huán)境,網(wǎng)絡(luò)質(zhì)量有保障,因?yàn)榫W(wǎng)絡(luò)問題出現(xiàn)重傳應(yīng)該極低;互聯(lián)網(wǎng)或城域網(wǎng)環(huán)境,線路復(fù)雜(可以想象下城市地下管網(wǎng),錯(cuò)綜復(fù)雜的電線桿等),網(wǎng)絡(luò)質(zhì)量不好保障,重傳出現(xiàn)概率較高。
詳說TCP重傳問題的排查思路與實(shí)踐

成都創(chuàng)新互聯(lián)公司專注于隴川網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供隴川營銷型網(wǎng)站建設(shè),隴川網(wǎng)站制作、隴川網(wǎng)頁設(shè)計(jì)、隴川網(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)閉等等等。

TCP/IP相關(guān)

排查網(wǎng)絡(luò)問題,要掌握TCP/IP原理,真相都在一個(gè)一個(gè)的數(shù)據(jù)包里。以下是和TCP重傳比較關(guān)鍵的幾個(gè)參數(shù)。

建立TCP鏈接時(shí)的參數(shù)

詳說TCP重傳問題的排查思路與實(shí)踐

TCP重傳類型

超時(shí)重傳

在請(qǐng)求包發(fā)出去的時(shí)候,開啟一個(gè)計(jì)時(shí)器,當(dāng)計(jì)時(shí)器達(dá)到時(shí)間之后,沒有收到ACK,則就進(jìn)行重發(fā)請(qǐng)求的操作,一直重發(fā)直到達(dá)到重發(fā)上限次數(shù)或者收到ACK。

快速重傳

當(dāng)接收方收到的數(shù)據(jù)包是不正常的序列號(hào),那么接收方會(huì)重復(fù)把應(yīng)該收到的那一條ACK重復(fù)發(fā)送,這個(gè)時(shí)候,如果發(fā)送方收到連續(xù)3條的同一個(gè)序列號(hào)的ACK,那么就會(huì)啟動(dòng)快速重傳機(jī)制,把這個(gè)ACK對(duì)應(yīng)的發(fā)送包重新發(fā)送一次。具體可以參考:
詳說TCP重傳問題的排查思路與實(shí)踐

常見問題與措施
單臺(tái)機(jī)器或單個(gè)應(yīng)用機(jī)器tcp重傳

可能是鏈接的服務(wù)器或端口無法訪問

詳說TCP重傳問題的排查思路與實(shí)踐

多臺(tái)機(jī)器或多個(gè)應(yīng)用同時(shí)tcp重傳

可能是網(wǎng)絡(luò)抖動(dòng)

查看網(wǎng)絡(luò)區(qū)域埋點(diǎn),查看網(wǎng)絡(luò)設(shè)備報(bào)警,看是否有區(qū)域網(wǎng)絡(luò)抖動(dòng)2區(qū)域網(wǎng)絡(luò)沒問題的話??梢杂贸R妴栴}:的方法縮小排查范圍

帶寬跑滿

1、查看主機(jī)監(jiān)控

不常見問題

1 網(wǎng)絡(luò)設(shè)備端口或光模塊異常等導(dǎo)致包c(diǎn)hecksum失敗 2 網(wǎng)絡(luò)路由收斂抖動(dòng) 3 主機(jī)網(wǎng)絡(luò)驅(qū)動(dòng)有bug,網(wǎng)絡(luò)設(shè)備有bug等

如何監(jiān)控

使用tsar -tcp -C 可以監(jiān)控到tcp的retran屬性也即是重傳次數(shù)。

    tsar --tcp -C | sed 's/:/_/g;s/=/ /g' | xargs -n 2

詳說TCP重傳問題的排查思路與實(shí)踐

感興趣的朋友可以直接執(zhí)行以下監(jiān)控 腳本獲取tcp相關(guān)的狀態(tài)監(jiān)控?cái)?shù)據(jù),適用于open-falcon。
詳說TCP重傳問題的排查思路與實(shí)踐

案例實(shí)踐

(1)在遇到丟包重傳的機(jī)器上抓包并使用wireshark 分析該包,注意因?yàn)橹貍鞑皇菚r(shí)刻都有的,所以抓包 命令是要持續(xù)執(zhí)行以便捕捉到重傳的包。使用wireshark打開tcpdump的結(jié)果,在搜索框里入手tcp.analysis.retransmission 得到如下結(jié)果:
詳說TCP重傳問題的排查思路與實(shí)踐

圖1 表明服務(wù)端發(fā)生了三次重傳動(dòng)作。

(2)由于包比較多,我們可以使用wireshark的追蹤流功能獲取重傳相關(guān)的tcp流。
詳說TCP重傳問題的排查思路與實(shí)踐

圖二 追蹤流-->TCP流 可以得到重傳相關(guān)的數(shù)據(jù)包
詳說TCP重傳問題的排查思路與實(shí)踐

圖三 可以看出客戶端和服務(wù)端的請(qǐng)求與應(yīng)答。

(3)解析重傳
詳說TCP重傳問題的排查思路與實(shí)踐

特別需要說明的是:

NO 67,68 client端由于某些原因沒有收到正確的包數(shù)據(jù),向server端發(fā)送dup ack,參考基礎(chǔ)知識(shí)提到的快速重傳

NO.68和NO.69之間的時(shí)間差200ms(關(guān)注time那一列,其他都是相差小于1ms),server等待超時(shí),于是重傳。

NO 73-74是client端發(fā)送了一個(gè)fin包并主動(dòng)關(guān)閉連接。

這個(gè)案例僅僅發(fā)生一次,沒有復(fù)現(xiàn),通過抓包解析出來分析沒有得到明確的結(jié)論。

小結(jié)

本文總結(jié)自己工作過程中遇到的TCP重傳問題的解決過程 ,側(cè)重于大致的解決問題的思路與具體的實(shí)踐,理論知識(shí)偏少,大家有興趣的可以多查閱相關(guān)文章以便深入了解tcp的工作機(jī)制。

原文來自:  https://www.linuxprobe.com/tcp-retransmission.html

分享題目:詳說TCP重傳問題的排查思路與實(shí)踐
分享路徑:http://bm7419.com/article36/jceepg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、關(guān)鍵詞優(yōu)化、App設(shè)計(jì)動(dòng)態(tài)網(wǎng)站、企業(yè)建站電子商務(wù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)