wireshark抓包

来源:互联网 发布:sybase数据库厂家 编辑:程序博客网 时间:2024/04/30 09:47

csdn把图吃了!!!

为什么大牛们都自己搭个blog,想想也是欸

下过月给自己搭个wordpress吧


信息安全原理

作业4

抓取访问本校主页时所有的包并进行分析


Linux上的wireshark不能选择interfaces,也就是不能探测到网卡

这个问题困扰了我好久,我觉得应该是权限问题,如果给root权限来跑wireshark应该是可以的

不管怎样,先用windows来试试吧


wireshark 1.10 64bit

安装时要卸载winpcap4.1.2,安装winpcap4.1.3


好,开始运行wireshark

选择一个Interface

我是使用wifi上网的,选择那个无线网卡,start



屏幕上的数据不断刷新,我只需要捕获与学校官网服务器的传输的包

先ping www.***.edu.cn

获取ip 10.203.5.100

这应该是内网地址


添加一个过滤器,筛选出指定的包


host **.**.**.**的意思是

支持所有协议  Protocol: ether, fddi, ip, arp, rarp, decnet, lat, sca, moprc, mopdl, tcp and udp. 

支持所有方向 Direction: src, dst, src and dst, src or dst 

主机? Host(s): net, port, host, portrange

Logical Operations(逻辑运算): not, and, or. 这个是将数据做逻辑运算的意思?

本次作业并不那么复杂,就不需要那么多配置了

然后点击start


刷新一下网页

数据真的不少



另外一个ip是我本机的


那就开始分析数据吧

粗略看了一下,所有的包的协议不是tcp就是http,而且以tcp居多



TCP协议用于建立可靠的连接,建立连接需要3次握手

维基百科不能上了!!!


先看最前面的数据包

SYN(synchronous)是TCP/IP建立连接时使用的握手信号,TCP连接的第一个包,非常小的一种数据包

ACK (Acknowledgement) 确认字符,在数据通信中,接收站发给发送站的一种传输类控制字符。表示发来的数据已确认接受无误


前8个包都是本机发向服务器的syn

第9个包服务器反馈syn+ack

10 本机发送ack

11 服务器反馈syn+ack

12 本机发送ack,三次握手成功,此时tcp连接建立


超文本传输协议 (HTTP-Hypertext transfer protocol) 是一种详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。

13 本机向服务器发送一个http请求,这个包较大578


请求方法 GET 目录 / 协议 HTTP/1.1 主机 10.203.5.100 

连接属性 持续连接:不必为每个web对象创建一个新的连接,一个连接可以传送多个对象

下面是缓存,接受文件格式,本机浏览器信息(UA),编码压缩方式,语言,cookie……


 14 15 本机和服务器互相发送确认信息

16 - 18 似乎是本机的握手信号重发

下面类似,应该是继续互相确认信息

随便找两天出来研究一下



本机发向服务器的确认信息,本机的端口为49838,目标主机端口为80(http协议使用80端口)




服务器的握手和确认信息

下面的差不多,应该就是两个端口互相传输信息


至于什么为什么出现这么多次握手和确认,还有重发

我猜是服务器连接不稳定,今天连接本校官网的时候,第一次居然没有连接上,后来连接上了,也一直在传输数据,这样可以假定服务器并不稳定


随便找了个包,发现flag里面藏着一些东西







TCP  Dup  ACK XXXX#X 则代表了数据段丢失TCP状态,XXXX代表数据丢失的位置,#后代表第几次丢失;
TCP Retransmission则代表重发丢失数据。

TCP segment of a reassembled PDU 主机响应一个查询或者命令时如果要回应很多数据(信息)而这些数据超出了TCP的最大MSS时,主机会通过发送多个数据包来传送 这些数据(注意:这些包并未被分片)。对wireshark来说这些对相应同一个查询命令的数据包被标记了“TCP segment of a reassembled PDU”


既然主机返回了很多信息,那么http相应也该开始了


