欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

kill一條TCP連接實(shí)現(xiàn)方法詳解

 更新時(shí)間:2022年11月02日 11:26:03   作者:扣釘日記  
這篇文章主要為大家介紹了kill一條TCP連接實(shí)現(xiàn)方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

簡介

如果你的程序?qū)懙糜忻?,打開了很多TCP連接,但一直沒有關(guān)閉,即常見的連接泄露場景,你可能想要在排查問題的過程中,先臨時(shí)kill一波泄露的連接。

又比如你要驗(yàn)證程序在遇到網(wǎng)絡(luò)錯(cuò)誤時(shí)的自愈能力,想手動(dòng)kill掉一些正常TCP連接,看程序是否能自動(dòng)重連并恢復(fù)運(yùn)行。

這些場景,都需要手動(dòng)kill一部分TCP連接,那在Linux下有哪些kill連接的方法呢?

kill活躍的TCP連接

使用ngrep或tcpkill命令可以殺死活躍狀態(tài)的TCP連接,用法如下:

# ngrep殺死連接
$ sudo ngrep -d any -K3 '' 'port 54690'
# 安裝tcpkill,及使用其殺死連接
$ sudo apt install dsniff  
$ sudo tcpkill -i any 'port 45308'

如上所示,可以發(fā)現(xiàn)在殺死連接時(shí),ngrep和tcpkill都向連接方發(fā)送了RST包。

實(shí)現(xiàn)原理

學(xué)過《計(jì)算機(jī)網(wǎng)絡(luò)》的同學(xué)都知道,TCP協(xié)議是通過FIN包與ACK包來做四次揮手,從而斷開TCP連接的,這是正常的TCP斷連過程,但TCP協(xié)議中還有RST包,這種包用于異常情況下斷開連接,Linux在收到RST包后,會(huì)直接關(guān)閉本端的Socket連接,而不需要經(jīng)歷四次揮手過程。

而上面的ngrep與tcpkill命令,正是通過給對(duì)方發(fā)送RST包,從而實(shí)現(xiàn)殺死TCP連接的。但要發(fā)送一個(gè)正確的RST包,需要知道TCP連接交互時(shí)所使用的序列號(hào)(seq),因?yàn)閬y序的包會(huì)被TCP直接丟棄,所以ngrep和tcpkill還會(huì)監(jiān)聽網(wǎng)卡上交互的包,以找到指定連接所使用的序列號(hào)seq。

所以,ngrep與tcpkill只能kill有流量的活躍TCP連接,對(duì)于空閑連接就無法處理了。

kill空閑的TCP連接

對(duì)于空閑狀態(tài)的TCP連接,可以用ss或hping3命令來處理,如下:

使用ss殺死連接

通過ss命令的-K選項(xiàng)可以用來kill連接,如下:

# 安裝ss命令
$ sudo apt install iproute2
# 使用ss殺死目標(biāo)端口為65987的連接
$ sudo ss -K dport = 65987

注意,使用這個(gè)功能需要你的內(nèi)核版本>=4.9,且打開了CONFIG_INET_DIAG_DESTROY選項(xiàng),因此某些情況下可能無法使用。

使用hping3殺死連接

如果無法使用ss命令,則可以考慮使用hping3命令來kill連接,hping3命令可以發(fā)任何類型的TCP包,因此只要模擬tcpkill的原理即可,如下:

  • 通過發(fā)送SYN包來獲取seq

上面提到了,TCP協(xié)議會(huì)直接丟棄亂序的數(shù)據(jù)包,但是對(duì)于SYN包卻區(qū)別對(duì)待了,如果你隨便發(fā)一個(gè)SYN包給已連接狀態(tài)的Socket,它會(huì)回復(fù)一個(gè)ACK,并攜帶有正確的seq序列號(hào),如下:

# 第一個(gè)參數(shù),表示發(fā)送包的目標(biāo)ip地址
# -a:設(shè)置包的源ip地址
# -s:設(shè)置包的源端口
# -p:設(shè)置包的目標(biāo)端口
# --syn:表示發(fā)SYN包
# -V:verbose output,使hping3輸出序列號(hào)seq
# -c:設(shè)置發(fā)包數(shù)量
$ sudo hping3 172.26.79.103 -a 192.168.18.230 -s 8080 -p 45316 --syn -V -c 1
using eth0, addr: 172.26.79.103, MTU: 1500
HPING 172.26.79.103 (eth0 172.26.79.103): S set, 40 headers + 0 data bytes
len=40 ip=172.26.79.103 ttl=64 DF id=16518 tos=0 iplen=40
sport=45316 flags=A seq=0 win=502 rtt=13.4 ms
seq=1179666991 ack=1833836153 sum=2acf urp=0

