ARP协议原理

在网络通信中,是以IP地址来相互通信的,比如我要给114.114.114.114的IP通信,我在不知道他的MAC的情况下,我组建了一个以太网数据包,远程MAC当然只能乱填了,我把这个数据通过网关发出去后,数据包到达了114.114.114.114所在的网络后,由于MAC地址是乱填的,所有主机收到这些数据都把这个包扔掉了,所以数据虽然发出去了,但对方接收失败,那么就推出来ARP协议,用于在通信前,搜索某IP对应的MAC地址?

 

ARP协议,在通讯时,以太网头部数据14字节的目的MAC填的是FF FF FF FF FF FF全网络广播地址,ARP是建立在获取本地IP地址的情况下的,如果还没有本地IP地址,需要通过DHCP获取。

 

ARP报文的长度固定为42字节:
  EN段(14字节)1~6字节为0xFF,7~12为本机MAC地址,第13字节固定为0x08,最后一定节为0x06.
  ARP段(28字节)前8字节表示一些长度与版本,如00 01 08 00 06 04 00 01,其中第8字节为01表示arp请求,02表示得到回应
     第9~14字节表示本机MAC地址
      15~18字节表示本机的IP地址
      19~24字节表示为远程MAC地址,请求时全为0
      25~28为远程的IP地址

 

可以看到,ARP报文中,不需要任何的端口号支持,在windows程序设计下,不需要程序员自己处理的数据包,不过在单片机程序中,或者用抓包软件可以看到ARP请求与回应包的内容

 

请求包
FF FF FF FF FF FF 00 12 34 56 78 90 08 06 //以太网段
00 01 08 00 06 04 00 01 //ARP头,请求
00 00 00 00 00 00 C0 A8 00 01 00 12 34 56 78 90 C0 A8 00 96
可以看到,本地的MAC地址为00 12 34 56 78 90
          本地的IP地址为C0 A8 00 96(192.168.0.150)
          远程的MAC地址还没有,所以为0
          远程的IP地址为C0 A8 00 01(192.168.0.1)正在获取网关的MAC地址

 

得到的应答包
00 12 34 56 78 90 C0 61 18 66 54 88 08 06 
00 01 08 00 06 04 00 02 //ARP应达
C0 61 18 66 54 88 C0 A8 00 01 00 12 34 56 78 90 C0 A8 00 96
可以看到,成功获取到了192.168.0.1的MAC地址为C0 61 18 66 54 88

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值