48 200 OK 表示请求已成功,请求所希望的响应头或数据体将随此响应返回。


flags里面有fin psh ack

SYN表示建立连接

FIN表示关闭连接

ACK表示响应

PSH表示有 DATA数据传输,

RST表示连接重置。

 其中,ACK是可能与SYN,FIN等同时使用的,比如SYN和ACK可能同时为1,它表示的就是建立连接之后的响应

 如果只是单个的一个SYN,它表示的只是建立连接。

TCP的几次握手就是通过这样的ACK表现出来的。

 但SYN与FIN是不会同时为1的,因为前者表示的是建立连接,而后者表示的是断开连接

RST一般是在FIN之后才会出现为1的情况,表示的是连接重置。

 一般地,当出现FIN包或RST包时,我们便认为客户端与服务器端断开了连接;而当出现SYN和SYN+ACK包时,我们认为客户端与服务器建立了一个连接。


看一下http响应头里面有什么


状态码200 响应解析 成功 服务器是Apache 文件编码 gzip 长度类型延迟…… 还有一个压缩比


这个line-based text data把html的页面内容都包括了


50 本机给服务器发了 fin ack

四次握手用来关闭已建立的TCP连接 

1. (B) –> ACK/FIN –> (A) 

2. (B) <– ACK <– (A) 

3. (B) <– ACK/FIN <– (A) 

4. (B) –> ACK –> (A) 

由于TCP连接是双向连接, 因此关闭连接需要在两个方向上做。 

难道本机是想关闭连接?


52 GET方法获取资源文件


这是css文件,下面两个是特征码匹配和修改时间,应该是用于缓存的

使用了Cookie 和 SESSION,都加密过了



这是个js文件



67 HTTP状态码304

304 Not Modified
如果客户端发送了一个带条件的 GET 请求且该请求已被允许,而文档的内容(自上次访问以来或者根据请求的条件)并没有改变,则服务器应当返回这个状态码。304响应禁止包含消息体,因此始终以消息头后的第一个空行结尾。

文档的内容根上次没有改变,可以使用缓存!

72也是



感觉是每从获取一个HTTP相应,本机都会发送一个终止连接符 fin

我的猜测是不断去连接并且不断校验连接



208 似乎是使用了ajax技术


GET方法异步获取相应uri上的内容

格式是json和js

用浏览器试了一下那个uri,获取的内容是null



226 本机向服务器请求一张图片


接受格式 image/webp

浏览器打开是一张奇怪的东西


本机的请求和服务器的相应并不同步,并且每过一些包就会重发

感觉今天我校服务器不行啊,包交换重发的次数很多




如果一个TCP Window变为0了, 或者接近0了, 这就会警告数据发送方没有更多空间来接受更多数据了.

文件传输会停止, 直到收到一个update说buffer已经清空了

781 提示清空buffer的意思?本机发给服务器

在后面经常出现这个提示包


看来上一下学校官网,要下载的东西还就不少



1709 服务器反馈了一个相应头 似乎是个图片,不知道是为什么,前面没有找到本机的请求头


这个不太一样的是 连接保持是 关闭

难道预示了TCP传输要关闭的前兆?

还有一堆其他的东西,应该是个比较奇怪的图片

我的猜测,与前面的304相应的区别是这是一张新的图片,并没有缓存下来


最后面几条TCP连接关闭的握手

连接终止: 建立一个连接需要三次握手,而终止一个连接要经过四次握手,这是由TCP的半关闭(half-close)造成的

1722 是本机最后发向服务器的确认符,确认连接终止


好了,折腾这么久,还是很有收获的

了解了TCP和HTTP这两个协议都是干什么的,对TCP协议的开始和终止的握手的印象也加深了

HTTP请求头和相应头里面的东西对WEB编程很有帮助,通过这些东西可以写出一些更加出色的程序


参考: http://blog.csdn.net/xmphoenix/article/details/6546022

0 0
原创粉丝点击