日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
「教程」如何在Linux上統(tǒng)計(jì)TCP連接時(shí)長(zhǎng)(linux統(tǒng)計(jì)TCP連接時(shí)長(zhǎng))

教程:如何在Linux上統(tǒng)計(jì)TCP連接時(shí)長(zhǎng)

作為一名Linux系統(tǒng)管理員,網(wǎng)絡(luò)連接是我們經(jīng)常需要關(guān)注的一個(gè)數(shù)據(jù)和指標(biāo)。在處理網(wǎng)絡(luò)故障、優(yōu)化網(wǎng)絡(luò)性能等方面,了解TCP連接時(shí)長(zhǎng)的情況是非常有幫助的。本篇文章將介紹如何在Linux上統(tǒng)計(jì)TCP連接時(shí)長(zhǎng),讓你快速掌握各種TCP連接的情況。

1. 準(zhǔn)備工作

在開始統(tǒng)計(jì)TCP連接時(shí)長(zhǎng)之前,我們需要確保系統(tǒng)中已經(jīng)安裝了必要工具。這些工具主要包括:

– netstat:用于顯示網(wǎng)絡(luò)連接、路由表等信息。

– awk:用于數(shù)據(jù)處理和分析。

– sort:用于排序。

– uniq:用于去重。

大多數(shù)基于Linux的操作系統(tǒng)都默認(rèn)安裝了這些工具。你可以通過(guò)執(zhí)行以下命令來(lái)驗(yàn)證這些工具是否可用:

“`

$ which netstat awk sort uniq

“`

如果這些命令有任何輸出,則說(shuō)明這些工具已經(jīng)安裝并且可用。

2. 統(tǒng)計(jì)TCP連接時(shí)長(zhǎng)

2.1 使用netstat命令統(tǒng)計(jì)時(shí)長(zhǎng)

最簡(jiǎn)單的方法是使用netstat命令顯示當(dāng)前的TCP連接,并使用awk命令提取連接時(shí)長(zhǎng)。具體命令如下:

“`

$ netstat -npt | awk ‘/^tcp/ {print $4,$7}’ | awk -F: ‘{print $1,$2}’ | awk ‘{print $1,$2,$3,$4,$5,int($6/60)”:”int($6%60)}’

“`

這個(gè)命令會(huì)輸出一個(gè)連接列表,其中包含本地IP地址、本地端口、遠(yuǎn)程IP地址、遠(yuǎn)程端口和連接時(shí)長(zhǎng)。連接時(shí)長(zhǎng)以分鐘:秒的形式呈現(xiàn)。

2.2 使用腳本自動(dòng)統(tǒng)計(jì)時(shí)長(zhǎng)

如果需要定期獲取TCP連接時(shí)長(zhǎng)的情況,可以編寫一個(gè)腳本來(lái)自動(dòng)完成這個(gè)任務(wù)。以下是一個(gè)簡(jiǎn)單的bash腳本,可以在Linux上自動(dòng)統(tǒng)計(jì)TCP連接時(shí)長(zhǎng):

“`

#!/bin/bash

# 獲取當(dāng)前日期和時(shí)間

now=$(date +”%Y-%m-%d_%H:%M:%S”)

# 定義輸出文件

output_file=”/tmp/tcp_conn_$now.txt”

# 使用netstat命令查詢TCP連接,提取連接時(shí)長(zhǎng)

netstat -npt | awk ‘/^tcp/ {print $4,$7}’ | awk -F: ‘{print $1,$2}’ | awk ‘{print $1,$2,$3,$4,$5,int($6/60)”:”int($6%60)}’ > $output_file

echo “TCP連接時(shí)長(zhǎng)統(tǒng)計(jì)結(jié)果已經(jīng)保存到: $output_file”

“`

該腳本會(huì)將TCP連接時(shí)長(zhǎng)記錄在/tmp/tcp_conn_日期時(shí)間.txt中。

3. 統(tǒng)計(jì)連接數(shù)

