TCP/IP详细学习笔记(1)ARP与RARP

来源:互联网 发布:软件测试x模型 编辑:程序博客网 时间:2024/06/05 18:33

     偷笑最近在深入学习基础知识TCP/IP,感觉以前打代码做博客期间自己对于网络知识了解不是十分透彻,所以准备认真恶补一下基础,如果有理解错误,希望大神能够指出,感谢万分!
简单说,ARP就是将IP地址动态映射到物理硬件的协议--ARP(不然怎么叫“地址解析”协议呢,对吧)

简单来讲,用一个顺序来表示网络中数据分组(packet)传输(以应用程序FTP为例):

  • FTP应用程序的分组,包含主机名,传给解析器----应用层
  • FTP客户端请求一个TCP连接,用IP地址建立连接并传输数据(segment)----传输层
  • 用该IP地址发送一个Datagram(数据报),请求连接远程主机----网络层
  • 如果目标主机在本地,那么IP数据报直接发送到本地主机;如果在远程网络,就IP选路不断确定下一站路由地址,转发IP数据报(IP不是被发送到主机就是到下一个路由)
  • 下一阶段,在以太网中(现在的主机大部分是),发送端把32bit的IP地址变为了48bit的以太网地址,而这也就是ARP的最主要功能,把逻辑地址转为物理硬件地址! ----链路层
  • ARP发送一份请求frame数据帧(带着目的IP地址,等待找到硬件地址),这时ARP承担了一个“小广播”的工作。
  • 如果目的主机听到了,就会回应他,这个回应包括IP地址和硬件地址。
  • 受到了应答后,IP数据报传送到目的主机

PS:因为不同的物理硬件有不同的地址,规格,实现技术---所以,我们需要ARP这个神奇的协议来实现”动态映射“!下面我们来看看ARP分组的格式,就知道它如何神奇地在链路层广播和收到回应了:



然后如果有条件,可以用tcp工具telnet来看看,当我们运行telnet时,ARP在搞些什么鬼~嘻嘻
例如:

telnet + IP地址

然后在另外一台机器上看输出结果,利用tcpdump命令,就可以大概看出ARP是怎么工作的了

下面我们来尝试使用ARP命令来解析自己机器的硬件地址:


arp -a


我的电脑终端打印出:

Last login: Wed Mar 11 21:54:54 on ttys000promatoMBP:~ pro$ arp -ahiwifi.lan (192.168.199.1) at d4:ee:7:10:e3:a2 on en1 ifscope [ethernet]do.lan (192.168.199.167) at 8:d8:33:3d:79:f on en1 ifscope [ethernet]adminisdeiphone.lan (192.168.199.213) at a8:8e:24:a:fb:f1 on en1 ifscope [ethernet]promatombp.lan (192.168.199.214) at 7c:d1:c3:7a:bf:5e on en1 ifscope permanent [ethernet]promatoMBP:~ pro$ 


可以看到我的物理硬件地址(其实就是宿舍路由器的以太网地址为)

d4:ee:7:10:e3:a2


然后试了另外一位舍友,也是

d4:ee:7:10:e3:a2


由此可见,我们在同一个子网里,拥有相同的硬件地址,所以,
我们又来研究ARP特别有意思的一点----ARP代理
这个在上信息安全的课程也有学习过,如果几部主机都在同一个子网中,那么他们相互之间传送、通信时,可以通过ARP欺诈,截取对方的包和数据报。

比如说同一个子网内,有A,B三部主机,R是路由器(网关),A在发送数据报时,有唯一的目的IP地址,会通过R网关,那么在经过数据传输,ARP广播后便会找到C的ARP回应
这时,B是一个cheater,他想截取A发送的数据报(里面可能含有重要信息,比如你的账户密码之类)
那么他就开始了“犯罪”三部曲:
1.先发送大量的ARP请求,逐个来扫描内网中的主机,正常情况下,其他主机都会回应他,那么cheater就获得了回应他的PC的信息了!

2.cheater B向真实网关和手机到的PC发送大量的ARP回应,迫使他们更新自己的ARP Table,显然,Cheater强行通告给PC的ARP内容是错误的,因为ARP回应中的硬件地址和IP地址,分别是Cheater的MAC地址和路由器的网关IP。
3.而此时,cheater可以发送正常的PC信息给网关,使得网关认为,哦,你是A(其实是B,也就是Cheater),那么,R网关会一直认为B是A,而A会一直认为B是网关R;
那么,你可以想象下哦,那么下次A的ARP请求会不断发给“R“(其实是B),所有信息都被B获取到了,而“R”的ARP回应是A,B就理所应当得取代了R的位置,真正的R就没事干啦!这样,ARP欺骗就完成了,PC上面关于网关的ARP信息发生了改变;不过为了“巩固”成果,B会设置每隔2秒再次进行不断的欺骗。
(大家不要乱试哦,要在合法的情况下实验。。。)

关于更多的arp命令用法,大家可以用命令 man arp 具体看看~
而RARP则是针对无盘机、工作站请求获得IP地址的协议。。。这个就不具体研究了,有兴趣的童鞋可以看下RFC903正式规范。
大笑第一部分的学习到此为止,有时间我会学习编写下,并测试关于ARP欺诈的代码,最后放出给大家交流~


0 0
原创粉丝点击