java - 发送带有Jpcap问题的SYN包

标签 java networking tcp jpcap

我想用 Jpcap 发送一个 SYN 数据包并得到响应,但是当我这样做时,我会自动发送一个 RST 数据包,但我不想发送 RST 数据包。如何停止发送RST数据包以及为什么要发送RST数据包

这是我的代码:

public class JavaApplication1 {

public static void main(String[] args) throws UnknownHostException, IOException {
    JpcapSender sender = JpcapSender.openDevice(JpcapCaptor.getDeviceList()[0]);
    NetworkInterfaceAddress[] nia = JpcapCaptor.getDeviceList()[0].addresses;        
    TCPPacket packet = new TCPPacket(57912, 80, 1, 0, false, false, false, false, true, false, false, false, 0, 0);
    packet.setIPv4Parameter(0, false, false, false, 0, false, true, false, 0, 34567, 64, IPPacket.IPPROTO_TCP, nia[0].address , InetAddress.getByName("www.google.com"));

    packet.data = ("").getBytes();

    EthernetPacket ether = new EthernetPacket();
    ether.frametype = EthernetPacket.ETHERTYPE_IP;
    ether.src_mac = ((NetworkInterface)JpcapCaptor.getDeviceList()[0]).mac_address;
    ether.dst_mac = new byte[]{(byte)200, (byte)205, (byte)114, (byte)68, (byte)129, (byte)162};

    packet.datalink = ether;
    sender.sendPacket(packet);
}

数据包:

57912 > http [SYN] Seq=0 Win=0 Len=0

http > 57912 [SYN, ACK] Seq=0 ACK=1 Win=14300 Len=0 MSS=1430

57912 > http [RST] Seq=0 Win=0 Len=0

最佳答案

您的 TCP/IP 堆栈正在为您做这件事,因为它看到了 SYN/ACK 响应,但不知道它的用途。你不能阻止它这样做。

你到底为什么要这样做?

关于java - 发送带有Jpcap问题的SYN包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13297277/

相关文章:

c - 如何解决recv将多个TCP段合并为一个的问题?

java - 背靠背多个 HttpExchange,使用 com.sun.net.httpserver.HttpServer 从第一次交换开始清理

c# - 如何在 TCP 客户端中读取未知数据长度

java - 何时使用 Java GUI

Java将一个数组放入另一个数组中

java - 我应该将 RMI 用于 Java 多人游戏吗?

run 方法中的 java.io.OptionalDataException?

sockets - 加入流Apache Spark

java - 从 Java 安全地连接到 Mysql?

java - 如何更改或使用创建对象的类中的变量?