中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用wireshark分析tcp

發布時間:2021-11-09 18:09:58 來源:億速云 閱讀:254 作者:柒染 欄目:大數據

今天就跟大家聊聊有關如何使用wireshark分析tcp,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

今天使用wireshark來分析一下tcp的一些原理。首先我們建立一個tcp服務器

const net = require('net');
net.createServer().listen(11111);
 

再建立一個tcp客戶端。

const net = require('net');
net.connect({port: 11111, host: '192.168.8.226'})
 

我們逐個情況分析。
1 不啟動服務器,啟動客戶端。
我們看看這種情況下tcp的表現。先看看總覽。

如何使用wireshark分析tcp  

我們看到tcp首先發了一個syn包。  
 
如何使用wireshark分析tcp  

因為服務器沒有啟動,所以客戶端沒有收到sync+ack包,然后重傳了兩次。最后報錯。  
 
如何使用wireshark分析tcp  

2 啟動服務器,啟動客戶端。  
我們看看一次完整的tcp握手是怎樣的。  
 
如何使用wireshark分析tcp  

首先客戶端發送seq等于0的sync包,然后服務器返回一個sync+ack的tcp包。并且確認的序號是1。即1之前的序列號已經收到了。最后客戶端再發送一個ack包。這時候seq等于1,說明握手是占據序號的。ack也等于1。客戶端告訴服務器1之前的序列已經收到。這就完成了三次握手。那么三次握手意味著什么呢?又是怎么實現的呢?三次握手的本質其實就是在兩端記錄了一些上下文。比如服務器端記錄了我和哪個ip端口建立了連接。那么下次收到這個客戶端的時候包的時候,服務器就會從這個表里找,是否有記錄,有的話說明已經建立了連接,是個合法的請求。否則發送重置包給客戶端(我們可以使用c語言構造一個tcp報文)。


3 客戶端掛了(或者服務器掛了)
我們看一下,如果客戶端直接掛機了,tcp是怎么處理的。

如何使用wireshark分析tcp  

我們看到tcp會給服務器發一個重置包。


4 客戶端(或服務器)正常關閉連接
我們先改一下客戶端代碼

const net = require('net');
const socket = net.connect({port: 11111, host: '192.168.8.226'});
socket.on('connect', (client) => {
    socket.destroy()
})
 

上面的代碼使得客戶端完成三次握手后立刻開始四次握手關閉連接。我們看看tcp的表現。

如何使用wireshark分析tcp  

我們只看后面四行(四次揮手)。首先客戶端發送了一個fin包,但是我們發現seq是等于1,說明fin包是不消耗序列號的。同理,服務器首先返回了一個ack包。然后再發送一個fin包,等到客戶端返回ack。客戶端最后一次發送ack的時候,需要等到2msl。該ip和端口可以重用,除非設置了端口復用。


5 兩端一起關閉
我們把服務器代碼也改一下。

const net = require('net');
net.createServer((socket) => {
    socket.destroy();
}).listen(11111);
 

服務器完成三次握手的時候,在回調里立刻發送fin包。那么這時候tcp會怎樣處理呢?因為三次握手中,第三次握手是由客戶端發送的,客戶端發送第三次握手的時候,就進入了完成連接狀態(established)。而這時候服務器還沒有收到第三次握手的數據包。所以客戶端會先發送fin包。那么問題就來了。客戶端發送的fin包和第三次握手的ack包,哪個先到服務端,影響了后續的流程。下面就是這兩種情況。

如何使用wireshark分析tcp  
第三次握手的ack先到

 
如何使用wireshark分析tcp  
fin包先到

6 keep-alive  
tcp默認情況下是不會自動斷開的,需要調用方去控制。不過tcp還是做了一些優化,就是如果隔了一段時間,沒有數據傳輸,那么tcp就會發送探測包,如果還沒有數據傳輸或者沒有收到探測包的ack,則每隔一段時間再次發送探測包(這兩個一段時間的值,在window下貌似是一樣的,linux下可以不一樣)。發到一定的次數還沒有任何動靜,那么就發重置包給對端斷開連接。  
 
如何使用wireshark分析tcp  

我們看到三次握手后,我們沒有傳輸數據,tcp就會一直發送探測包。

看完上述內容,你們對如何使用wireshark分析tcp有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

泰州市| 辉南县| 博客| 娱乐| 清原| 高陵县| 新邵县| 开原市| 金川县| 安平县| 自贡市| 皋兰县| 蓬莱市| 加查县| 格尔木市| 永和县| 阳朔县| 仪陇县| 灵台县| 大城县| 资溪县| 龙岩市| 来安县| 洞头县| 天镇县| 江川县| 邹平县| 九台市| 开远市| 永泰县| 米泉市| 丹寨县| 长兴县| 贡嘎县| 新干县| 科技| 大关县| 灵寿县| 辉县市| 策勒县| 朝阳市|