手记

TCP 的三次握手和四次挥手

面向连接?
这里的连接可以理解为:传输的双方(客户端和服务端)是否已经在线,就像我给你打电话,你接到了,这就算连接上了。

TCP 为什么要握手和挥手呢?
为了网络数据传输的安全性,不然数据传给谁都不知道,那不是很危险??

为什么是三次握手四次挥手呢?
因为多了会浪费资源啊,三次就够确认连接上了,四次也就够确认关闭连接了。

网上找了两张图(侵权立删):


三次握手


四次挥手

哪三次握手?
第一次握手:客户端向服务端发送 SYN 报文,服务端确认接收了 SYN 报文。

第二次握手:服务端在确认接收了 SYN 报文之后,会返回向客户端发送 SYN 报文和 ACK 确认报文。

第三次握手:客户端接收到 SYN 报文了 ACK 报文 之后双方就建立起了连接,可以好好玩耍了。

哪四次挥手?
第一次挥手:客户端向服务端发送数据,发送完成之后会发送一个 FIN 报文,告诉服务端数据发送完毕。

第二次挥手:服务端接收到 FIN 报文之后,将 ACK 报文返回给客户端,告诉客户端(服务端)已经接收到数据。

第三次挥手:服务端处理完数据之后再发送一个 FIN 报文给客户端,告诉客户端(服务端)已经处理完毕。

第四次挥手:客户端接收到服务端发来的 FIN 报文之后就能确认这次的数据传输完成。可以关闭本次数据传输连接了。

频繁三次握手四次挥手也是耗费资源啊。
所以 HTTP 还有一种  KeepAlive connections 机制。本质就是连接复用,减少连接的重复创建和关闭。



作者:_龙衣
链接:https://www.jianshu.com/p/4d11bbeccbec


0人推荐
随时随地看视频
慕课网APP