簡體   English   中英

jPcap-將數據包發送到選定的MAC(不是選定的接口)

[英]jPcap - send packet to selected MAC (not the selected interface)

我正在嘗試使用jPcap將以太網數據包發送 jPcap 目標MAC地址

public void sendPacket(Packet packet, byte[] srcMac, byte[] dstMac, Interface i) throws IOException 
{
  JpcapSender sender = JpcapSender.openDevice(i.netInterface);
  EthernetPacket ether = new EthernetPacket();
  ether.frametype = EthernetPacket.ETHERTYPE_IP;
  ether.src_mac = srcMac;  // MAC address of selected interface
  ether.dst_mac = dstMac;  // MAC addr. choosed somwhere on form
  packet.datalink = ether;

  sender.sendPacket(packet);
  sender.close();
}

它可以工作,但是總是發送到選定的接口,而不是dst_mac

所以我不明白所選接口和scr_mac之間的關系:

  • 為什么我必須同時選擇兩者( interfacescr_mac )?
  • 為什么即使不使用它也必須添加dst_mac
  • 那么如何將數據包發送出我的計算機呢?

為什么我必須同時選擇兩者(接口和scr_mac)?

該接口是軟件用於通信(發送或接收數據包)的接口。 這通常是您的以太網卡。 您需要指定它,以便Jpcap知道如何發送信息。 src_mac地址是數據包頭的一部分。 它旨在動態使用,以便在發送數據包時以適當的信息對其進行更新。 src_mac不一定在數據包發送方式中起作用。

為什么即使不使用它也必須添加dst_mac?

使用。 確保具有通過直接以太網連接鏈接到源的具有指定mac地址的另一台設備,並確保已准備好接收數據。 現在,我懷疑正在發生的事情是您正在嘗試通過主機上的相同界面進行回讀。

Jpcap的網站上有一些我認為有用的教程和示例。 我已經在Jpcap庫上做了很多工作,如果您還有其他問題,我很樂意為您提供幫助。

暫無
暫無

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

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