簡體   English   中英

TCP 3-way握手中是否可以獲得SYN / ACK數據包的TCP序列號?

[英]is it possible to get the TCP sequence number of SYN/ACK packet in TCP 3-way handshaking?

我有一個tcp客戶端程序,當它通過發送SYN與遠程tcp服務器啟動三向握手時,它將收到來自服務器的SYN / ACK,

是否可以讀取SYN / ACK數據包的序列號和確認序列號? 如果是這樣,該怎么做? 順便說一句,我正在Linux C上工作,謝謝!

是的,這是可能的,但是它不像傳統的套接字編程那樣容易。 這對您隱藏了握手階段。

您應該使用諸如pcap之類的內容來捕獲所需的內容。 或者, 原始套接字

使用原始TCP套接字。 創建原始套接字時有一個IPPROTO_TCP協議選項。 這樣,數據就是嵌入在鏈路層報頭中的所有內容,因此您將看到IP報頭,TCP報頭和接收到的每個數據包的有效載荷數據。 您需要從中解析序列。

參考TCP頭格式器

您可以使用linux或wirehark中的 tcpdump找出TCP序列或ACK編號。 然后,只需分析數據包就可以了。

但是,要構建自己的程序以找出TCP序列或ACK編號,則需要使用C中的pcap庫捕獲所有數據包,然后編寫代碼以僅嗅探數據包中的TCP序列和ACK編號。

如果您構建自己的數據包,則可以設置自己的TCP序列和ACK編號。 您可以使用Libnet做到這一點,構造自己的數據包或使用RAW套接字

如果您不熟悉pcap庫,則可以編寫一個簡單的bash腳本,該腳本將所有數據包捕獲的數據重定向到文件中,然后使用AWK / SED過濾技術找出TCP序列和ACK編號。

暫無
暫無

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

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