3. ARP协议

3.1 ARP(Address Resolution Protocol)协议的工作过程和安全隐患

(1)计算机A和C通信之前,先检查ARP缓存中是否有计算机C的IP地址对应的MAC地址。如果没有,就启用ARP协议发送一个ARP广播请求解析192.168.0.4的MAC地址。ARP广播帧目标MAC地址是FF-FF-FF-FF-FF-FF

(2)交换机将ARP广播帧转发到同一个网络的全部端口。这意味着同一个网段中的计算机都能够接到该ARP请求

(3)正常情况下,只有计算机C收到该ARP请求后发送ARP应答消息。还有不正常情况,网络中任何一台计算机都可以发送ARP应答,有可能告诉计算机A一个错误的MAC地址(ARP欺骗

(4)计算机A将解析到的结果保存在ARP缓存中(可通过arp -a命令查看),并保留一段时间,后续通信就使用缓存的结果,就不再发送ARP请求解析MAC地址。

3.2 ARP欺骗之“网络执法官”

(1)“网络执法官”局域网管理辅助软件

  可以通过周期性地解析本网段IP地址和MAC地址来统计哪些计算机在线和下线,它能够利用ARP欺骗来禁止与“关键主机”的通信或禁止与网络中所有计算机通信,并指定哪些地址是“关键主机”。

(2)“网络执法官”测试:禁止局域网内的某台计算机访问Internet

  ①选择“监控范围”(如192,168.80.1-192.168.80.254)并添加。这时软件会发送ARP请求给这个范围的每一个地址,通过统计收到的ARP响应,来发现网段有多少计算机在线。

  ②设置“关键主机”:“设置”菜单→“关键主机”→指定IP并添加。这里可以指定网关地址。

  ③限制计算机A与关键主机(D)通信:选中计算机A→右键“设定权限”→选择“发现该用户与网络连接即进行管理” →并选择“禁止与关键主机的TCP/IP连接”。如此,该计算机就不能与网关通信,即不能访问Internet。可以通过arp –a 命令查看到,该计算机A解析到网关的mac地址是一个错误的地址。

3.3 判断和防止ARP欺骗的方法

(1)故障现象:计算机不能和同一网段的某个计算机通信,但和其他计算机通信正常如果不是双方防火墙设置引起,就很可能是ARP欺骗引起的网络故障

(2)原因分析:如前面计算机A不能ping通网关,在排除了防火墙设置导致后,可以通过arp –a查看缓存的mac地址表中网关地址是否正确。如果不一致,就是ARP欺骗造成的网络故障了。

(3)解决方案为计算机A添加MAC地址静态映射

  ①arp -s 192.168.80.2 00-50-56-FD-90-E2 (网关IP和mac地址)。

  ②由于A和网关通信不再需要ARP协议来解析对方的MAC地址,“网络执行官”就不能通过ARP执行欺骗,网络就会通。

  ③说明:删除映射arp -d 192.168.80.2

3.4 扩展思考

(1)计算机A和B能否互通?

  ①A和B连接在同一交换机上。但所处网段不同。

  ②A和B互设对方为自己的网关(否则是不通。注意,这与第5章的5.2节案例是不同的!)

(2)互通的原因

  ①当计算机A ping 计算机B时,由于IP不在同一网段。尽管连接在同一交换机,但仍需要网关来转发。因此A就发送ARP请求(广播)网关B的MAC地址。由于同一交换机,这个广播会被转发到交换机的各个接口上,因此B会收到这个请回,如此A就能解释出B的MAC地址。因此A能ping通B。

  ②同理,B也能ping通A。

第7章 网络层协议(3)_ARP协议的更多相关文章

  1. 《TCP/IP详解卷1:协议》第11章 UDP:用户数据报协议-读书笔记

    章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...

  2. 《TCP/IP详解卷1:协议》第5章 RARP:逆地址解析协议-读书笔记

    章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...

  3. 软件开发架构介绍||OSI七层协议之物理层、数据链路层、网络层、传输层(mac地址、ip协议、断开协议、tcp协议之三次握手四次挥手)

    一.网络编程 软件开发架构 C/S架构 C:客户端 想体验服务的时候才会去找服务端体验服务 S:服务端   24小时不间断的提供服务,即时监听,随时待命 B/S架构 B:浏览器    想体验服务的时候 ...

  4. 【RL-TCPnet网络教程】第33章 SMTP简单邮件传输协议基础知识

    第33章      SMTP简单邮件传输协议基础知识 本章节为大家讲解SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)的基础知识,方便后面章节的实战操作. (本 ...

  5. 【RL-TCPnet网络教程】第25章 DHCP动态主机配置协议基础知识

    第25章      DHCP动态主机配置协议基础知识 本章节为大家讲解DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),通过前面章节对TCP和UDP ...

  6. (71)一篇文章带你熟悉HTTP协议

    作者:涤生_Woo链接:http://www.jianshu.com/p/6e9e4156ece3來源:简书著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 本篇文章篇幅比较长,先 ...

  7. 第一篇 网站基础知识 第5章 自己动手实现HTTP协议

    第5章 自己动手实现HTTP协议 我们知道HTTP协议是在应用层解析内容的,只需要按照它的报文的格式封装和解析数据就可以了,具体的传输还是使用的Socket,在第4章NioServer的基础上自己做一 ...

  8. 第五章Web应用与应用层协议

    Web应用与应用层协议 本篇博文中的主要参考文献是<计算机网络高级教程>,分别是吴功宜老先生和吴英教授合著.这部教程是我研究生老师所推荐的网络必读科目,由于该教程讲解的基础知识详细,但内容 ...

  9. 【知识强化】第四章 网络层 4.3 IP

    这节课我们来学习一下IP数据报的格式.那之所以把路由算法这一小节跳过呢,就是因为我们之后会要讲到路由的选择协议.那在路由选择协议这一块讲路由算法,我觉得是比较合适的.那我们先来看一下这节课要讲的知识. ...

  10. TCP协议与UDP协议的区别

    TCP协议与UDP协议的区别(转) 首先咱们弄清楚,TCP协议和UCP协议与TCP/IP协议的联系,很多人犯糊涂了,一直都是说TCP/IP协议与UDP协议的区别,我觉得这是没有从本质上弄清楚网络通信! ...

