网络世界的“握手”与“告别”:揭秘TCP的三次握手与四次挥手

在网络世界中,数据的传输就像是一场精心编排的舞蹈,而TCP(Transmission Control Protocol,传输控制协议)则是这场舞蹈的指挥家。它确保数据在网络中的传输既稳定又可靠。那么,在这背后,TCP是如何通过"三次握手"和"四次挥手"来确保数据的稳定传输和优雅告别的呢?让我们用比喻的方式,一起揭开这个秘密。

一、三次握手:建立连接的舞蹈

想象你和一个朋友想要进行一次对话,但你们需要先确保双方都已经做好了准备,才能确保对话的顺利进行。这就是TCP三次握手的作用。

  1. 第一次握手:你向朋友挥挥手,说:"我准备好了,可以开始对话吗?" 在TCP中,这相当于客户端向服务器发送一个SYN(同步)包,并附带一个序列号seq=x,表示客户端的初始序列号。
  2. 第二次握手:朋友看到你挥手后,也向你挥挥手,回应说:"我也准备好了,我的初始序列号是y,请确认。" 在TCP中,这相当于服务器收到SYN包后,返回一个SYN+ACK(同步确认)包,ack=x+1表示对客户端的SYN包进行确认,同时自己也发送一个SYN包,序列号seq=y。
  3. 第三次握手:你收到朋友的回应后,再次挥手确认:"好的,我确认我们都准备好了,可以开始对话了。" 在TCP中,这相当于客户端收到服务器的SYN+ACK包后,向服务器发送一个确认包ACK(ack=y+1),表示对服务器的SYN包进行确认。

通过这三次握手,客户端与服务器之间就建立了一个可靠的连接,可以开始传输数据了。

什么?看完上面讲的还是没懂?没关系,(拿起水杯喝一口润润嗓)那我就再换种方式讲一次,客户端和服务单为什么要三次握手?

  1. **第一次握手:**客户端给服务端发送消息后进入等待状态,这个时候客户端并不知道自己的发送和接收是否正常,需要服务端收到消息以后再告诉客户端我收到你发的消息啦,才能确认自己的发送和接收都是正常的。
  2. **第二次握手:**服务端收到客户端发来的消息后给客户端回复消息,这个时候服务端知道自己的接收是正常的,但是不知道发送是否正常,需要客户端收到消息以后再告诉服务端我收到你发的消息啦,才能确认自己的发送也是正常的。
  3. **第三次握手:**客户端收到服务端发来的消息后,最终确认了自己的发送和接收都是正常的。接着最后一次回复服务端告诉他我们的接收和发送都是正常的,可以开始传输数据了。

别着急,文字不想看,有办法,我再画个图:

二、四次挥手:优雅告别的仪式

当你们的对话结束后,你们需要以一种优雅的方式告别,确保双方都已经知道对话已经结束。这就是TCP四次挥手的作用。

  1. 第一次挥手:你向朋友表示:"我数据说完了,准备关闭连接了。" 在TCP中,这相当于客户端发送一个FIN(结束)包,序列号seq=u,表示客户端已经发送完所有数据。
  2. 第二次挥手:朋友收到你的告别后,回应说:"我收到了你的告别,但我可能还有一些数据要发送给你。" 在TCP中,这相当于服务器收到FIN包后,返回一个ACK包,ack=u+1,表示对客户端的FIN包进行确认。
  3. 第三次挥手:当服务器也发送完所有数据后,它再次向客户端表示:"我也发送完所有数据了,准备关闭连接了。" 在TCP中,这相当于服务器发送一个FIN包,序列号seq=v。
  4. 第四次挥手:你收到服务器的告别后,回应说:"我收到了你的告别,现在我们可以正式告别了。" 在TCP中,这相当于客户端收到FIN包后,返回一个ACK包,ack=v+1,表示对服务器的FIN包进行确认。

通过这四次挥手,客户端与服务器之间就优雅地结束了连接,确保双方都已经知道连接已经关闭。

三次握手懂了,但是四次挥手还是没懂?没关系,(再次拿起水杯喝一口润润嗓)那我就再换种方式讲一次,客户端和服务单为什么要四次挥手?

TCP是全双工通信,可以双向传输数据。任何一方都可以在数据传送结束后发出连接释放的通知,待对方确认后进入半关闭状态。当另一方也没有数据再发送的时候,则发出连接释放通知,对方确认后就完全关闭了 TCP 连接。

  1. **第一次握手:**客户端在和服务端建立连接后,开始传输数据,但是客户端很快就结束了,然后告诉服务端我已经结束了,你完事没?然后进入等待状态。
  2. **第二次握手:**服务端要比客户端持久,收到客户端的结束信号以后,告诉客户端你再等会,我还没完事呢。
  3. **第三次握手:**过了一会儿,服务端也完事了,然后通知客户端可以关闭了,然后等待客户端响应。
  4. **第四次握手:**客户端收到后,给服务端抛一个媚眼表示收到。服务端收到后立马关闭了连接,而客户端等了一会儿也关闭了连接。

上面这个流程就不用画图表示了,其实TCP的三次握手和四次挥手很好理解,这些动作最终都是为了保证数据在传输过程中的安全性,它们通过精确的序列号和确认机制,确保了数据在传输过程中的稳定性和安全性。这种机制不仅保证了数据传输的可靠性,也为我们在网络世界中提供了更好的通信体验。

相关推荐
NOVAnet20233 分钟前
为迎战双十一,南凌科技发布「大促网络保障解决方案」,以确定性网络抵御不确定流量洪峰
网络·科技·安全·网络安全
要加油哦~6 分钟前
keep-alive | vue 中的 keep-alive 和 http中 的 Connection: keep-alive 共同点 和 区别
网络·网络协议·http
莫小墨13 分钟前
Qt 网络聊天室项目
网络·qt
zhaoxiao-m0_赵笑1 小时前
一体化液位水温传感器的应用环境介绍 液位传感器
网络·物联网
z10_141 小时前
什么是住宅IP,住宅IP应用场景有哪些
linux·服务器·tcp/ip
Wang's Blog5 小时前
Linux小课堂: 网络配置详解之DHCP动态分配与静态IP地址设置
linux·网络·tcp/ip
fat house cat_9 小时前
【netty】基于主从Reactor多线程模型|如何解决粘包拆包问题|零拷贝
java·服务器·网络·netty
天***88969 小时前
HTTP 协议的常用方法有哪些?(GET、POST、PUT、DELETE、PATCH)各自的作用和区别是什么?
网络·网络协议·http
xixixi7777711 小时前
信息安全和网络安全的区分在哪
网络·安全·web安全·信息安全
上海云盾第一敬业销售12 小时前
游戏盾和高防IP的差异与选择
网络·tcp/ip·游戏