IRIS是个抓包工具,通过分析抓到的包分析TCP/IP协议,使学习不再枯燥。
1搭建网络环境
192.168.1.61(服务器端,安装FTP) 192.168.1.106(客户端,安装IRIS抓包工具) 通过从服务器端下载文件,分析网络协议。
(1)安装FTP
先下载iis v5 for xp,如果不是xp的,版本可能不一样。
控制面板->添加或删除程序->添加/删除windows组件->选中Internet信息服务IIS(进入下一步之前,点击详细信息,勾上FTP服务)->点击下一步,点击确定,把刚下载的IIS解压后路径填入,就ok了。安装完IIS,会在控制面板->管理工具中看到 Internet信息服务的图标。
点开FTP站点,右击属性,改下IP地址为本地地址(服务器),在主目录选项中可以修改本地路径(到时候别人登录可以看到的内容),其他两项默认就可以了,也可以根据需要。
ok了,现在可以登录访问了。可以下载了啊,以后你没有2个QQ,也可以在两台计算机件共享文件了。是不是很好玩?
(2)客户端上IRIS的安装
这就是一个软件,直接下载安装就行了,CSDN上有资源的,没毒哦,还有操作文档啊。
(3)开始抓包
开始试了很久没成功,问题是IRIS不支持无线网卡,至少我的不可以,现象就是在过滤器IP选项中设置了,却抓不到包。所以最好还是使用有线的。
配置选项说一下:
- 菜单栏工具->设置->设配器(选择有线网卡,如果你用无线就是无线网卡,前提是支持),其他默认设置就可以了
- 快捷键ctrl+b 弹出地址簿,里面有局域网内所有主机(没有也没有关系),至少有你自己的主机,把主机名去掉(方便查看,不是必须的)。
-
这边都不是输入的,靠点的哦,有人从地址簿中找服务器的IP,前提是地址簿中有。有的时候确实在一个局域网内,却看不到,没关系,直接输入只能输入2位数,所以先随便点一个再改就行了。(如果你的IP最后三位数就爱莫能助了)
- 把日志里面的勾上。
- 下面打开开始按钮,左上角那个,然后使用浏览器登录FTP://192.168.1.61右击文件下载。点击停止,就可以在捕获里面看到包了。
(4)分析包
这次下载文件分四个过程:查找服务器,建立连接,数据传输和终止连接。
1)FTP客户端请求TCP用服务器的IP地址建立连接。 2)TCP发送一个连接请求分段到远端的主机,即用上述IP地址发送一份IP数据报。
3) 如果目的主机在本地网络上,那么IP数据报可以直接送到目的主机上。如果目的主机在一个远程网络上,那么就通过IP选路函数来确定位于本地网络上的下一站路由器地址,并让它转发IP数据报。在这两种情况下,IP数据报都是被送到位于本地网络上的一台主机或路由器。 4) 本例是一个以太网,那么发送端主机必须把32位的IP地址变换成48位的以太网地址,该地址也称为MAC地址,它是出厂时写到网卡上的世界唯一的硬件地址。把IP地址翻译到对应的MAC地址是由ARP协议完成的。 5) ARP发送一份称作ARP请求的以太网数据帧给以太网上的每个主机,这个过程称作广播。(以太网内可以广播,internet网怎么办呢?)ARP请求数据帧中包含目的主机的IP地址,其意思是“如果你是这个IP地址的拥有者,请回答你的硬件地址。” 6) 目的主机的ARP层收到这份广播后,识别出这是发送端在寻问它的IP地址,于是发送一个ARP应答。这个ARP应答包含I P地址及对应的硬件地址。 7) 收到ARP应答后,使ARP进行请求—应答交换的IP数据包现在就可以传送了。
8) 发送IP数据报到目的主机。
大概清楚了以后就开始看包吧:
1)查找服务器
在第一行中,客户端的MAC地址是60:EB:69:F3:6D:A7,这个地址是网卡厂家给的,独一无二的,(不过也是可以修改的,这个很是奇怪),目标MAC地址为全F,意思是这是个广播地址,局域网内的每个主机都会接受到这次广播信息,意思是问192.168.1.61是谁的IP,然后拥有这个IP的主机就会给个replay,回复的内容包括自己的IP和MAC地址。所以在第二行就可以看到服务器的MAC地址为00:24:81:C5:A1:FF.
第一行的包解码
第二行的包解码
红色部分为MAC头部,可以看到源MAC地址和目的MAC地址。最后的0806指的是接在后面的为ARP头部。
黑色部分为ARP协议头部:
硬件类型为00 01,就是以太网地址。协议类型为08 00就是IP类型。硬件地址长度是06就是6个字节.协议地址长度是04就是4个字节. 操作字段(op)指出四种操作类型:ARP请求(值为1)、ARP应答(2)、RARP请求(3)和RARP应答(4)。你可以看到第一个是请求,就是01,第二个是应答就是02.接着就是MAC地址和IP。又传了一次,可以这样理解,前面的是识别用的,后面的是作为数据给别人看的。
2)建立连接
这三行的核心意思就是TCP三次握手。
1))请求端106号机发送一个初始序号(SEQ)1812738015给61号机。
2))服务器61号机收到这个序号后,将此序号加1值1812738016作为应答信号(ACK),同时随机产生一个初始序号(SEQ)2490991104,这两个信号同时发回到请求端106号机,意思为:“消息已收到,让我们的数据流以2490991104这个数开始。”
3))请求端106号机收到后将确认序号设置为服务器的初始序号(SEQ)2490991104加1为2490991105作为应答信号。
三次握手后,就可以开始传输了。
第三行包解码
第四行包解码
第五行包解码
红色的为IP头部,前面是MAC头部,后面是TCP头部。
4位版本号值为4,就是IPV4.4位首部长度是5,就是说IP头部占20个字节(这个不知道怎么算的额)。8位服务类型(TOS)00,00,这个8位字段由3位的优先权子字段,现在已经被忽略,4位的TOS子字段以及1 位的未用字段(现在为0)构成。4位的TOS子字段包含:最小延时、最大吞吐量、最高可靠性以及最小费用构成,这四个1位最多只能有一个为1,本例中都为0,表示是一般服务。16位总长度是00 34,就是52个字节,减去20个字节的IP头部,剩下32个就是TCP头部长度。16位标识,14 70,每发送一个数据报文值就加1,看一下第五行是14 71.(不过初始值怎么定的就不好说了)8位生存时间,为40,。8位协议,06,表示传输层是TCP协议。16位首部校验和用于验证。后面的源和目的地址就不说了。标志位字段:占3比特,标志一份数据报是否要求分段这里是1,就是只有一段。段偏移字段:占13比特。如果一份数据报要求分段的话,此字段指明该段偏移距原始数据报开始的位置。
分析第3行的TCP头部,16位源端口号是0C CB,就是3275,这是临时分配的端口号,这个跟应用有关,一般的应用都是随机分配的,小于65536就行了。目的端口号是00 15,就是21,指FTP服务,这个是固定的。32位序号是6C 0C 2F DF,就是上面的1812738015,服务器返回的时候要加1的。32位确认序号就是ACK的值。4位首部长度,8,就是32个字节(单位是4个字节,8*4),这个与上面IP那边算出来是一样的。
- URG 紧急指针,告诉接收TCP模块紧要指针域指着紧要数据
- ACK 置1时表示确认号(为合法,为0的时候表示数据段不包含确认信息,确认号被忽略。
- PSH 置1时请求的数据段在接收方得到后就可直接送到应用程序,而不必等到缓冲区满时才传送RST 置1时重建连接。如果接收到RST位时候,通常发生了某些错误。
- SYN 置1时用来发起一个连接。
- FIN 置1时表示发端完成发送任务。用来释放连接,表明发送方已经没有数据发送了。
在第三行,02,就是说SYN=1,16位窗口大小,FF FF,就是32768,单位字节,为最大限制的字节数。选项占32位,窗口扩大因子,时间戳等。
3)传输数据
只取了传输数据时候的4个包,首先是服务器发了一个包,然后客户端回复收到,如此循环,直到文件发完。不过服务器怎么知道用户要下载的是哪个文件呢?这个信息怎么确定的呢?是不是在操作浏览器的时候确定的?我觉得有这个可能。
第6个数据包解码
第7个数据包解码
第8个数据包解码
第9个数据包解码
红色的部分都是TCP头部,大家可以自己依据字段信息慢慢对照,也可以直接看封包解码器的信息:
这边对于各个头部的信息给的很全啊,很直观,不要自己慢慢数了。这个是第6行的包头部信息,可以看到IP头部占20个字节,TCP头部占20个字节,总共是67个字节,所以还有27个数据字节,数一下正好是27个数据字节,就没错了。不过这边也不是你下载文件的数据,我看了下,真正的数据要在第32个包才传的。
查看到第32个包字节数是1510,,第33个包字节数是916个字节。各自减去20个IP头部和20个TCP头部,得到2336,就是这个文件的大小,事实上查看一下是相等的。现在的问题是,为什么过了几十包才开始传真正的数据的呢?我也是初学,不清楚。
4)终止连接
建立一个连接需要三次握手,而终止一个连接要4次握手。这是因为TCP连接是全双工的(数据子啊两个方向上能同时传递),每个方向必须单独的进行关闭。4次握手协议就是这样一个过程。
首先是由服务器发出信息说文件发完了,咱们就断了吧。客户端先礼貌的说好。回头又说了一句断就断,哥才不稀罕。服务器表示很无奈。
第35个包解码
第36个包解码
第37个包解码
第38个包解码
可以看到第35和37包中,FIN标志位置1,就是表示请求终止连接。你的终止包或许不是这两个,不过查看FIN位就可以找个这4个包了。ok了,先分析这么多。