关于网络体系 ——arp协议
在数据链路层有自己的寻址机制,根据mac地址来进行通信,当一台主机把数据发送到另一台主机的时候,根据mac地址就行了,不关心ip数据报中的ip地址。硬件层次的数据交换必须要mac地址。
arp为ip地址和mac地址提供了映射,根据ip地址找出对应主机的mac地址。对于直连的主机,也就是在同一网段的主机,就直接请求对方的ip.对于非直连的主机,就根据路由表中的下一跳的地址去请求arp地址,请求的是网关或者默认路由的mac地址.
arp协议格式:
硬件类型 2个字节 表示以太网 协议类型 2个字节 0x0800 ip协议 硬件地址长度和协议地址长度 各1个字节 分别为6 和4 操作字段 2个字节
1为arp请求 2为arp应答
3为rarp请求 4为rarp应答
发送端硬件地址 6字节 发送端ip地址 4字节 目的硬件地址 6字节 目的ip地址
每个主机都有一个arp高速缓存,存放了最近网络地址到mac地址的映射记录,每一项生存时间大约为20min ,收到广播的arp请求的时候,会刷新表项内容.
arp -a 查看缓存表 arp -d 删除缓存表
arp请求 以太网头部的目的mac地址为全1 广播地址 数据部分中的mac为0 表示未知
arp请求是广播的,
arp回应 以太网头部的目的mac地址变为了单播地址 数据部分中的mac填了自己的地址
arp回应是单播的
免费arp:主机在引导阶段会发送一个arp请求来查询自己的ip地址,当然是不希望有回应的,如果有回应,那就说明有别的机器ip地址和自己重复了.
如果本机改变了mac地址,那么就可以刷新别的主机中的高速缓存
代理arp:指定一个主机(一般是路由器)用自己的mac来应答别的设备的arp请求