如果需要統(tǒng)計(jì)TCP連接數(shù),我們可以使用以下命令來(lái)查看當(dāng)前的TCP連接數(shù):

“`

$ netstat -nat | awk ‘$1~/^tcp/ {print $NF}’ | sort | uniq -c | sort -rn

“`

該命令將輸出所有的TCP狀態(tài)和連接數(shù)。你可以使用uniq指令來(lái)去重并計(jì)數(shù),再利用sort命令的-rn選項(xiàng)按照連接數(shù)從大到小排序。

4.

通過(guò)以上介紹,我們已經(jīng)了解到如何在Linux上統(tǒng)計(jì)TCP連接時(shí)長(zhǎng)和連接數(shù)。這些信息對(duì)于管理網(wǎng)絡(luò)的系統(tǒng)管理員來(lái)說(shuō)是非常有用的。希望這篇文章可以幫助你輕松地獲取TCP連接的時(shí)長(zhǎng)以及其他網(wǎng)絡(luò)連接的信息。

成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián),建站經(jīng)驗(yàn)豐富以策略為先導(dǎo)10多年以來(lái)專注數(shù)字化網(wǎng)站建設(shè),提供企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),響應(yīng)式網(wǎng)站制作,設(shè)計(jì)師量身打造品牌風(fēng)格,熱線:028-86922220

Linux – CentOS 7 – 查看TCP/IP連接狀態(tài)

查看TCP/IP連接的狀態(tài)命令如下:

暢談linux下TCP(上)

tcp 協(xié)議 是互聯(lián)網(wǎng)中最常用的協(xié)議 , 開發(fā)人員基本上天天和它打交道,對(duì)它進(jìn)行深入了解。 可以幫助我們排查定位bug和進(jìn)行程序優(yōu)化。下面我將就TCP幾個(gè)點(diǎn)做深入的探討

客戶端:收到 ack 后 分配連接資源。 發(fā)送數(shù)據(jù)

服務(wù)器 : 收到 syn 后立即 分配連接資源

客戶端:收到ACK, 立即分配資源

服務(wù)器:收到ACK, 立即分配資源

既然三次握手也液銀顫不是100%可靠, 那四次,五次,六次。。。呢? 其實(shí)都一樣,不管多少次都有丟包問(wèn)題。

client 只發(fā)送一個(gè) SYN, server 分配一個(gè)tcb, 放入syn隊(duì)列中。 這時(shí)候連接叫

半連接

狀態(tài);如果server 收不到 client 的ACK, 會(huì)不停重試 發(fā)送 ACK-SYN 給client 。重試間隔 為 2 的 N 次方 疊加(2^0 , 2^1, 2^2 ….);直至超時(shí)才釋放syn隊(duì)列中的這個(gè) TCB;

在半連接狀態(tài)下, 一方面會(huì)占用隊(duì)列配額資源,另一方面占用內(nèi)存資源。我們應(yīng)該讓半連接狀態(tài)存在時(shí)間盡可能的小

當(dāng)client 向一個(gè)未打開的端口發(fā)起連接請(qǐng)求時(shí),會(huì)收到一個(gè)RST回復(fù)包

當(dāng)listen 的 backlog 和 somaxconn 都設(shè)置了得時(shí)候, 取兩者min值

Recv-Q 是accept 隊(duì)列當(dāng)前個(gè)數(shù), Send-Q 設(shè)置更大值

這種SYN洪水攻擊是一種常見(jiàn)攻擊方式,就是利用半連接隊(duì)列特性,占滿syn 隊(duì)列的 資源,導(dǎo)致 client無(wú)法連接上。

解決方案:

為什么不像握手那樣合并成三次揮手? 因?yàn)楹蛣傞_始連接情況,連接是大家都從0開始, 關(guān)閉時(shí)有歷史包袱的。server(被動(dòng)關(guān)閉方) 收到 client(主動(dòng)關(guān)閉方) 的關(guān)閉請(qǐng)求FIN包。 這時(shí)候可能還有未發(fā)送完的數(shù)據(jù),不能丟棄。 所以需要分開。事實(shí)可能是這樣

