过滤器的使用:html
可利用“&&”(表示“与”)和“||”(表示“或”)来组合使用多个限制规则,python
好比“(http && ip.dst == 64.233.189.104) || dns”和ip.src != 10.1.2.3 or ip.dst != 10.4.5.6缓存
若是须要将某次捕获记录保存下来方便之后再分析的话则可保存为记录文件,有时候咱们只想将通过过滤的记录保存下来,只要选中“Displayed”便可服务器
技巧:File–Export Objects–HTTP 选择须要导出的包,而后点击save As按钮,用于查看后台上传和下载的文件:wireshark导出http下载或post上传的文件cookie
HTTP分析tcp
TCP协议规定HTTP进程的服务器端口号为80,一般,由HTTP客户端发起一个请求,创建一个到服务器指定端口(默认是80端口)的TCP链接。(注意这里指的是服务器开发的端口80)HTTP服务器则在那个端口监听客户端发送过来的请求。post
http——Packet Counter http总的统计 http.request.method == "GET" http GET请求 http.response==1 http全部的响应包 http.response==1 && http.response.code==200 响应请求成功的包 http.response==1 && http.response.code==201 201 created 提示知道新文件的URL,成功请求并建立了新的资源 http.response==1 && http.response.code==304 客户端已经缓存,不带响应体 http.response==1 && http.response.code==302 客户端继续使用原有URI http.request==1 //过滤全部的http请求,貌似也可使用http.reques http.request.method == "GET" http.request.method == "POST" http.request.uri == "/img/logo-edu.gif" http contains "GET" http contains "HTTP/1." // GET包 http.request.method == "GET" && http contains "Host: " http.request.method == "GET" && http contains "User-Agent: " // POST包 http.request.method == "POST" && http contains "Host: " http.request.method == "POST" && http contains "User-Agent: " // 响应包 http contains "HTTP/1.1 200 OK" && http contains "Content-Type: " http contains "HTTP/1.0 200 OK" && http contains "Content-Type: " 必定包含以下 Content-Type: http.host==magentonotes.com 或者http.host contains magentonotes.com //过滤通过指定域名的http数据包,这里的host值不必定是请求中的域名 http.request.method==POST过滤全部请求方式为POST的http请求包,注意POST为大写 http.cookie contains guid //过滤含有指定cookie的http数据包 http.request.full_uri==” http://task.browser.360.cn/online/setpoint” //过滤含域名的整个url则须要使用http.request.full_uri http.content_type == “text/html” //过滤content_type是text/html的http响应、post包,即根据文件类型过滤http数据包 http.server //过滤全部含有http头中含有server字段的数据包 http.request.version == "HTTP/1.1" //过滤HTTP/1.1版本的http包,包括请求和响应
TCP完整分析:url
在连个链接创建的时候,SYN包里面会把彼此TCP最大的报文段长度,在局域网内通常都是1460.若是发送的包比最大的报文段长度长的话就要分片了,
被分片出来的包,就会被标记了“TCP segment of a reassembled PDU”,能够参考下图,看一下,被标记了的包的SEQ和ACK都和原来的包一致。spa
捕捉断开链接的数据包
tcp.window_size == 0 && tcp.flags.reset != 1
TCP三次握手:建立TCP链接
一、A端SYN=1,ACK=0 SequenceNumber=XXX
二、B端SYN=1,ACK=1 SequenceNumber=YYY Acknowledgement=XXX+1
三、A端SYN=0,ACK=1 SequenceNumber=XXX+1 Acknowledgement=YYY+1 这个TCP负载中已经能够包含业务数据了。
TCP连接撤销:
一、A端FIN=1,ACK=1 SequenceNumber=XXX Acknowledgement=YYY
二、B端FIN=1,ACK=1 SequenceNumber=YYY Acknowledgement=XXX+1
三、A端FIN=0,ACK=1 SequenceNumber=XXX+1 Acknowledgement=YYY+1
这里是Github做为Client主动发起关闭链接的请求,这里的FIN=FINish
Github 发Fin(x=6831)包; ——FIN(X)
本机收到上面的包后,作出ACK(x+1=6832)响应,跟Github说我收到了~,你别再发了; ——ACK(X+1)
你要关了,那我也准备关吧~ 因而发Fin(y=1054)包,你准备好了么?; ——FIN(Y)
Github准备好了,给出响应ACK(y+1=1055),告诉本机准备好了; ——ACK(Y+1)
TCP完整分析:
第一次握手 102 tcp.flags.syn == 1 and tcp.flags.ack == 0 第二次握手 103 重传一次 403 tcp.flags.syn == 1 and tcp.flags.ack == 1 第三次握手 ACK=1 seq=1 109-4 tcp.flags.ack == 1 && tcp.seq==1&&tcp.ack==1&&!tcp.flags.fin==1&&!http&&tcp.len==0 不能只抓取第三次握手的数据包。 客户端发起关闭请求 104 tcp.flags.fin==1 && tcp.flags.ack==1&&ip.src==102.168.0.120 服务器响应关闭链接 94 tcp.flags.fin==1 && tcp.flags.ack==1&&ip.src!=102.168.0.120 TCP传输数据量: !http&&!(tcp.flags.syn == 1 and tcp.flags.ack == 0)&&!(tcp.flags.syn == 1 and tcp.flags.ack == 1)&&!(tcp.flags.fin==1 && tcp.flags.ack==1)&&!(tcp.flags.ack == 1&& tcp.seq==1&&tcp.ack==1&&!tcp.flags.fin==1&&!http&&tcp.len==0) http 第一次握手 第二次握手 第一、3次挥手 第三次握手