Wreshark分析理解TCP三次握手
1 TCP三次握手势什么意思?
TCP/IP 传输协议的 TCP 层是面向连接的。面向连接意味着,在传输任何数据之前,必须获得并确认可靠的连接。
TCP三次握手是TCP/IP网络中用于在客户端和服务端之间建立连接的过程,这是一个三步过程,要求客户端和服务端在真正的数据通信之前交换同步和确认包。
2 TCP三次握手的元素类型
元素符号 |
描述 |
SYN |
SYN代表同步序列号(Synchronize Sequence Number),用于发起和建立连接,如果SYN为1,则表示设备希望建立安全连接。
|
ACK |
ACK表示对SYN报文的相应,如果ACK为1,则表示设备收到SYN的报文。 |
FIN |
RIN表示结束连接,如果FIN为1 ,则设备表示断开连接。 |
Sequence Number |
序列号,分配给数据的第一个位的32位数字。它用于发起和建立连接。通常,序列号在一个连接中只使用一次。 |
Acknowledgment Number |
确认好,回应发送过来的Sequence Number确认号码,号码通常比Sequence Number大1。 |
3 IP报头
IP报头格式的长度为 20 到 60 个字节。它包含路由和交付所需的信息。它由版本、报头长度、总距离、标识、标志、校验和、源IP地址、目的IP地址等13个字段组成。它提供了传输数据所需的基本数据。
Wireshark数据库链路层IP数据包头信息展示:
资料来源:http://networkstatic.net/what-are-ethernet-ip-and-tcp-headers-in-wireshark-captures/
4 TCP三次握手步骤示例
第一次握手:客户端请求连接到服务器,发送一个带有SYN (2087)的段并通知服务器开始通信。
第二次握手:服务器使用指定的 SYN-ACK 信号响应客户端请求,ACK (2087+1)显示收到的段响应,SYN (5012)显示从该段开始的序列号。
第三次握手:在这最后一步中,客户端使用ACK(5012+1)确认来自服务器的响应,并建立连接。
5 在Wireshark中分析TCP三次握手示例
第一次握手
客户端向服务器发送SYN:当客户端与服务器建立连接时,SYN Flag设置为1,并向服务器发送消息,SEQ(Sequence Number)序列号:2230190955
第二次握手
服务器向客户端回复SYN+ACK:服务器收到客户端同步连接请求后,通过设置ACK Flag为1向客户端发送确认,确认号2230190956大于所接收的SEQ(Sequence Number)序列号:2230190955,服务器还将SYN 标志设置为“1”并将其发送给客户端,这里用于SYN的SEQ序列号11178485与客户端SYN的序列号不同2230190955,完成这一步后,就建立了从客户端到服务器端的连接。
第三次握手
客户端向服务器发送ACK :客户端收到服务器的SYN后,将ACK标志设置为“1”,并发送确认号11178485,确认号比服务器SYN序列号大1。
6 TCP完整的通信过程
1 连接建立阶段
2 数据传输阶段
3 连接终止阶段