查看: 6272|回复: 8

实验-加深理解IP协议(2)

[复制链接]
发表于 2008-3-12 18:46:52 | 显示全部楼层 |阅读模式
今天学了做了IP实验,也跟大家分享一下吧,写这个东西,一方面是检查自己学的怎么样,另一方面也算是复习吧,通过实验加深自己的理解。
IP是TCP/IP协议里的核心协议了,它是网络层的协议,上层的数据包,比如TCP,UDP,ICMP,IGMP等等都要通过它的封装才能在网络上跑的,所以学好它很重要。
拓扑图如下:

这是实验的拓扑图,我是在虚拟机里做的实验,简单说明一下,其中B起着路由器的功能,2块网卡分别连着2个网络,A,D,C在一个子网,网关都指向B的192.168.1.1,E,F在另一个子网,网关都指向B的192.168.2.1。用B能使这2个网络互相连通。
一.
首先来做第一个实验,理解TTL生存时间,通俗的理解就是每经过一个路由器就要值减1,减到0还没到目的地的话,则路由器丢弃它,并向源站发回一个差错报文。因为IP协议是不可靠的数据包发送方式,这样就保证了数据离开源站后,即使找不到目的站也不会无休止的在路由器间循环游历。
启动主机A上的科来软件,并用编辑数据包工具,编辑一个IP数据报,其中:
  MAC层:
    目的MAC地址:主机B的MAC地址(对应于192.168.1.1接口的MAC)。
    源MAC地址:主机A的MAC地址。
    协议类型或数据长度:0800。
  IP层:
    总长度:IP层长度。
    生存时间:128。
    源IP地址:主机A的IP地址(192.168.1.2)。
    目的IP地址:主机E的IP地址(192.168.2.2)。
    校验和:在其他所有字段填充完毕后计算。
   (计算校验和是理解IP数据包格式的最好方式,建议大家都手工计算一下,那样就会对IP包格式有感性的认识,比如IP在计算校验和时包括哪些内容?)
在主机B(选定两块网卡)、E上启动科来软件,设置过滤条件(提取IP协议),开始抓包。
主机A发送第1步中编辑好的报文。
主机B、E停止捕获数据,在捕获到的数据中查找主机A所发送的数据报,并回答以下问题:
可以看到在E主机中抓到的数据包的生存时间变成了127,在主机B上分别观察192.168.1.1的网卡和192.168.2.1网卡上所捕获的数据包,发现,在1.1网卡上的数据包没有任何改变,而在2.1网卡上捕获的数据包的生存时间则变为了127,相应的校验和当然也就改变了,可见当数据包经过路由器B(该主机当作路由功能)的时候,生存时间值递减了1。
为了看的更清楚,咱们把主机A里所编辑的数据包的生存时间改为1,然后再打开主机E和B的2块网卡分别抓包。
发送A机上改变了TTL值的数据包。
停止E和B抓包,看看会有什么样的结果?
可以看到只有B的1.1的网卡上抓到了数据包,且和A机上所编辑的数据包完全相同。而在E机和B机上的2.1网卡上都抓不到任何数据。证明了数据包在经过路由器时,因为TTL值减为了0,数据包直接就被路由器给丢弃了。

二.
好了,接下来做第二个实验,理解特殊的IP地址。
1.编辑主机A的IP数据报1,其中:                                   
  目的MAC地址:FFFFFF-FFFFFF。
  源MAC地址:A的MAC地址。
  源IP地址:A的IP地址。
  目的IP地址:192.168.2.255。
  校验和:在其他字段填充完毕后,计算。
主机A再编辑IP数据报2,其中:
  目的MAC地址:主机B的MAC地址(对应于192.168.1.1接口的MAC)。
  源MAC地址:A的MAC地址。
  源IP地址:A的IP地址。
  目的IP地址:192.168.2.255。
  校验和:在其他字段填充完毕后,计算。
