使用wireshark、Fiddler抓包分析TCP协议

  • 任务概要
  • 一、走近TCP
  • 1.基本简介
  • 2.数据格式
  • 3.TCP的连接
  • 1.建立连接
  • 2.终止连接
  • 3.握手协议
  • 1.三次握手(建立连接)
  • 2.四次挥手(断开连接)
  • 二、wireshark抓包分析TCP
  • 1.连接服务器
  • 2.断开服务器
  • 三、Fiddler网站(HTTPS)抓包分析
  • 1.认识https
  • 2.安装Fiddler
  • 3.抓包分析
  • 四、总结与参考资料
  • 1.总结
  • 2.参考资料


任务概要

以“金庸梦“游戏的客户端连接服务器、断开服务器为例,用wireshark抓包分析TCP协议的三次握手连接、四次握手断开,与计算机网络原理进行验证;用Fiddler抓包,分析验证一个HTTPS网站的TCP连接过程。

一、走近TCP

1.基本简介

TCP/IP(Transmission Control Protocol/Internet Protocol)传输控制协议/网间协议,是一个工业标准的协议集,它是为广域网(WAN)设计的。它是由ARPANET网的研究机构发展起来的。

fiddler 可以抓ios吗_服务器

TCP/IP是一个协议集。为应用提供一些"低级"功能,这些包括IP、TCP、UDP。其它是执行特定任务的应用协议,如计算机间传送文件、发送电子邮件、或找出谁注册到另外一台计算机。

服务类型

  1. FTP 文件传送(File Transfer)
  2. RLogin 远程登录(Remote login)
  3. SMTP POP3 电子邮件(Mail)
  4. NFS 网络文件系统(Network File System)
  5. 远程打印(Remote Printing)
  6. 远程执行(Remote Execution)
  7. 名字服务器(Name Servers)
  8. 终端服务器(Terminal Servers)

2.数据格式

下图展示了TCP首部的数据格式。

fiddler 可以抓ios吗_wireshark_02

如果不计任选(Options)字段,那么,它的大小是20个字节。

3.TCP的连接

1.建立连接

TCP协议通过三个报文段完成连接的建立,这个过程称为三次握手(three-way handshake),过程如下图所示。

fiddler 可以抓ios吗_TCP_03

TCP建立连接之后,通信双方都同时可以进行数据的传输,其次,它是全双工的;在保证可靠性上,采用超时重传和捎带确认机制。

2.终止连接

建立一个连接需要三次握手,而终止一个连接要经过四次握手,这是由TCP的半关闭(half-close)造成的。具体过程如下图所示。

fiddler 可以抓ios吗_服务器_04

3.握手协议

关于握手连接,我们可以通过TCP包头格式的确认ACK、同步SYN、终止FIN的数值判断属于第几次握手。

1.三次握手(建立连接)

下图为第三次握手示意图:

fiddler 可以抓ios吗_TCP_05


(1)客户端发送一个带SYN标志的TCP报文到服务器。这是三次握手过程中的报文1.

(2) 服务器端回应客户端的,这是三次握手中的第2个报文,这个报文同时带ACK标志和SYN标志。因此它表示对刚才客户端SYN报文的回应;同时又标志SYN给客户端,询问客户端是否准备好进行数据通讯。

(3) 客户必须再次回应服务段一个ACK报文,这是报文段3.

分析

第一次握手:客户端->服务器

(ACK=0;SYN=1)

第二次握手:服务器->客户端

(ACK=1;SYN=1)

第三次握手:客户端->服务器

(ACK=1;SYN=0)

2.四次挥手(断开连接)

下图为第四次挥手示意图:

fiddler 可以抓ios吗_TCP_06

由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。

(1) TCP客户端发送一个FIN,用来关闭客户到服务器的数据传送(报文段4)。
(2) 服务器收到这个FIN,它发回一个ACK,确认序号为收到的序号加1(报文段5)。和SYN一样,一个FIN将占用一个序号。
(3) 服务器关闭客户端的连接,发送一个FIN给客户端(报文段6)。
(4) 客户段发回ACK报文确认,并将确认序号设置为收到序号加1(报文段7)。
分析
第一次:客户端->服务器
(ACK=1;FIN=1)
第二次:服务器->客户端
(ACK=1;FIN=0)
第三次:服务器->客户端
(ACK=1;FIN=1)
第四次:客户端->服务器
(ACK=1;FIN=0)

二、wireshark抓包分析TCP

游戏客户端可参考博客:
TCP-端口扫描与网游客户端.
这里我们主要进行TCP协议分析

1.连接服务器

  • 运行游戏客户端
  • 打开wireshark,开始抓包
    对协议进行筛选,选择TCP;

    建立连接

    第一次握手;

    第二次握手;

    第三次握手;

2.断开服务器

  • 关闭游戏客户端
  • 继续抓包
    第一次握手;

    第二次握手;

    第三次握手;

    第四次握手;

三、Fiddler网站(HTTPS)抓包分析

1.认识https

HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer),即超文本传输安全协议,是一种通过计算机网络进行安全通信的传输协议。该协议由网景公司(Netscape)于1994年首次提出。
其开发的主要目的是提供对网站服务器的身份认证,以保护交换数据的隐私与完整性。也由于其安全性较高的原因,它被广泛应用于万维网上安全敏感的通讯,如交易支付等方面。HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,默认使用443端口.

下面就是https的整个架构,现在的https基本都使用TLS了,因为更加安全,所以下图中的SSL应该换为SSL/TLS

fiddler 可以抓ios吗_fiddler 可以抓ios吗_07


有关更多的HTTPS的详情了解。可以见参考资料。

2.安装Fiddler

Fiddler下载地址:
https://www.telerik.com/download/fiddler.

填入信息,点击download for Windows

fiddler 可以抓ios吗_服务器_08


点击下载

fiddler 可以抓ios吗_经验分享_09


开始安装,点击I agree;

fiddler 可以抓ios吗_TCP_10


确认安装路径,点击install

fiddler 可以抓ios吗_wireshark_11


安装成功

fiddler 可以抓ios吗_fiddler 可以抓ios吗_12


打开该软件

fiddler 可以抓ios吗_wireshark_13


弹出窗口,点击NO;

fiddler 可以抓ios吗_wireshark_14


下面开始配置 fiddler 。

点击 Tools → Options…

fiddler 可以抓ios吗_wireshark_15


HTTPS 下,勾选 Decrypt HTTPS traffic,配置成功(弹窗点击确定)

fiddler 可以抓ios吗_服务器_16


至此,安装配置过程就完成了。

3.抓包分析

下面我们开始抓包分析

抓包之前,我们需要清空其他包,方便观察

fiddler 可以抓ios吗_经验分享_17

此符号是清空标志符

或点击 Edit -> remove -> all sessions即可清除所有记录;

fiddler 可以抓ios吗_经验分享_18


打开抓包软件,打开Google浏览器

fiddler 可以抓ios吗_经验分享_19


再换到fiddler;左侧数据就是所抓到的包;

fiddler 可以抓ios吗_经验分享_20


开始分析

Google访问百度

fiddler 可以抓ios吗_wireshark_21


headers是标签

fiddler 可以抓ios吗_wireshark_22


有关更详细的fiddler认识,大家可以参考这个博客。

Fiddler抓包1_介绍及界面概述.

四、总结与参考资料

1.总结

TCP是网络传输层协议;HTTPS是网络应用层协议。

2.参考资料

1.TCP协议连接过程详解. 2. TCP协议. 3.Https协议详解. 4. HTTPS. 5. 如何用fiddler抓包. 6. Fiddler的安装与使用.