您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關如何使用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的表現。先看看總覽。
3 客戶端掛了(或者服務器掛了)
我們看一下,如果客戶端直接掛機了,tcp是怎么處理的。
4 客戶端(或服務器)正常關閉連接
我們先改一下客戶端代碼
const net = require('net');
const socket = net.connect({port: 11111, host: '192.168.8.226'});
socket.on('connect', (client) => {
socket.destroy()
})
上面的代碼使得客戶端完成三次握手后立刻開始四次握手關閉連接。我們看看tcp的表現。
5 兩端一起關閉
我們把服務器代碼也改一下。
const net = require('net');
net.createServer((socket) => {
socket.destroy();
}).listen(11111);
服務器完成三次握手的時候,在回調里立刻發送fin包。那么這時候tcp會怎樣處理呢?因為三次握手中,第三次握手是由客戶端發送的,客戶端發送第三次握手的時候,就進入了完成連接狀態(established)。而這時候服務器還沒有收到第三次握手的數據包。所以客戶端會先發送fin包。那么問題就來了。客戶端發送的fin包和第三次握手的ack包,哪個先到服務端,影響了后續的流程。下面就是這兩種情況。
看完上述內容,你們對如何使用wireshark分析tcp有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。