主机B、C、D、E、F启动协议分析器并设置过滤条件(提取IP协议,捕获192.168.1.2接收和发送的所有IP数据包,设置地址过滤条件如下:192.168.1.2双向到Any)。
主机B、C、D、E、F开始捕获数据。
主机A发送这两个数据报。
主机B、C、D、E、F停止捕获数据。
E和F捕获不到任何的数据包,主机C和D也捕获不到本地网卡上的任何数据包,但是由于设置了过滤条件为主机A的ip地址,所以在主机C和D上能抓到在A主机网卡上捕获的数据(注意,这里抓到的数据包是A主机的,并不是C和D的。)数据包1和数据包2,为什么会是这样的结果呢?
我们来看主机A的第一个数据包,它的MAC地址为全F, 还记得ARP的寻址过程吗?这显然是在寻找目的IP为192.168.2.255的MAC地址,但是这种全F的目标地址是在本网段询问的,所以当在本网段(包括主机B的1.1网卡)找不到目标地址为192.168.2.0网段的任何地址的时候就丢弃了该包(即C,D,B的1.1网卡都丢弃了该包),所以说路由器隔离了MAC为全1的广播包。
再来分析数据包2,只有A机和B机的1.1网卡捕获到了该数据包而其它的都不能,为什么会这样呢?按理说它的目的MAC地址是主机B的1.1网卡地址,这是MAC地址的单播,数据包2就是在单播MAC上的IP子网广播,参考范伟导老师的话如下 :
“IP的广播有三种:255.255.255.255叫本地广播,也叫直播,direct broadcast,不跨路由器。
172.16.33.255叫子网广播,广播给172.16.33.0这个子网,可以跨路由器。
172.16.255.255叫全子网广播,广播给172.16.0.0这个主网,可以跨路由器。
大家以前学网络的时候,老师会给一个概念,说路由器是三层设备,隔离广播,对吧,我也是这样给同学介绍的,但我在后面会告诉同学,并不是所有广播都隔离。 事实上只有255.255.255.255这类本地广播,路由器才不转发,对于子网广播和全子网广播,路由器是转发的。路由器隔离的广播是目的MAC为全1的广播,对于目的MAC是单播的上层广播,路由器是不能隔离的。”
这样的话,E,F还有B的2.0网段的网卡应该能捕获到数据包2的,但是结果是真的抓不到,我也不知道为什么,还希望知道的高手能帮忙分析一下。(查了资料只是说IPV4的路由器不能转发子网广播包和全子网广播包,这样的说法对学网络协议的来说,太不可信服了,我们应该还需知道为什么会被隔离,不是吗?)。


好了,今天就写到这里吧,在做实验的过程中,真的是遇到了问题,比如子网广播和全子网的广播,还希望知道的高手能帮助解答一下,不胜感激。
也希望大家能从该贴中提出问题来,大家一起探讨探讨,我也是刚刚学的,有很多都不懂,也需要高手的帮助和指点。
也希望版主能给多加点分,写的好辛苦呢,毕竟要开这么多的虚拟机做实验,还要写东西。呵呵,不求功劳,就当求个苦劳吧。

本帖子中包含更多资源

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

×

评分

1

查看全部评分

回复

使用道具 举报

发表于 2008-3-12 20:40:59 | 显示全部楼层
写了这么多,不给分说不过去!
回复

使用道具 举报

发表于 2008-3-12 21:18:11 | 显示全部楼层
楼主继续!
回复

使用道具 举报

发表于 2008-3-13 12:00:26 | 显示全部楼层
路由器默认不转发广播包,包括多播包;
楼主的实验环境是一个简单的双网卡主机路由,捕获不到楼主的数据包2,我想这是正常的吧?
另外,想请教楼主:IP数据包的校验和,怎样通过手工计算呢?谢谢!
回复

使用道具 举报

发表于 2008-11-7 13:57:22 | 显示全部楼层
想问一下楼主是用虚拟机做的试验么?具体是怎么配置的?是否资源占用量很大?
回复

使用道具 举报

发表于 2010-6-2 21:58:14 | 显示全部楼层
很好呀  支持 支持 顶 顶    顶
回复

使用道具 举报

发表于 2010-6-4 07:37:58 | 显示全部楼层
回答4楼,使用的二进制反码求和。
回复

使用道具 举报

发表于 2010-6-4 08:34:30 | 显示全部楼层
回复

使用道具 举报

发表于 2012-3-2 10:14:29 | 显示全部楼层
谢谢写的挺好的
回复

使用道具 举报

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

本版积分规则

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