使用 C 发送 ARP 数据包



我想知道如何用语言C发送ARP数据包,从套接字发送和发送的函数通过TCP或UDP发送,但我没有找到如何使用ARP。

在这种情况下,您必须使用 Raw Sockets,或者您可以使用一些 lib 来简化此操作,推荐的 lib 库是 libpcap,下面我写了一个简单的示例来使用 libpcap 发送数据包。

const int packet_size = 40; // change the value for real size of your packet
char *packet = (char *) malloc(packet_size)
pcap_t *handle = NULL;
char errbuf[PCAP_ERRBUF_SIZE], *device = NULL;
if ((device = pcap_lookupdev(errbuf)) == NULL) {
  fprintf(stderr, "Error lookup device", device, errbuf);
  exit(1);
}
if ((handle = pcap_open_live(device, BUFSIZ, 1, 0, errbuf)) == NULL) {
  fprintf(stderr, "ERRO: %sn", errbuf);
  exit(1);
}
// here you have to write your packet bit by bit at packet
int result = pcap_inject(handle, packet, packet_size);

在这种情况下,您必须创建所有数据包正文,请查看:有关 ARP 数据包的信息 http://www.cse.ohio-state.edu/cgi-bin/rfc/rfc1293.html,有关以太网帧的信息,请参阅 http://en.wikipedia.org/wiki/Ethernet_frame

最新更新