什么是ARP协议:
ARP协议,全称“Address Resolution Protocol”(地址解析协议),使用ARP协议,可以实现将IP地址解析成对应主机的物理地址(MAC地址)
为了能够正确的向目的主机发送数据,必须将目的主机的32位IP地址转换成为目的主机48位以太网地址(MAC地址).为了完成从ip地址向MAC地址的转换,就需要使用到ARP协议。
ARP协议和DNS服务有点相像之处。不同点:DNS是域名和IP之间的解析,且DNS需要配置服务,ARP不需要配置服务。
ARP协议要求通信的主机双方必须在同一个物理网段(即局域网)
小结:
arp协议主要是将ip和mac地址相互转换
arp协议工作在2层属于三层协议
arp协议要求通信的主机在同一个局域网内
 
ARP通信原理:

通信过程:
1)1.1的机器想和1.2通信,首先检查本地的arp缓存表,查看是否有1.2的MAC地址
2)本地arp表有1.2的mac地址就直接通信。没有1.2的mac地址,1.1就发送arp广播(携带自己的ip:mac,并广播请求1.2的mac地址)
3)所有的主机都接收到arp广播信息,但是有1.2主机才会响应请求,给1.1单播一个回复,并缓存1.1的mac地址
4)1.1将1.2的mac缓存在arp表中,并传输数据。
局域网主机数量过多的情况下,会使用vlan来进行隔离避免广播风暴。
 
arp缓存表是把双刃剑:
1)加速arp的解析速度(减少广播风暴)
2)有了arp表,给恶意的黑客带来了攻击主机的风险。arp欺骗(伪造网关mac地址),arp攻击
 
ARP欺骗原理
ARP攻击就是伪造IP地址和MAC地址对实现ARP欺骗,如果一台主机中了ARP病毒,那么它就能够在网络中产生大量的ARP通信量(它会以很快的频率进行广播),以至于使网络阻塞,攻击者只要不断的发出伪造的ARP响应包就能更改局域网中目标主机ARP缓存中的IP-MAC条目,造成网络中断或中间人攻击。
ARP攻击主要存在于局域网中。
ARP攻击就是通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量使网络阻塞,攻击者只要持续不断的发出伪造的ARP响应包就能更改目标主机ARP缓存中的IP-MAC条目,造成网络中断或中间人攻击
ARP攻击主要是存在于局域网网络中,局域网中若有一台计算机感染ARP木马,则感染该ARP木马的系统将会试图通过“ARP欺骗”手段截获所在网络内其它计算机的通信信息,并因此造成网内其它计算机的通信故障。
攻击者向电脑A发送一个伪造的ARP响应,告诉电脑A:电脑B的IP地址192.168.0.2对应的MAC地址是00-aa-00-62-c6-03,电脑A信以为真,将这个对应关系写入自己的ARP缓存表中,以后发送数据时,将本应该发往电脑B的数据发送给了攻击者。同样的,攻击者向电脑B也发送一个伪造的ARP响应,告诉电脑B:电脑A的IP地址192.168.0.1对应的MAC地址是00-aa-00-62-c6-03,电脑B也会将数据发送给攻击者。
 
为什么使用ARP协议
OSI模型把网络工作分为7层彼此不直接打交道,只通过接口(layer interface)进行通信。IP地址工作在第三层,MAC地址工作在第二层。当协议在发送数据包时,需要先通过第三层(IP地址),第二层(MAC地址)的报头。但协议只知道目的节点的ip地址,不知道其MAC地址,又不能跨第二,第三层,所以需要使用ARP协议服务。
 
arp缓存表生产环境中的实际应用:
1)高可用服务器在切换时要考虑到arp缓存表的问题(keepalived,heartbeat自动实现arp表的更新)
2)路由器迁移,机房设备准备切换,导致主备机故障等设备在无缝迁移时要考虑arp缓存的问题。例如:更换办公室路由器
 
相关命令:
arp -a 查看arp缓存表
arp -d 情况arp缓存表
ARP广播而进行新的地址解析
/sbin/arping -I eth0 -c 3 -s 10.0.0.162 10.0.0.253(目标地址)
/sbin/arping -U -I eth0 10.0.0.162
 
