本次抓包
通过抓取本机连接到我校校园网
CUG
中产生的数据包进行分析,主要分析了ping命令以及TCP三次握手和四次挥手。
PING分析
过程简介
首先打开
wireshark
抓包软件开始抓包
,
接着调出
cmd
命令窗口执行
ping
命令
,
以此来获取校园网的
IP
地址.
打开浏览器输入校园网的网址
,
在加载完毕后关闭页面
,
等待几秒后终止抓包进程, 通过
wireshark过滤器过滤出和目的IP
地址相关的数据包进行分析
.
PING测试
在
cmd
命令窗口输入
ping
www.cug.edu.cn
,
可以得到如图所示内容.

可以得到以下信息
.
目的网络
IP
地址为
202.114.198.182,
发送的
4
个数据包均被成功接收
,
字节数和
TTL
都相同
,
往返时间略有差异.
丢包率为
0%,
并且可以得到往返时间的最短值
,
最长值和平均值
.
可见这是一组成功的
Ping
测试结果
,
说明与目标服务器之间的网络连通性良好
,
无数据包丢失
,
延迟稳定.
抓包分析
PING请求与回复
在
wireshark
中抓取
ping
测试的
icmp
数据包如图所示
,
包含四次请求与四次回复
.
下面我将分别以第一次请求与第一次回复的icmp
数据包为例进行分析
.

第一次请求
第一次请求的数据包内容如图所示
.

可以得到以下信息
.
IP
层信息
- 协议版本:IPv4
- 标志字段Don't Fragment 位: 设置为0, 表明该数据报可以分片
- 源IP地址: 172.26.229.54
- 目标IP地址:202.114.198.182
- TTL生存时间:128
ICMP 协议信息
- ICMP类型: 8 (Echo 请求,Ping 请求)
-
代码: 0 (无子类型)
- 校验和: 0x4cf8, 状态为正确
- 标识符: Big Endian: 0x0001 Little Endian: 0x0100
- 序列号: Big Endian: 99 Little Endian: 25344
第一次回复
第一次回复的数据包内容如图所示
.

可以得到以下信息
.
IP
层信息
- 协议版本:IPv4
- 标志字段Don't Fragment 位: 设置为1, 表明该数据报不可分片
- 源IP地址: 202.114.198.182
- 目标IP地址:172.26.229.54
- TTL生存时间:252
ICMP
协议信息
- ICMP类型: 0 (Echo 回复,Ping 回复)
- 代码: 0 (无子类型)
- 校验和: 0x54f8, 状态为正确
- 标识符: Big Endian: 0x0001 Little Endian: 0x0100
- 序列号:Big Endian: 99 Little Endian: 25344
三次握手
在
wireshark
中抓取三次握手的
TCP
数据包如图所示
.
下面我将分别介绍这三个数据包的内容
.

第一次握手
第一次握手的数据包内容如图所示
.

可以得到以下信息
.
- IP地址
- 源IP地址: 172.26.229.54
- 目标IP地址: 202.114.198.182
- 端口号
- 源端口号: 61186
- 目的端口号: 443
- 序列号( Sequence Number) : 0. 表示这是连接初始化时发送的 SYN 包, 其相对序列号为 0
- 确认号( Acknowledgment Number): 0. 因为这是第一次握手, 还没有收到任何数据, 所以确认号为0
- TCP 标志位
- SYN: 设置为 1. 这是标志 TCP 连接初始化的 SYN 包
- FIN和ACK 等: 均未设置. 表示当前不是连接关闭(FIN) 或数据确认(ACK)的包
- 解释: 这是 TCP 三次握手的第一步. 客户端向服务器发送一个SYN=1的报文,并指定一个客户端的初始序列号seq以请求与目标建立连接. 这时, 客户端进入SYN-SENT(同步已发送) 状态, 这个动作启动了TCP连接的建立.
第二次握手
第二次握手的数据包内容如图所示
.

可以得到以下信息
.
- IP地址
- 源IP地址: 202.114.198.182
- 目标IP地址: 172.26.229.54
- 端口号
- 源端口号: 443
- 目的端口号: 61186
- 序列号(Sequence Number) : 0. 说明目标主机在建立连接时的初始序列号(相对序列号0) 为 0
- 确认号(Acknowledgment Number) : 1. 表示目标主机已成功接收到来自源主机的 SYN 包(第一次握手) .这里的确认号是对源主机的初始序列号加1
- TCP 标志位
- SYN: 设置为 1. 这表明目标主机同意建立连接
- ACK: 设置为 1. 这是对源主机第一次握手( SYN 包) 的确认
- 其他标志位: 均未设置. 表示这是一个正常的连接初始化响应
- 解释: 这是 TCP 三次握手的第二步. 服务器收到客户端的SYN报文后, 需要确认客户的SYN( ack=x+1), 同时自己也发送一个SYN报文 ( SYN=1) , 即SYN+ACK报文, 此时服务器端将进入SYN-RCVD( 同步收到) 状态.
第三次握手
第三次握手的数据包内容如图所示
.