随机推荐

  1. mtail 部署说明

    了解一个工具最好的方式是先--help 下,看看支持的命令以及参数 启动mtail 最基本的参数: --logs 支持需要处理的log 文件,支持通过glob 模式的额查找,可以指定多次 --prog ...

  2. 拷贝某个区间(copy,copy_back)

    copy 为outputIterator中的元素赋值而不是产生新的元素,所以outputIterator不能是空的 如要元素安插序列,使用insert成员函数或使用copy搭配insert_itera ...

  3. Hi3516CV300 sample -> region

  4. java BitSet2

    15. int nextClearBit(int startIndex)返回第一个设置为 false 的位的索引,这发生在指定的起始索引或之后的索引上. 16. int nextSetBit(int ...

  5. mysql之 误用SECONDS_BEHIND_MASTER衡量MYSQL主备的延迟时间

    链接:http://www.woqutech.com/?p=1116 MySQL 本身通过 show slave status 提供了 Seconds_Behind_Master ,用于衡量主备之间的 ...

  6. OpenCV相机标定坐标系详解

    在OpenCV中,可以使用calibrateCamera函数,通过多个视角的2D/3D对应,求解出该相机的内参数和每一个视角的外参数. 使用C++接口时的输入参数如下: objectPoints - ...

  7. PostgreSQL的下载安装

    下载地址:http://www.postgres.cn/download 下载地址:http://www.filehorse.com/download-postgresql-64/ 下载地址2:htt ...

  8. Linux shell脚本读取用户输入的参数

    新建一个test.sh文件 #!/bin/sh echo "1 : For Test" echo "2 : For nohup &" whiletrue ...

  9. 一些常用的排序算法(C版)

    1. 直接插入排序(稳定排序) 简单的说就是将序列分为有序序列和无序序列.每一趟排序都是将无序序列的第一个元素插入有序序列中.R[1… i-1] <- R[i…n] , 每次取R[i]插入到R[ ...

  10. 阅读OReilly.Web.Scraping.with.Python.2015.6笔记---找出网页中所有的href

    阅读OReilly.Web.Scraping.with.Python.2015.6笔记---找出网页中所有的href 1.查找以<a>开头的所有文本,然后判断href是否在<a> ...