TCP/IP学习笔记一:地址解析协议ARP初识

来源:互联网 发布:电子绘画软件 编辑:程序博客网 时间:2024/05/21 17:51
      最近打算研究一下TCP/IP,也就是以太网。如果想搞懂网络或是想搞工业以太网之类,先懂这些基本的国际通用的TCP/IP协议是很有必要的。首先通过百度或是360搜索或是google搜索,找一些关于ARP的资料,然后分析,去杂,留下自己需要了解的信息。用于以后的Uip Lwip的移植与研究,当然,移植是必要的,应用为主,不了解这些原理的东西,就不懂更好的应用与设计相关的产品。
      首先:协议本就是协商好的一种通讯格式与约束条件等,如果不按这个协议通信,你就不能进入WWW等使用这个协议的家族,但是自组网,可以私定协议,只是,私有或是自定的协议可能需要大量的时间去研究验证它的可靠性与通讯性能等等,才能真正的使用。因此,如果想与因特网WWW互联,是需要了解TCP/IP的,至少要知道它包括的重要的协议。如果是自组网的,协议只要自己懂就行。我觉得第一步,先学习前人总结的优秀的成果,吸收成功的经验,才有自己的微创新。第一步,就是要学习:国际通用的以太网协议:TCP/IP。

      TCP/IP本身是一族协议的集合,包括很多的协议,如果对于嵌入式联网的话,一些应用协议,如ftp、web、发邮件等服务协议等等,可以放到后面了解,要先了解自己需要的底层基础知识。直接的讲,RJ45网卡,网络的物理地址:MAC,网络IP地址-IP,TCP,再上面,就是如何处理收到的数据了,因此先要了解TCP/IP中的用于网络传输方面的,如何发数据与接收数据,不是点对点,在多机通讯时需要注意的东西。有了这些底层的东西,才会有上层的服务协议与应用之类。

先从底层了解,数据是怎样传给网络上其他计算机的。

      ARP(Address ResolutionProtocol,地址解析协议)是获取物理地址的一个TCP/IP协议。某节点的IP地址的ARP请求被广播到网络上后,这个节点会收到确认其物理地址的应答,这样的数据包才能被传送出去。RARP(逆向ARP),获得它的逻辑IP地址。

以下为个人的初理解:
      很显然,传输,不是地址靠的目前32的IP址址,而是靠的物理地或叫硬件地址:MAC来相互识别。首先我们网卡已经有了至少在局域网内不会相同的MAC地址,再设置好自身的IP后,ARP把IP转换为物理MAC地址,还要加上对方的MAC地址,然后把信息封装上其他信息发出去。别的计算机收到这个信息后,如果发现目标的MAC不是自己,就不响应,如果是,就响应,表示连接正常,可以收到并响应,这就是通信的粗的原理。注重这与使用IPV4或是IPV6没有关系,因为网络是分层的,IP在上一层,ARP是底下的。只要是基于TCP/IP的,都是要有ARP的。当然还有更底层的,就是物理层了,什么RJ45,网络中继等等硬件的东西了。

以下是专业的功能定义:
      ARP协议是“Address Resolution Protocol”(地址解析协议)的缩写。在局域网中,网络中实际传输的是“”,帧里面是有目标主机的MAC地址的。在以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址。但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议获得的。所谓“地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。
      OSI模式把网络工作分为七层,彼此不直接打交道,只通过接口(layer interface)。IP地址在第三层,MAC地址在第二层。在发送数据包时,得先封装第三层(IP地址)、第二层(MAC地址)的报头,但只知道目的节点的IP地址,不知道其MAC地址,又不能跨第二、三层,所以得用ARP协议。(官僚主义的作风一样,毕竟协议或是法律,本身就是从人的出发考虑的。当然只是类似,分层为了责任分明,处理事情更有效率。)

       这里说,如果你不知道对方的MAC地址,没有关系,便你一定要知道它的IP地址,这样也是可以的。就像你去找小区名字,如果你不知道小区的地址,但知道小区的名字,你也是可以通过地图上搜索小区的名字,找到地址的,当然,如果小区地址改了或是名字改了,就有问题了。这说明,IP地址与MAC存在一定的对应关系。但这个对应关系,不一定永久的保存,只是暂时的或是一定时间就失效了。否则,我电脑采用DHCP动态IP的,如果明天开机,IP换了,就无法上网了,当然,肯定不是这样的。ARP里有一个缓存表。

      我们以主机A(192.168.1.5)向主机B(192.168.1.1)发送数据为例。当发送数据时,主机A会在自己的ARP缓存表中寻找是否有目标IP地址。如果找到了,也就知道了目标MAC地址,直接把目标MAC地址写入帧里面发送就可以了;如果在ARP缓存表中没有找到相对应的IP地址,主机A就会在网络上发送一个广播,目标MAC地址是“FF.FF.FF.FF.FF.FF”,(这是广播地址,当然还要带上其他的信息一起发送,注意现在是通过MAC找IP时用,意思是你知道MAC但IP换了不对了找不着了。),这表示向同一网段内的所有主机发出这样的询问:“192.168.1.1”的MAC地址是什么?
      网络上其他主机并不响应ARP询问,只有主机B接收到这个帧时,才向主机A做出这样的应:“192.168.1.1“的MAC地址是“00-aa-00-62-c6-09”。这样,主机A就知道了主机B的MAC地址,它就可以向主机B发送信息了。同时它还更新了自己的ARP缓存表,(因为MAC不会变,IP常变,==千里马常有,而伯乐不常有,故千里马之名字,不常有==。。)下次再向主机B发送信息时,直接从ARP缓存表里查找就可以了。ARP缓存表采用了老化机制,(多联系,才不会忘记啊,就像手机号码与联系人一样,手机号可能换了,联系人的名字没有换)。在一段时间内如果表中的某一行没有使用,就会被删除,(不联系我可以,我以为你换号了,删了)。这样可以大大减少ARP缓存表的长度,加快查询速度。
      ARP攻击就是通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量使网络阻塞,攻击者只要持续不断的发出伪造的ARP响应包就能更改目标主机ARP缓存中的IP-MAC条目,造成网络中断或中间人攻击。
       关于ARP的攻防战我就不多了解了吧。因为,先要会走,再想跑的事情。
0 0
原创粉丝点击