TCP自連線詳解

2021-09-26 06:53:39 字數 1396 閱讀 9561

自連線,就是具有相同ip,相同埠的客戶端連線上了服務端

2. 原因

2.1 連線的時候,沒有指定本地埠(local port),linux系統會在 net.ipv4.ip_local_port_range 指定的埠範圍內分配乙個未被占用的埠。比如選擇了埠n,如果n埠拒絕連線,就會傳送包含rst標誌的tcp報文段,本地 

2.2 tcp協議支援同時開啟 

(rfc 793 transmission control protocol 3.4. establishing a connection)

上面python指令碼過程說明: python self_connection.py 33000ip 都是127.0.0.1 

(1) 核心選擇埠n與port: 33000 連線, 33000埠未開啟,核心給 n埠返回 rst 標示的tcp報文段。 

(2) 選擇埠n+1,n+2,…, 直到 33000

33000 ----------->(syn)   33000

33000 (ack)

33000 埠 enstablished

自連線

TCP連線狀態詳解

下面是每乙個tcp連線在任意時刻可能處於的狀態,在linux下可以在netstat命令的最後一列 state列 裡看到。各個狀態的含義如下 closed 初始狀態,表示tcp連線是 關閉著的 或 未開啟的 listen 表示伺服器端的某個socket處於監聽狀態,可以接受客戶端的連線。syn rcv...

tcp連線flags詳解

在tcp層,有個flags欄位,這個欄位有以下幾個標識 syn,fin,ack,psh,rst,urg.其中,對於我們日常的分析有用的就是前面的五個字段。它們的含義是 syn表示建立連線,fin表示關閉連線,ack表示響應,psh表示有 data資料傳輸,rst表示連線重置。其中,ack是可能與sy...

TCP連線狀態詳解

closed 表示初始狀態。listen 表示伺服器端的某個socket處於監聽狀態,可以接受連線。syn sent 在服務端監聽後,客戶端socket執行connect連線時,客戶端傳送syn報文,此時客戶端就進入 syn sent狀態,等待服務端的確認 syn rcvd 表示服務端接受到了syn...