ARP协议详解
ARP协议:地址解析协议,将IP地址映射到MAC地址。
ARP缓存:每个主机都有存储IP地址和MAC地址的缓冲区。每条记录最长生存时间为10分钟,如果一条记录2分钟没有使用,则会被删除。如果始终在使用,再分配2分钟,直到最长生命周期为止。
动态添加:发送ARP请求后,若网络上的主机发现自己的IP与ARP请求中的IP一致,会将发送方的IP地址和MAC地址记录到本机缓存,并回应ARP响应。发送方收到响应后,将接收方的IP地址和MAC地址记录到本机缓存。等生命周期到了,自动删除。
静态添加:通过ARP命令手动添加,始终存在,重启机器后消失。
ARP命令:可以通过arp -a 或者 arp -g查看本机的arp表。也可手动添加、删除记录。
过程:
A主机向B主机发送数据,要封装IP报头(源IP、目的IP等),再封装以太报头(源MAC、目的MAC)。而A知道自己的IP地址和MAC地址,也知道B的IP地址,却不知道B的MAC地址。此时需要ARP协议得到接收方的MAC地址。
(1)首先查询A主机的ARP缓存,查看是否有与B的IP地址对应的记录。
(2)如果本地ARP缓存中没有该记录,向局域网中广播ARP请求(包括发送方的IP地址、MAC地址、接收方的IP地址),每台主机接收到ARP请求后都检查自己的IP地址是否与ARP请求中的接收方IP地址相同,若不相同则丢弃ARP请求包。
(3)若相同,则B主机将A的IP地址和MAC地址添加到本地ARP缓存,并将自己的MAC地址通过ARP响应报文发送给A主机。
(4)A收到ARP响应报文后,将B的IP地址和MAC地址添加到本地ARP缓存。
ARP攻击:
ARP是建立在网络中主机相互信任的基础之上,主机不对ARP响应进行真实性检查,直接添加到ARP缓存中。黑客可以向主机发送错误的ARP响应,从而使主机发送的数据都发送到黑客的主机,所以有很大的安全隐患。
ARP协议详解的更多相关文章
- ARP协议详解之Gratuitous ARP(免费ARP)
ARP协议详解之Gratuitous ARP(免费ARP) Gratuitous ARP(免费ARP) Gratuitous ARP也称为免费ARP,无故ARP.Gratuitous ARP不同于一般 ...
- ARP协议详解之ARP动态与静态条目的生命周期
ARP协议详解之ARP动态与静态条目的生命周期 ARP动态条目的生命周期 动态条目随时间推移自动添加和删除. q 每个动态ARP缓存条目默认的生命周期是两分钟.当超过两分钟,该条目会被删掉.所以,生 ...
- ARP协议详解RARP
简单来说,ARP协议是IP地址转换成MAC地址的协议.链路层协议.过程如下: 1:首先,每个主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址之间的对应关系. 2:当源主机要 ...
- HTTP TCP UDP ICMP IP ARP 协议详解(10.15 第二十一天)
ARP协议 ARP(Address Resolution Protocol)协议 地址解析协议 把网络层的IP地址翻译成在数据链路层寻址的48位硬件地址(MAC地址) 在OSI模型中ARP协议属于链路 ...
- ARP缓存表的构成ARP协议全面实战协议详解、攻击与防御
ARP缓存表的构成ARP协议全面实战协议详解.攻击与防御 1.4.3 ARP缓存表的构成 在局域网的任何一台主机中,都有一个ARP缓存表.该缓存表中保存中多个ARP条目.每个ARP条目都是由一个IP ...
- 【转载】TCP /IP协议详解
首先,TCP/IP不是一个协议,而是一个协议族的统称. 里面包括了IP协议,IMCP协议,TCP协议,以及http.ftp.pop3协议等等. TCP/IP协议分层 提到协议分层,我们很容易联想到IS ...
- 入木三分学网络第一篇--VRRP协议详解第一篇(转)
因为keepalived使用了VRRP协议,所有有必要熟悉一下. 虚拟路由冗余协议(Virtual Router Redundancy Protocol,简称VRRP)是解决局域网中配置静态网关时,静 ...
- 第3章 TCP协议详解
第3章 TCP协议详解 3.1 TCP服务的特点 传输协议主要有两个:TCP协议和UDP协议,TCP协议相对于UDP协议的特点是 面向连接使用TCP协议通信的双方必须先建立连接,完成数据交换后,通信双 ...
- TCP /IP协议详解【转】
转自:https://www.jianshu.com/p/0cf648510bce?utm_campaign=maleskine&utm_content=note&utm_medium ...
随机推荐
- lua分割字符串终究版(转载,有改动)
来源http://codepad.org/BRHIS6WA --根据首字节获取UTF8需要的字节数 local function GetUTF8CharLength(ch) local utf8_lo ...
- Golang学习 - errors 包
------------------------------------------------------------ Go 语言使用 error 类型来返回函数执行过程中遇到的错误,如果返回的 e ...
- WPF 之 实现TextBox输入文字后自动弹出数据(类似百度的输入框)
1.添加一个数据实体类 AutoCompleteEntry,如下: using System; using System.Collections.Generic; using System.Linq; ...
- C# 之 判断或设置以管理员身份运行程序
一.判断程序是否以管理员权限运行 using System.Security.Principal; public bool IsAdministrator() { WindowsIdentity cu ...
- 自定义uiview 当没有数据的时候 显示自定义的uiview界面
// // ZSDTJNoDataView.h // ZSDTJNoDataView // // Created by Mac on 14-12-28. // Copyright (c) 2014年 ...
- [WinForm] VS2010的程序打包封装
因为学习的要求,我需要把自己的程序进行打包封装,开始也是苦恼,没有找到很好的办法,但并没有放弃,终于发现了一个差不多的文章,于是摸索着进行,可喜的是是成功了,下面和大家分享一下. 第一步:前提是你已经 ...
- SQL查询中的in与join效率比较
大多数情况下,程序员比较喜欢使用in来查询符合某些条件的数据,最近在查询某个角色有哪些用户的方法中,使用了in语句: ) FROM baseuser AND BaseUser.Id IN (SELEC ...
- 【Linux/Ubuntu学习 13】ubuntu上好用的pdf软件okular
step 1: 安装 sudo apt-get install okular step 2: 注释 按 F6 快捷方式打开注释功能,你会发现太神奇了. step 3: 中文配置 如果安装完成后中文显示 ...
- 从源码的角度解析View的事件分发
有好多朋友问过我各种问题,比如:onTouch和onTouchEvent有什么区别,又该如何使用?为什么给ListView引入了一个滑动菜单的功能,ListView就不能滚动了?为什么图片轮播器里的图 ...
- Java线程同步的方式
java允许多线程并发控制,当多个线程同时操作一个可共享的资源变量时(如数据的增删改查), 将会导致数据不准确,相互之间产生冲突,因此加入同步锁以避免在该线程没有完成操作之前,被其他线程的 ...