ARP

ARP

地址解析协议

尝试解决的问题:假设有两台电脑AABBAA持有IP(B)IP(B),希望查询到MAC(B)MAC(B)AABB可以通过一次交换机SS相互抵达(它们在同一个局域网中)

地址簿

每台电脑会维护一个地址簿BOOK()BOOK(\cdot),里面存放了IP(itemi) MAC(itemi)IP(item_i)\ MAC(item_i)等一系列数据项,如果IP(B)IP(B)存在于BOOK(A)BOOK(A)中,那MAC(B)MAC(B)自然也就能被查到了,如果不能,我们使用ARP协议来解决这个问题

解决方案

A(IP(A),MAC(A),IP(B))SA\overset{(IP(A),MAC(A),IP(B))}{\rightarrow} S

Sbroadcast(IP(A),MAC(A),IP(B))CADJ(S)S\overset{(IP(A),MAC(A),IP(B))}{\underset{broadcast}{\rightarrow}} \forall C\in ADJ(S)

CADJ(S)\forall C\in ADJ(S)insert(IP(A),MAC(A)) into BOOK(C)insert (IP(A), MAC(A))\ into\ BOOK(C)

for Bfor\ BIP(B)=IP(mine)IP(B)=IP(mine)B(IP(A),MAC(A),IP(B),MAC(B))SB\overset{(IP(A),MAC(A),IP(B),MAC(B))}{\rightarrow} S

S(IP(A),MAC(A),IP(B),MAC(B))AS\overset{(IP(A),MAC(A),IP(B),MAC(B))}\rightarrow A

insert(IP(B),MAC(B)) into BOOK(A)insert(IP(B),MAC(B))\ into\ BOOK(A)

ARP欺骗

本来BOOK(A)BOOK(A)中希望存放一条IP(B) MAC(B)IP(B)\ MAC(B)的记录,现在欺骗AA存放IP(B) MAC(another)IP(B)\ MAC(another),让它随后发信息时,以为它正在往BB电脑发送信息,但是实际上信息全部到anotheranother电脑上去了

ARP请求为广播形式发送的,网络上的主机可以自主发送ARP应答消息,并且当其他主机收到应答报文时不会检测该报文的真实性就将其记录在本地的MAC地址转换表,这样攻击者就可以向目标主机发送伪ARP应答报文,从而篡改本地的MAC地址表