Wireshark入门

2018-12-27  本文已影响0人  匿名用户_bcc3

相信大家总是能听到TCP、UDP,还有TCP三次握手,之前都是看的书上的理论,今天来用Wireshark抓一个tcp三次握手。

在平时的开发中,如果是一般的Http或者Https请求,我们直接在Windows上使用Fiddler、Mac上使用Charles来抓包即可。当然,使用Wireshark也可以抓取http、https请求,不过一般使用Wireshark来抓TCP请求。

官方下载地址:https://www.wireshark.org/download.html

首先,来看下wireshark界面


image.png

这里选择Wi-Fi就能抓到本机所有的请求了,我这里是wifi,如果是直接连网线,看到的就是本地连接了。这个很简单,你试一下就能知道了。

然后就能看到各种网络请求了,包括应用层协议和传输层协议。


因为数据传输记录太多了,那么就一定需要过滤器功能了。上面的过滤器栏中支持以下几种表达式:
表达式规则

  1. 协议过滤
    比如tcp,只显示TCP协议。http,就是只显示HTTP协议。注意,这里是区分大小写的。
  2. IP 地址过滤
    比如 ip.src ==192.168.1.102 显示源地址为192.168.1.102,
    ip.dst==192.168.1.102, 目标地址为192.168.1.102
  3. 端口过滤
    tcp.port ==80, 端口为80的
    tcp.srcport == 80, 只显示TCP协议的愿端口为80的。
  4. Http模式过滤
    http.request.method=="GET", 只显示HTTP GET方法的。
  5. 逻辑运算符为 AND/ OR

点击任意一个记录,下面会显示该记录的封包详细信息


关于互联网通信协议,推荐阮一峰的“互联网协议入门”,写的真好。http://www.ruanyifeng.com/blog/2012/05/internet_protocol_suite_part_i.html

下面看下TCP报文头部格式:



再来对比看一下Wireshark抓的TCP包,终于从理论到实践了。大学期间看了很多遍TCP报文头都记不住。重点关注一下Sequence number 和 Acknowledgment number 以及Flags。


现在进入我们的重点,TCP三次握手,这个历史性的握手
我们先访问一个http请求“http://www.cnblogs.com/tankxiao”,注意这里不是https哦,关于https我后面再讲。


我们找到我们请求的http地址,注意看Stream index = 2,这个index等下可以追踪到这次http建立之前的tcp三次握手过程。

我们鼠标右键这个http请求,Follow-TCP Stream,就可以看到此次tcp建立连接的历史性握手了。



上面的地址栏过滤"tcp.stream eq 2"中的2就是上面的Stream index。

咱么首先看下TCP三次握手经典图



大学时看过很多遍这个图,却记不住到底啥意思,就是因为太抽象了,抽象到只能死记硬背,今天通过wireshark一看就明白了。

下面来分步解析一下三次握手过程,主要关注三个参数,分别是Flags、Sequence number、Acknowledgment number

第一次握手
Flags:SYN
Sequence number:0
Acknowledgment number:0

第二次握手
Flags:SYN,ACK
Sequence number:0
Acknowledgment number:1

第三次握手
Flags:ACK
Sequence number:1
Acknowledgment number:1

总结:TCP三次握手过程

参考博客:https://www.cnblogs.com/TankXiao/archive/2012/10/10/2711777.html

上一篇下一篇

猜你喜欢

热点阅读