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数据报传送到目的主机
- 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秒再次进行不断的欺骗。
(大家不要乱试哦,要在合法的情况下实验。。。)
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
- TCP/IP详细学习笔记(1)ARP与RARP
- TCP/IP详解学习笔记(4)-- ARP 和 RARP
- TCP IP 学习笔记四:ARP 和RARP
- tcp/ip协议学习笔记(4)ARP&RARP
- TCP/IP学习笔记(3)--ARP和RARP协议
- TCP/IP学习笔记(三)——IP,ARP,RARP
- TCP/IP详解(四、五)ARP与RARP
- TCP/IP之二:ARP与RARP
- TCP/IP(4)ARP与RARP
- TCP/IP之二:ARP与RARP
- TCP/IP协议之ARP与RARP
- TCP/IP之二:ARP与RARP
- 《TCP/IP详解卷1》学习小结(三)------ARP协议与RARP协议
- TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议
- TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议
- TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议
- TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议
- TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议 .
- java学习笔记
- Info.plist与Prefix.pch修改文件位置遇到的问题及解决方法
- 【Javaweb】Eclipse for JavaEE新建的Web工程自动生成web.xml
- hdu 4436 str2int (后缀自动机+dp)
- C++ 二级指针和二维数组
- TCP/IP详细学习笔记(1)ARP与RARP
- 下载、编译Android4.4 - hammerhead 内核(Kernel)并烧写验证
- jquery eval解析JSON中的注意点介绍
- 验证Exceptions
- epoll介绍
- 二维几何模板
- A + B (1010)
- Handler与Looper的关系
- hdu 1004 Let the Balloon Rise map