簡體   English   中英

嘗試發送帶數據的TCP SYN數據包和帶數據的RST,但原始數據字段在傳輸中消失了。 為什么?

[英]Attempting to send TCP SYN packet with data and RST with data, but raw data field disappears in transit. Why?

我正在嘗試制作原始TCP數據包,以在Linux客戶端和服務器上的原始套接字中通過Ether發送。 TCP數據包的特殊部分是,我試圖使用TCP SYN數據包和RST數據包的原始數據字段來回發送數據(以證明有關TCP協議未使用部分的概念)。

我已禁用服務器上iptables的RST數據包。

簡而言之,這是我目前的情況:

  1. 客戶端發送SYN,並將數據發送到服務器
  2. 服務器收到沒有數據的SYN數據包
  3. 服務器以帶有數據的RST數據包響應
  4. 客戶端收到沒有數據的RST數據包

但是,使用相同的套接字,我可以成功地做到這一點:

  1. 沒有數據發送到服務器的SYN
  2. 服務器收到一個SYN數據包
  3. 服務器以SYN ACK數據包作為響應
  4. 客戶端收到沒有數據的SYN ACK數據包
  5. 客戶端收到帶有數據的PSH ACK數據包

有人可以向我解釋為什么我發送的數據包似乎沒有以與我發送它們相同的方式到達服務器嗎?

為什么成功嘗試后會收到兩個數據包(一個帶有SYN ACK,一個帶有PSH ACK)?

SYN和RST數據包似乎丟失了數據,但SYN ACK數據包沒有丟失。 這是防火牆問題嗎?

如果是這樣,我該如何調試截獲數據包的內容?

謝謝!

原來VMWare虛擬適配器正在修改傳輸中的數據包。 當我在主機操作系統上捕獲數據包時,傳輸數據沒有任何問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM