查看: 3879|回复: 8

实验-学习网络协议的捷径(申精)一

[复制链接]
发表于 2008-3-8 23:04:09 | 显示全部楼层 |阅读模式
学习网络协议的朋友都有体会,学协议这东西最是抽象,每种协议都有报文格式,而且又在链路上跑来跑去,你也看不到,摸不着的,只好依靠抓包工具抓下来看看,可是如果不是非常熟悉每种协议,只会让你看花了眼。其实最好的学习协议方法,莫过于边学边实验了,搭建一个网络环境,自己亲自编辑所学的报,抓包,这样就会对每种协议的报文格式和流向就会有一个感性的认识。下面是我做的第一个实验(在以后学习的过程中会陆续做其它的实验),希望大家能一起参考参考,呵呵。
第一个实验是ARP实验,现在最流行ARP欺骗了,用了N多的工具防它,还是效果不明显,如果自己熟悉它的原理,知道它的来龙去脉,解决起来就不难了,当然原理这里就不多说了,学协议的手上肯定是有资料可以看的,我只做实验,希望大家能从实验中体会出什么来。


这是实验的拓扑图,我是在虚拟机里做的实验,简单说明一下,其中B起着路由器的功能,2块网卡分别连着2个网络,A,D,C在一个子网,网关都指向B的192.168.1.1,E,F在另一个子网,网关都指向B的192.168.2.1。用B能使这2个网络互相连通。
先做第一个ARP实验,MAC地址和IP地址的映射关系,即ARP的地址解析。也算是入门级的吧。
打开A,B,C,D,F,5台主机,先在各自的cmd下用“arp -a”查看,如果是刚起来的主机,应该是什么也看不到吧。然后主机A ping 主机D(192.168.1.4)(同个子网),然后分别用arp –a,可以在D的主机里看到A的MAC地址,同样的,A的主机里也可以看到D的MAC地址,而其它的都不能。
接下来,先用arp –d清除缓存,然后用主机A ping 主机F(192.168.2.3)(不同的网段),然后再分别用arp –a查看,则在A里看到却不是F主机的MAC地址,而是主机B的192.168.1.1的网卡MAC地址,在F主机里看的是主机B的192.168.2.1的网卡MAC地址,而在B上则分别看到主机A和主机F的MAC地址。其它的C和D 主机则没有看到任何的MAC地址。
由上面的实验可以知道,ARP在同个子网里传播的时候,只有目的主机能收到数据包并做出相应IP地址和MAC地址的映射关系,其它主机则不能做出映射关系。(那么其它主机是收到了这个包丢弃了还是没收到呢?将在第二个实验里说明)。
而跨网段的数据包,在从源地址到目的地址的过程中,其源MAC地址是要改变的,数据包从A到F的过程中,在A看来,数据包的目的IP地址,其对应的目标MAC地址是B主机的192.168.1.1网卡的MAC地址,而在F看来,从源IP地址A机过来的数据包其源MAC地址是B主机的192.168.2.1的MAC地址。
ARP的实验二:
在主机E上用科来的数据包编辑器编辑一个arp的请求报文,如下:
       MAC层: “目的MAC地址”设置为FFFFFF-FFFFFF,
           “源MAC地址”设置为主机E的MAC地址。
            协议类型或数据长度:0806。
       ARP层: “发送端MAC地址”设置为主机E的MAC地址,
           “发送端IP地址”设置为主机E的IP地址(192.168.2.2),
           “目的端MAC地址”设置为000000-000000,(因为主机E不知道主机F的MAC地址,      所以设为0)
           “目的端IP地址”设置为主机F的IP地址(192.168.2.3)。
