面向连接?
这里的连接可以理解为:传输的双方(客户端和服务端)是否已经在线,就像我给你打电话,你接到了,这就算连接上了。
TCP 为什么要握手和挥手呢?
为了网络数据传输的安全性,不然数据传给谁都不知道,那不是很危险??
为什么是三次握手四次挥手呢?
因为多了会浪费资源啊,三次就够确认连接上了,四次也就够确认关闭连接了。
网上找了两张图(侵权立删):
三次握手
四次挥手
哪三次握手?
第一次握手:客户端向服务端发送 SYN 报文,服务端确认接收了 SYN 报文。
第二次握手:服务端在确认接收了 SYN 报文之后,会返回向客户端发送 SYN 报文和 ACK 确认报文。
第三次握手:客户端接收到 SYN 报文了 ACK 报文 之后双方就建立起了连接,可以好好玩耍了。
哪四次挥手?
第一次挥手:客户端向服务端发送数据,发送完成之后会发送一个 FIN 报文,告诉服务端数据发送完毕。
第二次挥手:服务端接收到 FIN 报文之后,将 ACK 报文返回给客户端,告诉客户端(服务端)已经接收到数据。
第三次挥手:服务端处理完数据之后再发送一个 FIN 报文给客户端,告诉客户端(服务端)已经处理完毕。
第四次挥手:客户端接收到服务端发来的 FIN 报文之后就能确认这次的数据传输完成。可以关闭本次数据传输连接了。
频繁三次握手四次挥手也是耗费资源啊。
所以 HTTP 还有一种 KeepAlive connections 机制。本质就是连接复用,减少连接的重复创建和关闭。
作者:_龙衣
链接:https://www.jianshu.com/p/4d11bbeccbec