『TCP/IP详解——卷一:协议』读书笔记——13
2013-08-24 16:03:39
- 4.6 ARP代理
ARP代理(Proxy ARP):如果ARP请求是从一个网络的主机发往另一个网络上的主机,那么连接这两个网络的路由器就可以回答该请求。这样可以欺骗发起ARP请求的发送端,使它误以为路由器就是目的主机,而事实上目的主机是在路由器的“另一边”。路由器的功能相当于目的主机的代理,把分组从其他主机转发给它。注:路由器在默认情况下不转发广播报文。

通过上边的例子,我们来说明下ARP代理的工作原理。首先当子网140.252.1(gemini)上的其他主机有一份IP数据报要传给地址为140.252.1.29的sun时,gemini比较网络号(140.252)和子网号(1),因为它们是相同的,因而在图上面的以太网发送IP地址140.252.1.29的ARP请求。路由器netb识别出该IP地址属于它的一个拨号主机,于是把它的以太网接口地址140.252.1作为硬件地址来回答。主机gemini通过以太网发送IP数据报到netb,netb通过拨号SLIP链路把数据报转发到sun。这个过程对于所有140.252.1子网上的主机来说都是看不见的,主机sun实际上是在路由器netb后面进行配置的。但是我们可以通过查ARP高速缓存表发现端倪。

我们发现两个表项的IP地址不同,但物理地址相同(物理地址是netb的),这就是使用了ARP代理的结果。
ARP代理的另外一个用途是链接两个网络号相同的网络,只要把中间的路由器设成一个ARP代理,以相应一个网络到另一个网络主机的ARP请求。这种技术在过去用来隐藏一组在不同物理电缆上运行的旧版TCP/IP主机。分开这些旧主机有两个共同的理由,其一是它们不能处理子网划分,其二是它们使用旧的广播地址(所有比特值为0的主机号,而不是目前使用的所有比特值为1的主机号)。
- 4.7 免费ARP
免费ARP(gratuitous ARP):指主机发送ARP查找自己的IP地址。通常,它发生在系统引导期间进行接口配置的时候。

