• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

利用SNIFFER PRO学习TCP/IP(二)

发布: 2007-7-01 20:40 | 作者: admin | 来源: | 查看: 24次 | 进入软件测试论坛讨论

领测软件测试网

 利用SNIFFER PRO学习TCP/IP(二)

下面开始分析数据包的结构:

选择NO.12,可以看到SYN段的的详细情况,看到中间的(he,不知道这叫什么栏)协议分析,从TCP到DataLink的封装可看得一清二楚,可以发现有三项(把Tree折合起来就可看到):(1)DLC:Ethertype = 0800, size = 62 bytes

(2) IP:D=[192.168.1.81] S=[192.168.1.36] LEN=28 ID=26052

(3)TCP:D=6666 S=2970 SYN SEQ=3614407631 LEN=0 WIN=64240。

这三项对应的分别是数据链数层的数据,网络层的数据,运输层的数据,这是经过Sniffer分析显示的提示信息。数据是从运输层->网络层->链路层,我们就从运输层开始。

从<<详解>>的附图我们可以知道,TCP由20字节的首部 + 选项(可选) + 数据(可选),作为SYN请求,没有数据项。对照一下Sniffer的数据(Sniffer中展开TCP项)。

 

注:点击TCP数据的每一项,均会在下面的详细数据栏显示HEX和ASCII数据

如上图,16位源端口号为2970,16位目的端口号为6666,把<<详解>>附图打开(或打开P171),一一对应很容易就知道各项数据代表的含义。这里注意一个,保留6位数据之后是6个标志位,分别是URG,ACK,PSH,RST,SYN,FIN,数据由标志位来确定所要传输的目的,如上图,只是SYN位置为1,表示这是SYN请求,如果是SYN的应答,那么SYN,ACK都要置为1。再看到可选项,Maximum Segment Size为1460,这是最大报文大小,每个连接方通常都会在SYN请求时指明这个选项(p173)。所以在我的程序中send 2000字节的数据时会拆分报文。

 

接下来是网络层

 

把上图与<<详解>>附图的IP首部描述对应,我们看到版本号是4,即说明这是IPv4协议(he,不是先进的IPv6),首部总长度是20,即没有可选项参数。总长度为48bytes,即20位的IP长度加上28位的TCP长度,数据到达IP层时,已经把TCP的数据封装进来了。8位的协议是06,即封装的是TCP的数据(由<<详解>>P7我们得知,1表示ICMP,2表示IGMP,6表示TCP,17表示UDP)。具体的分析就可看到<<详解>>P25。(我的目的并不是分析数据,那可是几本书也讲不完的,我只是告诉大家怎么利用Sniffer来学习TCP/IP)

 

再看到数据链数层

 

对照到<<详解>>P16,这是以太网帧格式,而不是802标准定义的帧格式,所以对应到P16的以太网封装。以太网封装由目的地址,源地址,类型,数据组成。这里的地址都已经是MAC地址了,对于网卡来说,它只认MAC(如果发送数据时并不知道对方MAC,那么会先发送ARP请求来得到MAC,同一个网段的MAC在缓存里面都存了有,如果同一网段主机修改IP,会向外广播,这时缓存会得以更新,呵,这又涉及到ARP了,如果想解开疑问,可以用Sniffer来捕捉相关数据,所以说Sniffer是个学习TCP/IP的很好的工具,扯远了)。再看到2个字节的类型说明,这里是0800,即说明封装的是IP数据报(0806为ARP,8035为RARP)。

在<<详解>>P16我们知道,对于以太网数据部分必须最少有46字节,不足补PAD字节。(he,在P21还有最大传输单元MTU,自己看了),还记得上面的TCP总长度为48bytes吗?这就是以太网的数据(不包括以太网头),已经超过了46,所以不用PAD,但你可以看到三次握手的最后ACK段,即NO.14,在这里以太网数据只有40字节,所以后面PAD了6个字节。

到这,数据的封装过程我们已经都明白了。(其实我自己在分析数据的时候,发现了很多问题,我不停的翻<<详解>>,不断的尝试Sniffer不同的数据来分析)

待续!


延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网