可以在輸出中找到,ack=1833836153即是對(duì)方回復(fù)的序列號(hào),我們用在后面的發(fā)RST包中。

  • 使用seq發(fā)RST包
# --rst:表示發(fā)RST包
# --win:設(shè)置TCP窗口大小
# --setseq:設(shè)置包的seq序列包
$ sudo hping3 172.26.79.103 -a 192.168.18.230 -s 8080 -p 45316 --rst --win 0 --setseq 1833836153 -c 1
HPING 172.26.79.103 (eth0 172.26.79.103): R set, 40 headers + 0 data bytes
--- 172.26.79.103 hping statistic ---
1 packets transmitted, 0 packets received, 100% packet loss
round-trip min/avg/max = 0.0/0.0/0.0 ms

整個(gè)過程如下:

可以發(fā)現(xiàn)前面我們用lsof查到的連接,在發(fā)送RST包后就查不到了,說明連接已經(jīng)被kill了。整個(gè)操作看起來有點(diǎn)麻煩,可以自己寫個(gè)腳本封裝一下。

以上就是kill一條TCP連接實(shí)現(xiàn)方法詳解的詳細(xì)內(nèi)容,更多關(guān)于kill TCP連接的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Git 2.27.0詳細(xì)安裝步驟詳解

    Git 2.27.0詳細(xì)安裝步驟詳解

    這篇文章主要介紹了Git 2.27.0詳細(xì)安裝步驟,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • VSCode開發(fā)必備插件推薦(墻裂推薦!)

    VSCode開發(fā)必備插件推薦(墻裂推薦!)

    vscode是微軟開發(fā)的的一款代碼編輯器,就如官網(wǎng)上說的一樣,vscode重新定義(redefined)了代碼編輯器,下面這篇文章主要給大家介紹了關(guān)于VSCode必備插件推薦的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • transform實(shí)現(xiàn)HTML5 video標(biāo)簽視頻比例拉伸實(shí)例詳解

    transform實(shí)現(xiàn)HTML5 video標(biāo)簽視頻比例拉伸實(shí)例詳解

    這篇文章主要介紹了transform實(shí)現(xiàn)HTML5 video標(biāo)簽視頻比例拉伸的相關(guān)資料,需要的朋友可以參考下
    2016-09-09
  • VS2019無法添加引用問題

    VS2019無法添加引用問題

    這篇文章主要介紹了VS2019無法添加引用問題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • 徹底解決頁面文字編碼亂碼問題

    徹底解決頁面文字編碼亂碼問題

    在HTML頁面中、Javascript腳本中、以及XML數(shù)據(jù)傳輸中,因?yàn)榫幋a導(dǎo)致的問題不計(jì)其數(shù)。
    2009-10-10
  • WebStorm 遇到的問題總結(jié)

    WebStorm 遇到的問題總結(jié)

    這篇文章主要介紹了WebStorm 遇到的問題總結(jié)的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • OB系統(tǒng)變量Variables及ODC管理會(huì)話功能詳解

    OB系統(tǒng)變量Variables及ODC管理會(huì)話功能詳解

    這篇文章主要為大家介紹了OB系統(tǒng)變量Variables及ODC管理會(huì)話功能詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • 永久解決VSCode終端中文亂碼問題

    永久解決VSCode終端中文亂碼問題

    這篇文章主要介紹了永久解決VSCode終端中文亂碼問題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • 聲音驗(yàn)證碼制作方法

    聲音驗(yàn)證碼制作方法

    收聽驗(yàn)證碼已經(jīng)比較普遍了,使用戶看不清楚的情況下可以通過耳朵來收聽驗(yàn)證碼,但網(wǎng)上搜了很久沒看到有具體的制作方法,自己想了想,還是按自己的方法來實(shí)現(xiàn)了,呵呵。
    2009-06-06
  • Scratch3.0初始化加載七牛云上的sbs文件的方法

    Scratch3.0初始化加載七牛云上的sbs文件的方法

    今天通過本文給大家介紹Scratch3.0初始化加載七牛云上的sbs文件的實(shí)例代碼,代碼簡單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-08-08

最新評(píng)論