簡體   English   中英

如何使用 Java 將自定義數據寫入 TCP 數據包頭選項字段?

[英]How to write custom data to the TCP packet header options field with Java?

正如它所定義的(參見: http ://www.freesoft.org/CIE/Course/Section4/8.htm),TCP 標頭有一個“選項”字段。 已經定義了幾個選項(請參閱: www.iana.org/assignments/tcp-parameters/ ),但我想提出自己的。 (用於實驗/研究。)

如何讓 Java 將一些自定義數據寫入(然后讀取)到選項字段?

額外的問題:如果它不能用 Java 完成。 什么樣的應用程序可以做到這一點? (不,我真的不想搞亂一些內核級別的 TCP/IP 堆棧實現,我想保持應用級別。)

JNetPcap 是一個庫,它允許您從包括 TCP 在內的低層更改標頭。 http://jnetpcap.com/node/29

這是一個簡單的例子:

byte[] pktBytes = FormatUtils.toByteArray("0015c672234c90e6ba92661608004500002d358c4000800600000a000b050a090028c26e270fb8b256e3a2009f785018faf01f550000746573740a");
JMemoryPacket packet = new JMemoryPacket(pktBytes);

packet.scan(Ethernet.ID); //Need to be done before doing any edits

//Editing Ip layer
Ip4 ip = packet.getHeader(new Ip4());
ip.source(new byte[] {2,6,0,0}); //Source Ip 2.6.0.0
ip.destination(new byte[] {1,2,3,4}); //Dest Ip 1.2.3.4

//Editing Tcp layer
Tcp tcp = packet.getHeader(new Tcp());
tcp.destination(5555); //Port destination 5555

if (pcap.sendPacket(packet) != Pcap.OK) {
    System.err.println(pcap.getErr());
}

暫無
暫無

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

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