TCP/IP三次握手四次挥手

本文详细解析了TCP协议中的三次握手和四次挥手的过程。三次握手用于建立连接,确保客户端和服务端都能正常接收对方的数据;四次挥手则是在完成数据传输后,双方按顺序关闭连接,保证数据的完整性和可靠性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

TCP三次握手
所谓握手,也就是建立连接,三次过程。
三次握手旨在连接到服务端的指定端口,进行通信。建立一个TCP连接,需要向客户端和服务端发送三个包。
其中包含同步序列号和确认号以及TCP窗口大小的信息交换。一般触发握手在socket中都是connect()函数触发的

第一次握手:
客户端发送TCP请求, (SYN标记位置1个包,SYN=1,ACK=0 也就是带有SYN标记的TCP包,初始序列号为X,保存在包头的序列号中). 表示客户端需要建立一个TCP连接,这是握手中的第一不,发送请求。

第二次握手:
服务端收到带有SYN标记的TCP包,发送确认包(带有ACK和SYN的数据包,SYN=1,ACK=1,序列号为y是服务端的)此时服务端询问客户端是否准备好数据传输,此时服务器进入SYN_RECV状态。。

第三次握手:
客户端接收到服务端的数据包(ACK+SYN数据包)向服务端发送一个(序列号x+1,ACK=y+1)的数据包,此包发送完毕,客户端和服务器进入ESTAB_LISHED(TCP连接成功)状态,完成三次握手。

TCP四次挥手
TCP连接是双工的,所以每个方向都是单独关闭。当其中一方完成数据传输后可以发送FIN结束。接收到了FIN只是意味着没有这个方向的数据流了
收到FIN的TCP连接可以发送数据,第一个关闭方执行主动动作,另一个执行被动动作。

第一次挥手:
客户端发送FIN请求,说我要关闭TCP连接了,不再传输数据了。 (FIN=1,序列号=n)

第二次挥手:
服务端收到这个请求,并且响应此请求,发送一个ACK包,确认ack为收到的序号+1。

第三次挥手:
服务端关闭TCP连接,向客户端发送FIN消息。

第四次挥手:
客户端接收到消息,发送ACK包确认,并将确认序号seq设置为收到序号+1。

个人总结github地址:https://github.com/luoyan321?tab=repositories  有兴趣的同学可以看看

TCP/IP协议中的三次握手是为了在客户端和服务端建立一个安全可靠的连接。在第三次握手时,客户端能够发出第三次握手报文,表示已经接收到来自服务端的第二次握手报文,从而确认连接的建立。此时,服务端的状态会切换为ESTABLISHED,可以开始传输数据了。\[1\] 三次握手的过程如下: 1. 客户端发送一个连接请求报文给服务端,表示想要建立连接。 2. 服务端接收到请求后,发送一个确认报文给客户端,表示已经收到请求。 3. 客户端接收到确认报文后,再次向服务端发送一个确认报文,表示已经收到服务端的确认。 至于为什么不进行四次握手,实际上是可以的,即在服务端收到客户端的第一次连接请求后,可以将ACK和SYN分两次发送给客户端。但这样做会浪费资源,因为一次能完成的事情为什么要分为两次呢?所以,TCP/IP协议采用了三次握手的机制来建立连接。\[2\]\[3\] #### 引用[.reference_title] - *1* [TCP/IP协议、三次握手四次挥手详解](https://blog.youkuaiyun.com/Q0717168/article/details/111933810)[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^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [TCP三次握手四次挥手(详细+通俗)](https://blog.youkuaiyun.com/m0_38089031/article/details/108567936)[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^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值