主机B、F启动科来进行抓包,打开捕获窗口进行数据捕获并设置过滤条件(提取ARP协议)。
主机E发送已编辑好的ARP报文。
立即在B,F上的CMD命令里进行arp –a,可以看到在F主机里可以看到A主机的MAC地址,而在B里则看不到任何MAC地址,而该数据包从E机出来的时候的目的MAC地址是一串F,表示的是MAC地址的广播,所以B机是应该收到该数据包的,但是由于该数据包的目的IP地址是F主机,所以B丢弃了该包。以下可以说明B是丢了包的。
4.主机B、F停止捕获数据,分析捕获到的数据,首先可以在主机B的2.1网段的网卡上抓到和主机F的网卡上一样的大小的包 (在概要统计里看),这说明B机是收到从主机E到F的数据包的,然后在各自的数据包分析窗口中分析收到的数据包,可以看到当主机E发数据包的时候,下一个数据包就是主机F给出的源MAC是自己而目标MAC地址是E的回应数据包,在B和F主机上看到的是一样的。

  到这里这个实验基本上应该算结束了,但是有人会问,如果E主机发向不同网段的数据包会怎么样呢,这个实验的结果应该和第一个实验里得到的结果是一样的,我没做,因为用虚拟机开那么多主机实在是太慢了,大家有兴趣可以试一下。
  做第二个实验主要是介绍一下科来的这个软件,实在是太棒了,它有自己的数据包编辑器,而且还是中文的,这点实在是难能可贵,用它来学习以后的协议,并做实验就方便多了,加深自己的理解太有好处了。
   这篇东西是我第一次写,写的不好,还望海涵,我也不知道会有什么样的回应,如果回应的人多了,我会继续以后的协议实验,呵呵,今天写这个的另一个目的,主要是想赚积分,能早日解除科来软件的限制,希望大家多多支持我,共同学习进步,也希望我的这篇东西能抛砖引玉,请高手能写出更好的实验过程,让我们学习借鉴。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?CSNA会员注册

×

评分

1

查看全部评分

回复

使用道具 举报

发表于 2008-3-9 00:27:14 | 显示全部楼层
写得很清楚,不错
回复

使用道具 举报

发表于 2008-3-9 16:06:43 | 显示全部楼层
学到了...楼主要再接再励.........期待楼主下一篇杰作
回复

使用道具 举报

发表于 2008-3-9 23:27:22 | 显示全部楼层
支持原创!我觉得另一个捷径是看贴。多看帖子,多看工程文件,看的多了,常见协议以及他们的层次关系自然就熟悉了,就像背单词。盯着一个工程文件看上半个小时一个小时,总能发现一些自己不懂的地方,针对它们有目的的学习(包括做实验),效果更好。与实验方法相比,看贴方法的优点是数量充足、结合实际,缺点是难坚持。比如SMB以及相关的NBSS、CIFS协议,庞大复杂,访问网上邻居抓了很多个包,还是要对照GOOGLE来的为数不多的资料逐个包、逐个字段摸索。我很怀疑捷径是否真的存在。

[ 本帖最后由 oldjiang 于 2008-3-10 10:14 编辑 ]
回复

使用道具 举报

发表于 2008-3-10 10:29:30 | 显示全部楼层
支持原创,加分鼓励!
期待楼主的下一篇大作。
回复

使用道具 举报

发表于 2008-3-10 13:22:27 | 显示全部楼层
捷径是有方法的,例如:我们再看的贴子,学学人家的钻研精神,不懂的地方,多回贴,观看视频,都是一些好方法啊,看书本的确是很枯燥,多动手动脑,装模拟器做实验.
回复

使用道具 举报

发表于 2008-3-14 17:01:03 | 显示全部楼层
谢谢,我很想看到你的第二篇文章
回复

使用道具 举报

发表于 2008-3-24 16:32:07 | 显示全部楼层
ddddddddddddddddddddddddddddddddddddddddd
回复

使用道具 举报

发表于 2008-3-28 11:12:16 | 显示全部楼层
写得很不错,有条有理,脉络清晰,很好的一篇技术文章。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | CSNA会员注册

本版积分规则

快速回复 返回顶部 返回列表