在互联网中,如果我们引导主机bsdi并在主机sun上运行tcpdump命令,可以看到上图的分组。对于ARP请求中的各个字段来说,发送端的协议地址和目的端的协议地址是一致的:即主机bsdi的地址140.252.13.35。相当于问了一下网内的机器,有没有跟我起一样IP名字的人。
免费ARP的两个作用:
| 1. 一个主机可以通过它来确定另一个主机是否设置了相同的IP地址。主机bsdi并不希望对此请求有一个回答(这意味着至少有一方要改IP地址)。但是,如果收到一个回答,那么就会在终端日志上产生一个错误消息“以太网地址:a:b:c:d:e:f发送来重复的IP地址”。这样就可以警告系统管理员,某个系统有一个正确的设置 |
| 2. 如果发送免费ARP的主机正好改变了硬件地址(很可能是主机关机了,并欢乐一块接口卡,然后重新启动),那么这个分组就可以使其他主机告诉缓存中就得硬件地址进行相应的更新。一个比较著名的ARP协议事实是,如果主机收到某个IP地址的ARP请求,而且它已经在接收者的高速缓存中,那么就要用ARP请求中的发送端硬件地址(如以太网地址)对高速缓存中相应的内容进行更新。主机接收到任何ARP请求都要完成这个操作(ARP请求是在网上广播的,因此每次发送ARP请求时网络上的所有主机都要这样做)——这种事实有两种后果:(1)坏人可以用它来进行ARP攻击,发送错误的ARP请求,更改已有的ARP缓存表项,造成主机通信错误甚至无法链接。(2)用在正途,如果服务器发生故障,我们可以发送含有备份硬件地址和故障服务器的IP地址的免费ARP,使得备份文件服务器可以顺利地接替故障服务器进行工作。(但这种应用取决于客户端有正确的ARP实现) |
- 4.8 arp命令
arp -a #显示ARP高速缓存的所有内容
arp -d address #删除一个ARP表项
arp -s address hw_addr #设置一个arp表项,新增加的内容是永久的(没有超时值)
更多信息,包括设置ARP代理等,请查看手册。
- 4.9 小结
在大多数的TCP/IP实现中,ARP是一个基础协议,但是它的运行对于应用程序或系统管理员来说是透明的。ARP高速缓存在它的运行过程中非常关键,我们可以通过arp命令对告诉缓存进行检查和操作。高速缓存中的每一项内容都有一个定时器,根据它来删除不完整和完整的表项。arp命令可以显示和修改ARP高速缓存中的内容。
我们介绍了ARP的一般操作,同时也介绍了一些特殊的功能:委托ARP(当路由器对来自于另一个路由器接口的ARP请求进行应答时)和免费ARP(发送自己IP地址的ARP请求,一般发生在引导过程中)。
『TCP/IP详解——卷一:协议』读书笔记——13的更多相关文章
- 『TCP/IP详解——卷一:协议』读书笔记——10
2013-08-22 22:57:17 3.8 ifconfig命令 这个命令在Linux系统下可以通过下面的指令阅读说明文档: ifconfig 由于书中作者用的系统比较早的某Unix系统,所以我的 ...
- 『TCP/IP详解——卷一:协议』读书笔记——01
从今日起开始认真研读TCP/IP详解这本经典制作,一是巩固我薄弱的计算机网络知识,二来提高我的假期的时间利用率.将心得与思考记录下来,防止白看-哦耶 2013-08-14 18:47:06 第一章 概 ...
- 『TCP/IP详解——卷一:协议』读书笔记——18
2013-08-27 15:44:52 第7章 Ping程序 7.1 引言 “ping”这个名字来源于声纳定为操作.Ping程序由Mike Muuss编写,目的是为了测试另一台主机是否可达.该程序发送 ...
- 『TCP/IP详解——卷一:协议』读书笔记——14
2013-08-25 11:32:06 第5章 RARP:逆地址解析协议 5.1 引言 具有本地磁盘的系统引导时,一般是从磁盘上的配置文件中读取IP地址.但是无盘机,如X终端或无盘工作站,则需要采用其 ...
- 『TCP/IP详解——卷一:协议』读书笔记——11
2013-08-23 20:00:18 第4章 ARP:地址解析协议 4.1 引言 ARP(Address Resolution Protocol,地址解析协议)是获取物理地址的一个TCP/IP协议. ...
- 『TCP/IP详解——卷一:协议』读书笔记——07
2013-08-20 17:51:49 第三章 IP:网际协议 3.1 引言 IP是TCP/IP协议族中最为核心的协议.所有的TCP.UDP.ICMP和IGMP数据都以IP数据报格式传输.再来看一下图 ...
- 『TCP/IP详解——卷一:协议』读书笔记——06
2013-08-20 14:41:01 2.8 最大传输单元MTU MTU,最大传输单元:以太网和802.3对数据帧的长度都有一个限制,其最大值分别是1500和1492字节.这个不同网络对应的传输上限 ...
- 『TCP/IP详解——卷一:协议』读书笔记——05
2013-08-19 22:35:57 2.6 PPP:点对点协议 PPP点对点协议修改了SLIP协议中的所有缺陷: 1. 在串联链路上封装IP数据报的方法.PPP即支持数据为8位&无奇偶检验 ...
- 『TCP/IP详解——卷一:协议』读书笔记——04
2013-08-18 16:31:17 第2章 链路层 2.1 引言 链路层主要有三个目的: 为IP模块发送和接受IP数据报 为ARP模块发送ARP请求和接受ARP应答 为RARP发送RARP请求和接 ...
随机推荐
- http 错误 500.21
出现这个错误一般都是.net Framework 在iis中安装错误 这个时候需要重新安装iis .netframework 4.0框架 我的解决方案如下: 在cmd中以管理员身份运行->%wi ...
- latex学习--基础知识
1 文档结构 文档类.序言.正文 这三部分的基本语法如下: 文档类常用选项 标题.摘要.章节 目录 2 文字排版 字符输入 换行.换页.断字 字样.字号 3 常用命令环境 列表 对齐 摘录 原文照排 ...
- [Swift] 疑难杂症
[Swift] 疑难杂症 1.class .... has no initializers --> class 的每一个元素都需要初始化,否则会报错,除了可空元素
- 第十二章 redis-cluster搭建(redis-3.2.5)
redis集群技术 redis2.x使用客户端分片技术 redis3.x使用cluster集群技术 一.环境 os:centos7 ip:10.211.55.4 redis:3.2.5 gem-red ...
- java获取classpath
public class PathTest { public static void main(String[] args) { //获取根路径三种方式 System.out.println(Path ...
- submit 读取mb52数据
方法一: data:list_tab type table of abaplist. data:vlist(300) type c occurs 0 with header line. submi ...
- Oracle 表空间
表空间 编辑 本词条缺少信息栏,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! 表空间是数据库的逻辑划分,一个表空间只能属于一个数据库.所有的数据库对象都存放在指定的表空间中.但主要存放的是表 ...
- 构造 & 析构 & 匿名对象
以前仅知道创建对象,但对匿名对象的了解基本为0. 通过阅读google chromium源代码 中关于 log 的使用,查阅相关资料,了解了一下匿名对象,予以记录. 什么是匿名对象 匿名对象可以理 ...
- ABP的语言切换
在ABP官网http://www.aspnetboilerplate.com/创建一个Multi Page Web Application项目并打开,在Web项目下可以找到一个Controllers/ ...
- NSBundle控件和UIImageView和UIButton区别
1.NSBundle 1> 一个NSBundle代表一个文件夹,利用NSBundle能访问对应的文件夹 2> 利用mainBundle就可以访问软件资源包中的任何资源 3> 模拟器应 ...