《TCP/IP 详解 卷一》读书笔记 -----第四章 ARP
1、一个物理层的网络,例如以太网,可以同时被多个不同的网络层所使用。例如网络中的一些主机使用TCP/IP协议,其他主机使用其他的网络协议。
2、设备驱动软件从不关心IP数据报中的目的IP地址。这也是为什么要有ARP的原因。既然局域网中能够采用广播的方式传递数据,那为什么不把每个包都进行广播,然后让目的主机核对IP地址呢?原因就在于物理层首先需要核对数据帧中的目的物理地址是否与自己的地址相匹配,如果不匹配就可能被丢弃了,网络层都没有机会进行IP地址的匹配。而且每个包都使用广播的方式,让每台主机都到网络层才进行匹配,开销太大,显然设计是不合理的。
3、点对点链路不需要使用ARP,在链路配置时,需要告诉主机内核链路两端的IP地址,至于以太网之类的物理地址是不需要的。
4、当一台主机遇到针对自己的ARP请求时,它仅仅只是将自己的物理地址填充到ARP请求中的目的地址字段,然后分别将ARP请求中的两个源地址和两个目的地址互换,接着改变op字段,将ARP的类型由请求变为应答,最后发送回源主机。
5、以太网数据帧的大小最小为60个字节(不包含尾部4个字节),对于帧类型为ARP的以太网数据帧而言,以太网的报头占据了14个字节,ARP的相关信息占据了28个字节,所以仍然需要对数据帧进行相应的填充,以满足要求。
6、当系统收到一个ARP请求时,在发送一个ARP应答的同时,也会将该请求ARP的IP地址和物理地址保持在ARP缓存中。
7、ARP缓存中的数据不是永久保存的,一般的实现都是超过二十分钟未被使用,则该条记录废弃,同时如果该记录在有效期内又被使用了,则重新开始二十分钟的计时。
8、Proxy ARP:当一台主机,想要把数据发送到与之相连的路由器另一端的一台主机时,它其实得到的ARP应答其实是该路由器发出来的。因此,数据先是由源主机到达路由器,然后再路由器到达目的主机,在数据的整个传递过程中,目的IP地址是不变的,目的物理地址却一直在变。整条数据的传递路径上,除了源主机和目的主机外,其余的路由器都起到了代理作用。两台主机其实并不知道对方的物理地址,这也就是Proxy ARP的作用。
9、Gratuitous ARP:这一类ARP请求的特点就是,请求中的目的IP地址其实就是它自身的IP地址。为什么要这么做呢?原因有两个:一、在启动初期,确认网络中是否有主机的IP地址与自身重复,如果该ARP请求收到了回复,则说明IP地址有重复。二、让网络中的其他主机更新它们的ARP缓存,因为很有可能发送Gratuitous ARP的主机已经更换了网卡,物理地址已经变了,那么原本网络中其他主机内的ARP缓存的相关条目已经错误了,因此有必要通知它们进行更新。通常很多备份服务器在替换出问题的服务器时,会基于理由二发送Gratuitous ARP,以保证在IP地址不变的情况下,让其他客户机程序仍然能够与自己进行通信。