可以得到以下信息
.
- IP地址
- 源IP地址: 172.26.229.54
- 目标IP地址: 202.114.198.182
- 端口号
- 源端口号: 61186
- 目的端口号: 443
- 序列号(Sequence Number) : 1. 源主机发送的相对序列号为 1, 说明之前发送的 SYN 数据包序列号为 0, 现在的序列号已经加 1
- 确认号( Acknowledgment Number) : 1. 表明源主机已经成功接收了目标主机的 SYN-ACK 包, 并确认目标主机的初始序列号加 1
- TCP 标志位
- SYN: 未设置. 表明当前是第三次握手, 而不是初始的 SYN 包
- ACK: 设置为 1. 表示这是一个确认数据包, 用于确认目标主机发送的 SYN-ACK 包
- 其他标志位: 均未设置. 表示这是一个普通的确认包, 没有携带其他控制信息
- 解释: 这是 TCP 三次握手的第三步. 客户端收到服务器的SYN+ACK报文后, 会发送一个确认报文ACK(ack=y+1) , 这个报文发送完毕后, 客户端和服务器端都进入ESTABLISHED(已建立连接) 状态, 完成三次握手, TCP连接建立成功
过程总结
三次握手过程
:
1. 第一次握手
(SYN) :
源主机发起连接请求
,
提供初始序列号
2. 第二次握手
(SYN-ACK) :
目标主机确认收到
SYN,
并发送自己的
SYN
请求
3. 第三次握手
(ACK) :
源主机确认目标主机的
SYN-ACK,
完成连接建立
从此抓包分析可以确认
,
三次握手过程是完整且成功的
,
双方已经可以进行正式的通信

四次挥手
在
wireshark
中抓取四次挥手的
TCP
数据包如图所示
.
下面我将分别介绍这四个数据包的内容
.

第一次挥手
第一次挥手的数据包内容如图所示.

可以得到以下信息
.
- IP地址
- 源IP地址: 172.26.229.54
- 目标IP地址: 202.114.198.182
- 端口号
- 源端口号: 61197
- 目的端口号: 443
- 序列号(Sequence Number) : 1872. 当前数据包的相对序列号为1872确认号( Acknowledgment Number) : 148. 表示源主机确认了目标主机之前的所有数据, 其确认号为目标主机的序列号加 1
- TCP 标志位
- FIN: 设置为1. 表明这是一个请求断开连接的包. 源主机请求结束当前连接
- ACK: 设置为 1. 表明此包同时包含对之前数据的确认
- 其他标志位: 均未设置. 表示这是一个正常的关闭请求, 没有其他特殊的控制信息
- 解释: 这是 TCP 四次挥手的第一步. 源主机发送 FIN 包, 请求断开连接. 这表示源主机已经完成数据发送, 进入半关闭状态, 等待目标主机的响应
第二次挥手
第二次挥手的数据包内容如图所示
.

可以得到以下信息
.
- IP地址
- 源IP地址: 202.114.198.182
- 目标IP地址: 172.26.229.54
- 端口号
- 源端口号: 443
- 目的端口号: 61197
- 序列号(Sequence Number) : 148. 当前数据包的相对序列号为 148
- 确认号( Acknowledgment Number) : 1873. 表示目标主机确认了源主机在第一次挥手中发送的 FIN 包, 其序列号为 1872, 所以确认号为 1873(即 1872 + 1)
- TCP 标志位
- ACK: 设置为 1. 表示这是一个确认数据包, 用于确认源主机发送的 FIN 包
- 其他标志位: 均未设置. 表明此包只是一个确认数据包, 没有其他控制信息
- 解释: 这是 TCP 四次挥手的第二步. 用于确认源主机的 FIN 包, 通过此确认包, 源主机可以放心地进入半关闭状态, 目标主机将在稍后发送自己的 FIN 包请求断开连接
第三次挥手
第三次挥手的数据包内容如图所示
.

可以得到以下信息
.
- IP地址
- 源IP地址: 202.114.198.182
- 目标IP地址: 172.26.229.54
- 端口号
- 源端口号: 443
- 目的端口号: 61197
- 序列号(Sequence Number) : 148. 当前数据包的相对序列号为 148
- 确认号( Acknowledgment Number) : 1873. 表示目标主机确认了源主机在第一次挥手中发送的 FIN 包, 其序列号为 1872, 所以确认号为 1873(即 1872 + 1)
- TCP 标志位
- FIN: 设置为1. 表示目标主机请求断开连接
- ACK: 设置为 1. 表示目标主机对源主机的FIN包的确认
- 其他标志位: 均未设置. 说明此包仅用于断开连接的请求和确认
- 解释: 这是 TCP 四次挥手的第三步. 目标主机发送FIN和ACK, 确认源主机的断开请求, 并发出自己的断开请求
第四次挥手
第四次挥手的数据包内容如图所示
.

可以得到以下信息
.
- IP地址
- 源IP地址: 172.26.229.54
- 目标IP地址: 202.114.198.182
- 端口号
- 源端口号: 61197
- 目的端口号: 443
- 序列号(Sequence Number) : 1873. 当前数据包的相对序列号为1873
- 确认号( Acknowledgment Number) : 149. 表示源主机确认了目标主机在第三次挥手中发送的FIN包, 其确认号为目标主机的序列号加1(即148+1)
- TCP 标志位
- ACK: 设置为 1. 表示这是一个确认数据包用, 于确认目标主机的FIN包
- 其他标志位: 均未设置. 表明此包只是一个确认包, 没有其他控制信息
- 解释: 这是 TCP 四次挥手的第四步. 源主机通过此ACK包确认了目标主机在第三次挥手中发送的FIN 包, 表明连接正式关闭
过程总结
四次挥手过程
:
1.第一次挥手
:
源主机发送
FIN
包
,
表示希望断开连接
2.第二次挥手
:
目标主机发送
ACK
包
,
确认接收到源主机的
FIN
包
3.第三次挥手
:
目标主机发送
FIN
包
,
表示自己也准备断开连接
4.第四次挥手
:
源主机发送
ACK
包
,
确认接收到目标主机的
FIN
包,连接正式关闭
从此抓包分析可以确认
,
四次挥手过程是完整且成功的
,
双方的连接彻底关闭
!