在172.16.10.76主机上没有.31的MAC地址解析
[root@CMPP80 ~]# arp -a
? (172.16.10.1) at 00:10:db:ff:10:04 [ether] on eth1
在172.16.10.31主机上发起对.76的MAC地址解析
[root@cmpp_90 ~]# arping -I eth0 -c 3 -s 172.16.10.31 172.16.10.76
ARPING 172.16.10.76 from 172.16.10.31 eth0
Unicast reply from 172.16.10.76 [6A:EE:BE:55:21:24] 1.949ms
Unicast reply from 172.16.10.76 [6A:EE:BE:55:21:24] 1.337ms
Unicast reply from 172.16.10.76 [6A:EE:BE:55:21:24] 1.237ms
Sent 3 probes (1 broadcast(s))
Received 3 response(s)
再看.76主机的arp表,已经有了.31的ip-mac条目
[root@CMPP80 ~]# arp -a
? (172.16.10.31) at 6e:45:1b:4c:d4:85 [ether] on eth1
? (172.16.10.1) at 00:10:db:ff:10:04 [ether] on eth1
在172.16.10.76主机上更新跟.76互通主机ip-mac地址
/sbin/arping -U -I eth1 172.16.10.76
 
arping 命令:
说明:arping是用于发送arp请求到一个相邻主机的工具;
arping使用arp数据包,通过ping命令检查设备上的硬件地址。
语法:arping [-fqbDUAV] [-c count] [-w timeout] [-I device] [-s source] destination
参数:
 
-c count表示发送指定数量的 ARP 请求 数据包后就停止。如果制定了deadline选项,则arping会等待相同数量的arp响应包,直到超时为止;
 
-b 用于发送以太网广播帧(FFFFFFFFFFFF)。arping一开始使用广播地址,在收到响应后就使用unicast地址。
-w timeout设定一个超时时间,单位是秒。如果到了指定时间,arping 还没有完全收到响应则退出;
-q quiet output 不显示任何信息;
-f 表示在收到第一个响应包后就退出;
-s source设定 arping 发送的 arp 数据包中的   SPA 字段的值。如果为空,则按下面处理
如果是 DAD 模式(冲突地址探测),则设置为 0.0.0.0;
如果是 Unsolicited ARP 模式(Gratutious ARP)则设置为目标地址;
否则从路由表得出;
-U 主动ARP模式来更新邻居的ARP缓存。 预期没有答复。
-I interface设置ping使用的网络接口;
destination设置目标地址。
 
服务器切换ARP问题
当网络中一台提供服务的集群宕机后,当其他正常运行的主机,接管宕机的机器的资源时,会因为客户端的ARP table cache的地址解析还是原来宕机机器的MAC地址,从而导致,客户依然无法访问的情况。
解决办法:当机器宕机。ip地址迁移到其他机器上时,需要使用arping命令来通知所有网络内机器清空其本地的ARP table cache。从而使客户机访问时重新广播获取MAC地址。
ARP广播而进行新的地址解析
/sbin/arping -I eth0 -c 3 -s 10.0.0.162(接管vip的正常主机) 10.0.0.253(不通的客户机或者是网关地址。)
/sbin/arping -U -I eth0 10.0.0.162(接管vip的主机)
 

