持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第30天,点击查看活动详情
tcp三次握手与四次挥手
前文
tcp是我们常用的http和websocket所对应的连接层协议。很明显,tcp是一种非常重要的连接协议。本文内容主要为对于tcp连接过程和断开过程中,客户端与服务器两端的请求情况进行梳理。文章内容主要为笔记内容,其中可能存在不完整之处,同时省略了一些连接过程中的细节数据。
三次握手
首先来了解一下三次握手。三次握手指的是连接过程中客户端和服务器需要进行三次连接处理。第一次,客户端携带连接数据向服务器端发起连接请求。第二次,服务器端响应连接请求,并向客户端发起连接请求。第三次,客户端收到服务器端的连接请求后,向服务器端发起确认消息。至此,经过三次握手,tcp连接建立,客户端与服务器端能够进行通信。那么为什么需要三次握手才能够完成tcp的连接呢。主要是由于连接过程中存在网络的问题。如果仅仅是进行单向的连接,可能客户端发起后认为连接成功,而服务器端并未收到连接请求;或服务器端认为连接成功,但客户端收到请求超时重新建立连接,产生了连接端口的浪费。
四次挥手
对比连接时需要进行三次请求,在断开连接时则需要进行四次请求来完成连接的断开。先来看一下四次挥手的具体过程。第一次,客户端向服务器发起断开连接请求。第二次,服务器端回复收到断开连接请求。第三次,服务器端向客户端发起断开连接请求。第四次,客户端回复收到断开连接请求。至此,客户端与服务器端的连接断开。那么为什么需要四次挥手而连接只需要三次呢?主要是由于服务器端收到断开连接请求并回复后,需要一定的时间进行数据的储存等等,将现有连接中的数据处理完毕,才能发起断开连接请求。同时,四次挥手也是需要保证服务器端和客户端都已准备好连接的释放,防止一端释放而另一端认为仍然在连接中。
后记
- 千古兴亡多少事?悠悠。不尽长江滚滚流。