當(dāng)然,在沒(méi)有待發(fā)數(shù)據(jù),并且允許 Delay ACK 情況下, FIN-ACK合并還是非常常見(jiàn)的事情,這是三次揮手是可以的。

同上

CLOSE_WAIT 是被動(dòng)關(guān)閉方才有的狀態(tài)

。

被動(dòng)關(guān)閉方 到 期間的狀態(tài)為 CLOSE_WAIT, 這個(gè)狀態(tài)仍然能發(fā)鬧敗送數(shù)據(jù)。 我們叫做

半關(guān)閉

, 下面用個(gè)例子來(lái)分析:

這個(gè)是我實(shí)際生產(chǎn)環(huán)境碰到的一個(gè)問(wèn)題,長(zhǎng)連接會(huì)話場(chǎng)景,server端收到client的rpc call 請(qǐng)求1,處理發(fā)現(xiàn)請(qǐng)求包有問(wèn)題,就強(qiáng)制關(guān)閉結(jié)束這次會(huì)話, 但是 因?yàn)閏lient 發(fā)送 第二次請(qǐng)求之前,并沒(méi)有去調(diào)用recv,所以并不知道 這個(gè)連接被server關(guān)閉, 繼續(xù)發(fā)送 請(qǐng)求2 , 此時(shí)是半連接,能夠成功發(fā)送到對(duì)端機(jī)器,但是recv結(jié)果后,搏兆遇到連接已經(jīng)關(guān)閉錯(cuò)誤。

如果 client 和 server 恰好同時(shí)發(fā)起關(guān)閉連接。這種情況下,兩邊都是主動(dòng)連接,都會(huì)進(jìn)入 TIME_WAIT狀態(tài)

1、

被動(dòng)關(guān)閉方在LAST_ACK狀態(tài)(已經(jīng)發(fā)送FIN),等待主動(dòng)關(guān)閉方的ACK應(yīng)答,但是 ACK丟掉, 主動(dòng)方并不知道,以為成功關(guān)閉。因?yàn)闆](méi)有TIME_WAIT等待時(shí)間,可以立即創(chuàng)建新的連接, 新的連接發(fā)送SYN到前面那個(gè)未關(guān)閉的被動(dòng)方,被動(dòng)方認(rèn)為是收到錯(cuò)誤指令,會(huì)發(fā)送RST。導(dǎo)致創(chuàng)建連接失敗。

2、

主動(dòng)關(guān)閉方斷開連接,如果沒(méi)有TIME_WAIT等待時(shí)間,可以馬上建立一個(gè)新的連接,但是前一個(gè)已經(jīng)斷開連接的,延遲到達(dá)的數(shù)據(jù)包。 被新建的連接接收,如果剛好seq 和 ack字段 都正確, seq在滑動(dòng)窗口范圍內(nèi)(只能說(shuō)機(jī)率非常小,但是還是有可能會(huì)發(fā)生),會(huì)被當(dāng)成正確數(shù)據(jù)包接收,導(dǎo)致數(shù)據(jù)串包。 如果不在window范圍內(nèi),則沒(méi)有影響( 發(fā)送一個(gè)確認(rèn)報(bào)文(ack 字段為期望ack的序列號(hào),seq為當(dāng)前發(fā)送序列號(hào)),狀態(tài)變保持原樣)

TIME_WAIT 問(wèn)題比較比較常見(jiàn),特別是CGI機(jī)器,并發(fā)量高,大量連接后段服務(wù)的tcp短連接。因此也衍生出了多種手段解決。雖然每種方法解決不是那么完美,但是帶來(lái)的好處一般多于壞處。還是在日常工作中會(huì)使用。

1、改短TIME_WAIT 等待時(shí)間

這個(gè)是之一個(gè)想到的解決辦法,既然等待時(shí)間太長(zhǎng),就改成時(shí)間短,快速回收端口。但是實(shí)際情況往往不樂(lè)觀,對(duì)于并發(fā)的機(jī)器,你改多短才能保證回收速度呢,有時(shí)候幾秒鐘就幾萬(wàn)個(gè)連接。太短的話,就會(huì)有前面兩種問(wèn)題小概率發(fā)生。

