网络基本知识(1) ARP解析

来源:互联网 发布:编程助手app 编辑:程序博客网 时间:2024/05/16 17:44

IP地址是一个32位的二进制数(这里我们说的都是IPV4),通常用 " 点分十进制 " 表示  “a.b.c.d”。地址分类的话,其实大多数同学都知道,我就大概的说一下:

A类:0.0.0.0~127.255.255.255.255;

B类:128.0.0.0~191.255.255.255;

C类:192.0.0.0~223.255.255.255;

D类:224.0.0.0~239.255.255.255;

E类:24.0.0.0~247.255.255.255;.

ABC三类地址称为单播地址,用于标识一个接口,D类地址称为组播地址,这个后面有机会详细介绍,E类地址暂时不用。

还有一个特别地址255.255.255.255,称为广播地址,可以被所有设备接收。

下面开始讲arp协议,以太局域网的内部通信需要知道链路层地址,即MAC地址。已经知道了对方的IP地址,怎么才能获取对方的MAC地址呢?

举例:A要向B发数据,但是目前只知道B的IP。

A向所有的喊一声,谁的IP是X.X.X.X,告诉一下MAC地址?(这个就是广播)

B收到之后就会回给A说,我的IP是X.X.X.X,MAC地址是......(这个是单播)

        这样的话A就拿到了B的MAC地址。

每个以太网设备都有一个唯一的属于自己的MAC地址,叫做单播MAC地址,例如48:EA:33:05:33:45,目的MAC为该地址的以太帧只有它才会接收。有一个特别的MAC地址"FF:FF:FF:FF:FF:FF",它对应于局域网上的所有设备,只要给这个MAC地址发送报文,局域网上的所有设备都会接收,这个MAC地址称为广播MAC地址。另外还有一类地址,对应于以太网上的一组特定的设备,这类MAC地址叫做组播MAC地址,目的为组播MAC地址的以太帧,只要加入到这个组播组的设备才会接收。

当A不知道B的MAC地址的时候,他会发送一个ARP请求报文,通常是一个广播以太帧。大意是“谁知道192.168.1.10的MAC地址是多少,告诉我192.168.1.100”,然后在发送者地址字段填上自己的MAC地址:46:e3:54:21:43:65.既然不知道对方的MAC地址,目的MAC地址的话就填广播MAC地址“FF:FF:FF:FF:FF”。

当B收到这个报文一看,有人在问我的MAC地址,那就告诉他吧。然后发送一个ARP应答报文,通常是一个单播以太帧。大意就是“192.168.1.10的MAC地址是45:32:56:44:78:21,目的MAC的话就是请求人的MAC地址”。还要把对方的IP和MAC地址保存下来,下一次给A发报文的时候就不要询问,这个就是ARP表项。

与此同时,同一个局域网内的其他设备都会受到A发送的广播ARP请求以太帧,虽然他们不会回应,但是也会把A的IP和MAC地址保存下来,下次如果发送的话就不用发送ARP请求了。

上述的ARP学习过程是通过协议动态获取的,这样的表项叫做动态ARP,为了节省表项资源,ARP表项需要定期老化清楚。相对动态ARP,也可以手动ARP配置,这个叫做静态ARP表项。

我们知道,以太帧用于局域网通信,同样MAC地址只有在局域网内有效,所以只有当设备认为自己与对方处于同一个局域网时候,才会通过ARP协议请求对方的MAC地址,然后将报文直接或通过交换机发送给对端设备,这个过程叫做二层转发。否则,设备就不会将报文直接发送给对方,而是将报文发送给一个叫“网关”的设备,即路由器,通过网关转发处于另一个局域网的目的设备,这个过程叫做三层转发。

其实这里可以说一下,虽然ARP是处理的链路层的数据,可是它是网络层的协议,所以不是一个网段的话只能转发给网关,即使是连在一个交换机的两个IP地址。

最后的话说一下免费ARP吧,这个过程的话其实比较简单,就是明知故问。有什么用呢??

当一个设备获得了一个IP或刚开机时候,为了确定自己的IP没有被局域网内的其他设备占用,通常会发送一个免费ARP请求,如果局域网内有其他设备已经使用该IP,就会回应一个ARP应答,于是发送免费ARP的设备就会给予系统提示(例如:IP地址冲突)。还有一种情况的话,就是设备IP对应的MAC地址发生了变化,免费ARP可以使得局域网被的其他设IP设备立刻刷新该设备的ARP表项。


今天就先到这里,2015年12月10日00:04:07。



1 0
原创粉丝点击