Linux arp命令详解及C/C++代码实现
ARP(地址解析协议)是一种网络协议,用于从 IP 地址中找出设备的硬件 (MAC) 地址。当设备想要与本地网络上的其他设备通信时使用它,发送设备使用 ARP 将 IP 地址转换为 MAC 地址。
设备发送一个 ARP 请求消息,其中包含接收设备的 IP 地址。 本地网段上的所有设备都会看到该消息,但只有具有该 IP 地址的设备会使用包含其 MAC 地址的 ARP 回复消息进行响应。 发送设备现在有足够的信息将数据包发送到接收设备。
ARP过程的解释:
假设主机 A 想与主机 B 通信。主机 A 知道主机 B 的 IP 地址,但不知道主机 B 的 MAC 地址。为了找出主机B的MAC地址,主机A发送一个ARP请求,列出主机B的IP地址作为目的IP地址,MAC地址为FF:FF:FF:FF:FF:FF(以太网广播) .交换机会将帧转发到所有接口。
网段上的每个设备都会收到该数据包,但由于目标 IP 地址是主机 B 的 IP 地址,因此只有主机 B 会回复 ARP 回复数据包,并列出其 MAC 地址。
Linux中的arp命令是什么
ARP 代表“地址解析协议”,是一种用于将 IP 地址映射到局域网上的物理 MAC 地址的协议。
在局域网上,客户端计算机尝试联系服务器,同一广播域上的两台计算机之间的通信是指局域网。ARP 缓存是一个 IP 地址表及其对应的 MAC 地址。
要查看 Linux 上的 ARP 表,请打开终端输入以下命令:
arp -a
可以在输出中看到您的计算机 ARP 表, 第一列是IP地址,第二列对应MAC地址。还可以通过使用 arp 命令指定 IP 地址来查找特定 IP 地址的 ARP 缓存条目:
arp -a <IP地址>
下面给出了一些 ARP 命令:
arp -s
该命令用于在ARP表中添加静态条目,将IP地址解析为物理地址。 要在 ARP 表中添加静态条目,在终端上编写 arp -s 命令以及设备的 IP 地址和 MAC 地址。
arp -s 192.168.67.15 00-a5-00-34-c3-09
下面我们来看看怎么在ARP 表中删除条目:
arp -d
当您要从特定接口的 ARP 表中删除条目时使用此命令。 要删除条目,请在要删除的命令提示符中写入 arp -d 命令以及 IP 地址。
arp -d 192.168.67.23
您还可以从 ARP 表中删除所有条目。 此命令将从表中删除或刷新所有条目。
arp -d *
Linux arp命令C/C++代码实现
int main(int argc, char **argv)
{int isInsert = 0;char *ip;int opt;/* 设置 socket */socket_fd = socket(AF_INET, SOCK_DGRAM, 0);if (socket_fd < 0){fprintf(stderr, "socket open failure: %s\n", strerror(errno));exit(EXIT_FAILURE);}/* 处理参数 */while ((opt = getopt(argc, argv, "vhai:g:d:s:")) != -1){switch (opt){case 'v':arp_debug();break;case 'h':arp_display_usage();break;case 'i':arp_debug_dump(optarg);arp_change_device(optarg);break;case 'a':arp_display_all();break;case 'g':arp_debug_dump(optarg);arp_get_entry(optarg);break;case 'd':arp_debug_dump(optarg);arp_delete_entry(optarg);break;case 's':/* 注意:对于 option s,需要在这里破解,并始终假设这是最后一个选项 */arp_debug_dump(optarg);isInsert = 1;ip = optarg;break; default:isInsert = 0;fprintf(stderr, "getopt failure: please run 'arp -h' for the usage\n");break;}}if(argc < 2){/* 显示 ARP 缓存中的所有条目 */arp_display_all();} /* 获取 MAC 地址的额外参数 */if (isInsert == 1){arp_debug_dump(argv[optind]);arp_set_entry(ip, argv[optind]);}/* 关闭套接字 */close(socket_fd);return 0;
}
编译运行:
总结
了解了 ARP 是什么以及它是如何工作的。 及如何查找本地网络的 ARP 缓存和特定 IP 地址。希望这将帮助您解决与网络相关的问题,更多详细信息可以查看man手册。
欢迎关注微信公众号【程序猿编码】,需要arp命令完整源码的添加本人微信号(c17865354792)
Linux arp命令详解及C/C++代码实现相关推荐
- linux arpwatch 命令详解
linux arpwatch 命令详解 功能说明:监听网络上ARP的记录. 语 法:arpwatch [-d][-f<记录文件>][-i<接口>][-r<记录文件> ...
- linux ifconfig 命令详解
linux ifconfig 命令详解 功能说明:显示或设置网络设备. 语 法:ifconfig [网络设备][down up -allmulti -arp -promisc][add<地址&g ...
- 【网络编程】Linux tcpdump命令详解---编辑中
目录 即看即用 详细说明 简介 输出信息含义 链路层头 TCP 数据包 UDP 数据包 SMB/CIFS 解码 AFS 请求和回应 KIP AppleTalk协议 IP 数据包破碎 时间戳 反向过滤 ...
- linux mingetty 命令详解
linux mingetty 命令详解 功能说明:精简版的getty. 语 法:mingetty [--long-hostname][--noclear][tty] 补充说明:mingetty适用于本 ...
- linux zip 命令详解
功能说明:压缩文件. 语 法:zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b <工作目录>][-ll][-n <字尾字符串>][-t <日期 ...
- linux zipinfo 命令详解
linux zipinfo 命令详解 功能说明:列出压缩文件信息. 语 法:zipinfo [-12hlmMstTvz][压缩文件][文件...][-x <范本样式>] 补充说明:执行zi ...
- Linux chkconfig命令详解
Linux chkconfig命令详解 (2011-03-07 15:49:04) 转载 标签: linux shell chkconfig 杂谈 分类: 工作*Linux chkconfig: ...
- linux uname 命令详解
linux uname 命令详解 功能说明:显示系统信息. 语 法:uname [-amnrsv][--help][--version] 补充说明:uname可显示电脑以及操作系统的相关信息. 参 数 ...
- linux mread 命令详解
linux mread 命令详解 功能说明:将MS-DOS文件复制到Linux/Unix的目录中. 语 法:mread [MS-DOS文件...][Linux文件或目录] 补充说明:mread为mto ...
最新文章
- html元素的分类有哪些?
- Android--制作开场动画/MediaPlayer OnCompletionListener
- android theme 使用方法,Android入门之Style与Theme用法实例解析
- python之爬虫(四)之 Requests库的基本使用
- Node.js安装及环境配置之Windows篇
- pix2pix, CycleGAN和pix2pixHD(没有公式,容易理解)
- 图像分类系统之功能实现概要
- 吴恩达机器学习视频学习笔记(4)
- linux源码(含有kfifo)下载
- word表格删除空白行java_Java批量删除Word中的空白段落
- php codeigniter 教程,CodeIgniter操作教程
- 微信公众号怎么发红包?
- r语言中的或怎么表示什么不同_R语言学习笔记(一)
- 非常棒的口才训练方法
- 事件循环libevent实现echoclient
- ISP--Black Level Correction(黑电平矫正)
- NameNode概述
- Go 语言几种运算符
- 路由dns劫持,路由器DNS劫持简单实现和防范分析
- win7下安装svn服务器端及客户端详细步骤
热门文章
- 详解《战地3》AA优化之道
- gojs去除水印,基于2.1
- 以root用户远程连接MySQL8.0问题总结
- 崮云湖街道:“钉钉子”精神破译发展密码
- iPhone双击背面打开粤康码
- js定义全局变量 vue页面_vue + typescript,定义全局变量或者方法
- python字体类型arial_Arial Narrow字体是Arial的()
- linux系统中drrwx-xr-x 用法详解
- 利用d3.js对大数据资料进行可视化分析
- 新建表ora-01031:insufficient privileges