LVS前奏-ARP知识回顾的更多相关文章

  1. Linux 虚拟机上安装linux系统 (ip:子网掩码,网关,dns,交换机,路由知识回顾)

    一 安装虚拟机 二 虚拟机上配置好在安装linux系统 三 知识回顾 交换机:主机在局域网内的身份是MAC地址(可以通过[交换机广播:交换机通过被动学习来建立一张“接口号”和“MAC地址”的对照表]或 ...

  2. python 全栈开发,Day32(知识回顾,网络编程基础)

    一.知识回顾 正则模块 正则表达式 元字符 : . 匹配除了回车以外的所有字符 \w 数字字母下划线 \d 数字 \n \s \t 回车 空格 和 tab ^ 必须出现在一个正则表达式的最开始,匹配开 ...

  3. [C#] C# 知识回顾 - 你真的懂异常(Exception)吗?

    你真的懂异常(Exception)吗? 目录 异常介绍 异常的特点 怎样使用异常 处理异常的 try-catch-finally 捕获异常的 Catch 块 释放资源的 Finally 块 一.异常介 ...

  4. [C#] C# 知识回顾 - 学会处理异常

    学会处理异常 你可以使用 try 块来对你觉得可能会出现异常的代码进行分区. 其中,与之关联的 catch 块可用于处理任何异常情况. 一个包含代码的 finally 块,无论 try 块中是否在运行 ...

  5. [C#] C# 知识回顾 - 学会使用异常

    学会使用异常 在 C# 中,程序中在运行时出现的错误,会不断在程序中进行传播,这种机制称为“异常”. 异常通常由错误的代码引发,并由能够更正错误的代码进行 catch. 异常可由 .NET 的 CLR ...

  6. [C#] C# 知识回顾 - 异常介绍

    异常介绍 我们平时在写程序时,无意中(或技术不够),而导致程序运行时出现意外(或异常),对于这个问题, C# 有专门的异常处理程序. 异常处理所涉及到的关键字有 try.catch 和 finally ...

  7. [.NET] C# 知识回顾 - Event 事件

    C# 知识回顾 - Event 事件 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/6060297.html 序 昨天,通过<C# 知识回顾 - ...

  8. [.NET] C# 知识回顾 - 事件入门

    C# 知识回顾 - 事件入门 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/6057301.html 序 之前通过<C# 知识回顾 - 委托 de ...

  9. [.NET] C# 知识回顾 - 委托 delegate (续)

    C# 知识回顾 - 委托 delegate (续) [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/6046171.html 序 上篇<C# 知识回 ...

随机推荐

  1. express和cors跨域

    使用express框架: Express: Express 是一个保持最小规模的灵活的 Node.js Web 应用程序开发框架,为 Web 和移动应用程序提供一组强大的功能. Express 框架核 ...

  2. python如何安装pip及venv管理

    问题1:如何安装pip python的虚拟环境virtualenv的管理 背景: (1)python的版本很多,每个应用项目可能需要使用不同的版本,这样会导致兼容性问题: python的插件相当的丰富 ...

  3. Web App架构

    Web App 架构分为两种:一种是工程架构,一种是项目架构. 工程架构则主要有以下几个方面的内容: 1, 解放生产力,我们希望在开发项目的过程中把全部目光都放到书写业务代码上,不需要去考虑一些重复性 ...

  4. codeforces479E

    Riding in a Lift CodeForces - 479E Imagine that you are in a building that has exactly n floors. You ...

  5. JQ初级

    一.认识jQuery 1.什么是jQuery jQuery是对原生JavaScript二次封装的工具函数集合 jQuery是一个简洁高效的且功能丰富的JavaScript工具库 2.jQuery的优势 ...

  6. opencv 增强现实(一):特征点检测

    import cv2 as cv import numpy as np def draw_keypoints(img, keypoints): for kp in keypoints: x, y = ...

  7. 学习Spring Boot:(十五)使用Lombok来优雅的编码

    前言 Lombok 是一种 Java™ 实用工具,可用来帮助开发人员消除 Java 的冗长,尤其是对于简单的 Java 对象(POJO).它通过注解实现这一目的. 正文 添加依赖 在 pom.xml ...

  8. 继续沿用旧的网络访问模式Apache HTTP 客户端,防止Android9闪退

    注意位置,在application 节点里面.

  9. <二>ELK-6.5.3学习笔记–使用rsyslog传输管理nginx日志

    http://www.eryajf.net/2362.html 转载于 本文预计阅读时间 28 分钟 文章目录[隐藏] 1,nginx日志json化. 2,发送端配置. 3,接收端配置. 4,配置lo ...

  10. Select文字居右显示

    使用text-align: right;不起作用,应当使用direction: rtl;