tcp连接的3次握手
http://www.tcpipguide.com/free/t_TCPConnectionEstablishmentProcessTheThreeWayHandsh-3.htm
synchronous for SYN
Acknowledgement for ACK
第一次
第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。
第二次
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。
上图的流程:服务端为192.168.1.18,客户的端为192.168.1.139
192.168.1.139首先向192.168.1.18发送syn包,包序号seq1为0
192.168.1.18收到192.168.1.139syn包后,将包序号加1,赋值给ack1。 ack1=seq1+1=1。同时还要发送自己的包序号seq2=0。
192.168.1.139收到回复之后,需要回复192.168.1.18。自己的包序号seq1=seq1+1=0+1=1。同时将服务端的包序号加1,再发送回去。即ack2=seq2+1=0+1=1
To establish a connection, each device must send a SYN and receive an ACK for it from the other device.
Thus, conceptually, we need to have four control messages pass between the devices.
However, it's inefficient to send a SYN and anACK in separate messages when one could communicate both simultaneously.
Thus, in the normal sequence of events in connection establishment, one of the SYNs and one of the ACKs is sent together by setting both of the relevant bits (a message sometimes called a SYN+ACK).
This makes a total of three messages, and for this reason the connection procedure is called a three-way handshake.
Key Concept: The normal process of establishing a connection between a TCP client and server involves three steps:
the client sends a SYN message;
the server sends a message that combines an ACK for the client’s SYN and contains the server’s SYN;
and then the client sends an ACK for the server’s SYN. This is called the TCP three-way handshake.
Table 152 describes in detail how the three-way handshake works (including a summary of the preparation discussed in the previous topic).
It is adapted from the table describing the TCP finite state machine, but shows what happens for both the server and the client over time.
Each row shows the state the device begins in, what action it takes in that state and the state to which it transitions.
The transmit and receive parts of each of the three steps of the handshake process are shown in the table, as well as in Figure 211.
Table 152: TCP “Three-Way Handshake” Connection Establishment Procedure
Client |
Server |
||||
Start State |
Action |
Move To State |
Start State |
Action |
Move To State |
CLOSED |
The client cannot do anything until the server has performed a passive OPEN and is ready to accept a connection. (Well, it can try, but nothing will be accomplished until the server is ready.) |
— |
CLOSED |
The server performs a passive OPEN, creating a transmission control block (TCB) for the connection and readying itself for the receipt of a connection request (SYN) from a client. |
LISTEN |
CLOSED |
Step #1 Transmit: The client performs an active OPEN, creating a transmission control block (TCB) for the connection and sending a SYN message to the server. |
SYN-SENT |
LISTEN |
The server waits for contact from a client. |
— |
SYN-SENT |
The client waits to receive an ACK to the SYN it has sent, as well as the server's SYN. |
— |
LISTEN |
Step #1 Receive, Step #2 Transmit: The server receives the SYN from the client. It sends a single SYN+ACK message back to the client that contains an ACK for the client's SYN, and the server's own SYN. |
SYN-RECEIVED |
SYN-SENT |
Step #2 Receive, Step #3 Transmit: The client receives from the server the SYN+ACK containing the ACK to the client's SYN, and the SYN from the server. It sends the server an ACK for the server'sSYN. The client is now done with the connection establishment. |
ESTABLISHED |
SYN-RECEIVED |
The server waits for an ACK to the SYN it sent previously. |
— |
ESTABLISHED |
The client is waiting for the server to finish connection establishment so they can operate normally. |
|
SYN-RECEIVED |
Step #3 Receive: The server receives the ACK to its SYNand is now done with connection establishment. |
ESTABLISHED |
ESTABLISHED |
The client is ready for normal data transfer operations. |
|
ESTABLISHED |
The server is ready for normal data transfer operations. |
|
Figure 211: TCP “Three-Way Handshake” Connection Establishment Procedure
This diagram illustrates how a conventional connection is established between a client and server, showing the three messages sent during the process and how each device transitions from theCLOSED state through intermediate states until the session is ESTABLISHED.
作者:Chuck Lu GitHub |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
2014-10-22 excel的C#操作教程
2014-10-22 Excel编程的基本概念
2014-10-22 Excel中的基本概念
2014-10-22 How to create Excel file in C#