2、禁止Socket lingering

這種情況下關(guān)閉連接,會(huì)直接拋棄緩沖區(qū)中待發(fā)送的數(shù)據(jù),會(huì)發(fā)送一個(gè)RST給對(duì)端,相當(dāng)于直接拋棄TIME_WAIT, 進(jìn)入CLOSE狀態(tài)。同樣因?yàn)槿∠?TIME_WAIT 狀態(tài),會(huì)有前面兩種問(wèn)題小概率發(fā)生。

3、tcp_tw_reuse

net.ipv4.tcp_tw_reuse選項(xiàng)是 從 TIME_WAIT 狀態(tài)的隊(duì)列中,選取條件:1、remote 的 ip 和端口相同, 2、選取一個(gè)時(shí)間戳小于當(dāng)前時(shí)間戳; 用來(lái)解決端口不足的尷尬。

現(xiàn)在端口可以復(fù)用了,看看如何面對(duì)前面TIME_WAIT 那兩種問(wèn)題。 我們仔細(xì)回顧用一下前面兩種問(wèn)題。

都是在新建連接中收到老連接的包導(dǎo)致的問(wèn)題

, 那么如果我能在新連接中識(shí)別出此包為非法包,是不是就可以丟掉這些無(wú)用包,解決問(wèn)題呢。

需要實(shí)現(xiàn)這些功能,需要擴(kuò)展一下tcp 包頭。 增加 時(shí)間戳字段。 發(fā)送者 在每次發(fā)送的時(shí)候。 在tcp包頭里面帶上發(fā)送時(shí)候的時(shí)間戳。 當(dāng)接收者接收的時(shí)候,在ACK應(yīng)答中除了TCP包頭中帶自己此時(shí)發(fā)送的時(shí)間戳,并且把收到的時(shí)間戳附加在后面。也就是說(shuō)ACK包中有兩個(gè)時(shí)間戳字段。結(jié)構(gòu)如下:

那我們接下來(lái)一個(gè)個(gè)分析tcp_tw_reuse是如何解決TIME_WAIT的兩個(gè)問(wèn)題的

4、tcp_tw_recycle

tcp_tw_recycle 也是借助 timestamp機(jī)制。顧名思義, tcp_tw_reuse 是復(fù)用 端口,并不會(huì)減少 TIME-WAIT 數(shù)量。你去查詢機(jī)器上TIME-WAIT 數(shù)量,還是 幾千幾萬(wàn)個(gè),這點(diǎn)對(duì)有強(qiáng)迫癥的同學(xué)感覺(jué)很不舒服。tcp_tw_recycle 是 提前 回收 TIME-WAIT資源。會(huì)減少 機(jī)器上 TIME-WAIT 數(shù)量。

linux 統(tǒng)計(jì)TCP連接時(shí)長(zhǎng)的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于linux 統(tǒng)計(jì)TCP連接時(shí)長(zhǎng),「教程」如何在Linux上統(tǒng)計(jì)TCP連接時(shí)長(zhǎng),Linux – CentOS 7 – 查看TCP/IP連接狀態(tài),暢談linux下TCP(上)的信息別忘了在本站進(jìn)行查找喔。

成都網(wǎng)站建設(shè)選創(chuàng)新互聯(lián)(?:028-86922220),專業(yè)從事成都網(wǎng)站制作設(shè)計(jì),高端小程序APP定制開發(fā),成都網(wǎng)絡(luò)營(yíng)銷推廣等一站式服務(wù)。


網(wǎng)站欄目:「教程」如何在Linux上統(tǒng)計(jì)TCP連接時(shí)長(zhǎng)(linux統(tǒng)計(jì)TCP連接時(shí)長(zhǎng))
標(biāo)題鏈接:http://www.dlmjj.cn/article/ccecooo.html