tcp三次握手和四次挥手全过程
时间: 2024-09-21 08:00:23 浏览: 99
TCP(Transmission Control Protocol)是一种可靠的面向连接的通信协议,其三次握手和四次挥手是建立和终止连接的重要过程。
**三次握手**:
1. **客户端发起syn(同步)请求**:客户端首先随机生成一个序列号seq,并发送SYN标志的TCP包给服务器,同时包含初始序列号seq。
2. **服务器确认syn并设置ack(确认)**:服务器收到请求后,检查该包是否合法,如果合法则回应一个SYN+ACK包,确认序列号为客户端的seq+1,并设置自己的序列号seq_serve。
3. **客户端确认ack**:客户端接收到服务器的SYN+ACK包后,再次回应一个ACK包,确认序列号seq_server+1。此时,连接建立完成,双方可以开始数据传输。
**四次挥手**:
1. **关闭顺序指定**:通常是由客户端发起断开连接的步骤,它先发送FIN(结束)包,表明不再发送数据。
2. **服务器确认fin**:服务器收到FIN后,回复一个ACK,表示收到了这个FIN消息,但是可能还有未发送完的数据,因此不会立即关闭连接。
3. **服务器的最后数据发送和fin**:服务器将剩余的数据发送完毕后,发送一个FIN包给客户端。
4. **客户端确认fin和close_wait**:客户端收到服务器的FIN后,再发送一个ACK,至此,所有的数据已经交换完毕。然后客户端进入TIME_WAIT状态,等待一段时间(一般是2MSL,最大段生命周期)确保服务器也已关闭连接,最后关闭连接。
相关问题
tcp三次握手四次挥手对象
三次握手和四次挥手的对象分别是客户端和服务器。在TCP的三次握手中,客户端向服务器发送连接请求报文段,服务器接收到请求后发送确认报文段给客户端,然后客户端再发送确认报文段给服务器,完成连接的建立。这里客户端和服务器是互相通信的对象。而在TCP的四次挥手中,一个已经建立的连接要关闭时,主动关闭连接的一方发送连接释放报文段给对方,对方接收到后发送确认报文段,然后对方再发送连接释放报文段给主动关闭连接的一方,最后主动关闭连接的一方再发送确认报文段,完成连接的关闭。也同样是客户端和服务器互相通信的对象。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *3* [TCP三次握手,四次挥手的全过程,为什么需要三次握手,四次挥手](https://blog.csdn.net/qq_45795744/article/details/123043490)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *2* [两张动图-彻底明白TCP的三次握手与四次挥手](https://blog.csdn.net/qzcsu/article/details/72861891)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
TCP的三次握手与四次挥手
### TCP的三次握手与四次挥手
#### 实验步骤
1. **查看主机IP及MAC地址**:
- 使用 `ipconfig /all` 命令在命令提示符中查看主机的IP地址和MAC地址。
2. **抓包分析**:
- 启动Wireshark抓包工具。
- 打开浏览器访问任意网站,并使用 `ping` 命令查询该网站的IP地址。
- 关闭浏览器,过一段时间后停止捕获数据包。
3. **过滤和分析数据包**:
- 在Wireshark的过滤栏中设置过滤条件,筛选出与目标网站IP地址相关的TCP数据包。
- 使用“跟踪流”功能查看捕获数据包的TCP首部结构,并记录相关信息。
#### 记录表格
##### 三次握手:
| 握手次数 | 序号 | 确认号 | SYN 标志 | ACK 标志 |
| -- | --- |
| 第一次握手 | | | | |
| 第二次握手 | | | | |
| 第三次握手 | | | | |
##### 四次挥手:
| 挥手次数 | 序号 | 确认号 | FIN 标志 | ACK 标志 |
| --- | --- | --- | --- | --- |
| 第一次挥手 | | | | |
| 第二次挥手 | | | | |
| 第三次挥手 | | | | |
| 第四次挥手 | | | | |
#### 思考题
1. **序号与确认号的变化及其意义**:
- 三次握手中,客户端发送的第一个包(第一次握手)带有SYN标志,序号为初始序列号ISN;服务器收到后回复一个带有SYN和ACK标志的包(第二次握手),确认号为ISN+1,同时携带自己的初始序列号;客户端再回复一个带有ACK标志的包(第三次握手),确认号为服务器的初始序列号+1。
- 四次挥手中,客户端发送第一个带FIN标志的包(第一次挥手),表示不再发送数据;服务器回复一个带有ACK标志的包(第二次挥手),确认号为客户端的序号+1;服务器随后也发送一个带FIN标志的包(第三次挥手),表示自己也不再发送数据;客户端最后回复一个带有ACK标志的包(第四次挥手),确认号为服务器的序号+1。
2. **SYN和FIN标志位的设置及其意义**:
- SYN标志位用于发起连接请求,表示同步序列号。
- FIN标志位用于终止连接请求,表示没有更多数据要发送。
3. **建立连接与释放连接的过程**:
- **三次握手**:客户端发送SYN包,服务器回应SYN-ACK包,客户端再发送ACK包,完成连接建立。
- **四次挥手**:客户端发送FIN包,服务器回应ACK包,服务器随后发送FIN包,客户端再回应ACK包,完成连接释放。
4. **三次握手与四次挥手的原因**:
- **三次握手**:为了防止已失效的连接请求报文段突然又传送到服务端,造成错误。通过三次握手可以确保双方都准备好进行通信。
- **四次挥手**:因为TCP连接是全双工的,每个方向都需要单独关闭,因此需要四个包来完成连接的完全关闭。
阅读全文