TCP 的三次握手和四次挥手

TCP : 传输控制协议,是一种可靠的面向连接的协议,对应的还有 UDP 协议
UDP:用户数据报协议,是一种面向无连接的协议。

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

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

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

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

《TCP 的三次握手和四次挥手》 三次握手

《TCP 的三次握手和四次挥手》 四次挥手

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

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

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

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

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

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

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

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

    原文作者:_龙衣
    原文地址: https://www.jianshu.com/p/4d11bbeccbec
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