如果要在TCP/IP协议栈中选择一个"最不安全的协议",那么我会毫不犹豫把票投给ARP协议。 我们经常听到的这些术语,包括"网络扫描"、"内网渗透"、"中间人拦截"、"局域网流控"、"流量欺骗",基本都跟ARP脱不了干系。 大量的安全工具,例如大名鼎鼎的Cain、功能完备的Ettercap、操作傻瓜式的P2P终结者,底层都要基于ARP实现。 一、ARP概述% h- y1 a2 ^& K6 D% Q( }; _
听上去这么"逆天"的协议,其实技术原理简单的难以置信,例如ARP整个完整交互过程仅需要两个包,在一问一答中即可搞定!
% i" e( K3 ^6 j! A- S 作为初学者,我们必须先记住下面三句话:
) s1 x; }2 z+ ?7 E. X0 u4 L- t ①ARP(Address Resolution Protocol)即地址解析协议, 用于实现从 IP 地址到 MAC 地址的映射,即询问目标IP对应的MAC地址。 ②在网络通信中,主机和主机通信的数据包需要依据OSI模型从上到下进行数据封装,当数据封装完整后,再向外发出。所以在局域网的通信中,不仅需要源目IP地址的封装,也需要源目MAC的封装。 ③一般情况下,上层应用程序更多关心IP地址而不关心MAC地址,所以需要通过ARP协议来获知目的主机的MAC地址,完成数据封装。 接下来,我们通过图解的方式来深入了解ARP协议是如何工作的。 ( r$ P& I2 v+ J3 x# y A0 ] C' Y
二、ARP原理之请求应答" u4 `$ {# Y0 e- R$ ^( g3 S5 c4 f) k
同一个局域网里面,当PC1需要跟PC2进行通信时,此时PC1是如何处理的?
【干货】1分钟拿下这个“最不安全的”协议及智汇云校HCNA全套学习视频分享
根据OSI数据封装顺序,发送方会自顶向下(从应用层到物理层)封装数据,然后发送出去,这里以PC1 ping PC2的过程举例:
【干货】1分钟拿下这个“最不安全的”协议及智汇云校HCNA全套学习视频分享
PC1封装数据并且对外发送数据时,上图中出现了"failed",即数据封装失败了,为什么? 我们给PC1指令-"ping ip2",这就告知了目的IP,此时PC1便有了通信需要的源目IP地址,但是PC1仍然没有通信需要的目的MAC地址。这就好比我们要寄一个快递,如果在快递单上仅仅写了收件人的地址(IP),却没有写收件人的名字(MAC),那么这个快递就没法寄出,因为找不到你是谁。 那么,现在PC1已经有了PC2的IP地址信息,如何获取到PC2的MAC地址呢?此时,ARP协议就派上用场了。我们接着上面这张图:
【干货】1分钟拿下这个“最不安全的”协议及智汇云校HCNA全套学习视频分享
通过第三和第四步骤,我们看到PC1和PC2进行了一次ARP请求和回复过程,通过这个交互工程,PC1便具备了PC2的MAC地址信息。 接下来PC1会怎么做呢?在真正进行通信之前,PC1还会将PC2的MAC信息放入本地的【ARP缓存表】,表里面放置了IP和MAC地址的映射信息,例如 IP2<->MAC2。接下来,PC1再次进行数据封装,正式进入PING通信,如下:
; y) z, v, b) d* X
【干货】1分钟拿下这个“最不安全的”协议及智汇云校HCNA全套学习视频分享
- END - 经过上面6个步骤的处理,PC1终于把数据包发送出去了,之后便可以进行正常的通信了。 看到了吧,ARP的功能和实现过程是如此的简单:它在发送方需要目标MAC地址的时及时出手,通过"一问一答"的方式获取到特定IP对应的MAC地址,然后存储到本地【ARP缓存表】,后续需要的话,就到这里查找。 不过,既然是"缓存"表,意味着它有时效性,并且如果电脑或者通信设备重启的话,这张表就会清空;也就是说,如果下次需要通信,又需要进行ARP请求。在我们的windows/macos系统下,可以通过命令行"arp -a"查看具体信息。 智汇云校华为认证、红帽认证、Oracle认证培训,联系智汇云校周老师可免费观看全套HCNA视频.
【干货】1分钟拿下这个“最不安全的”协议及智汇云校HCNA全套学习视频分享
学校:智汇云校 QQ:896006006 微信:18575597769​(手机号同步)8 U! c% t& q2 D4 P, m+ I7 z# z
/ `# ~& l3 y( }. P& R) G7 ^* ?! `
|