网络世界的“握手”与“告别”:揭秘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的三次握手和四次挥手很好理解,这些动作最终都是为了保证数据在传输过程中的安全性,它们通过精确的序列号和确认机制,确保了数据在传输过程中的稳定性和安全性。这种机制不仅保证了数据传输的可靠性,也为我们在网络世界中提供了更好的通信体验。

相关推荐
zzyh1234565 小时前
《tcp/ip协议详解》,tcp/ip协议详解
网络·网络协议·tcp/ip
忆源5 小时前
SOME/IP--协议英文原文讲解2
网络·网络协议·tcp/ip
doubt。5 小时前
3.[羊城杯2020]easyphp
网络·安全·web安全·网络安全·php·代码复审
我是唐青枫6 小时前
Linux ifstat 命令使用详解
linux·运维·网络
A.sir啊6 小时前
爬虫基础(三)Session和Cookie讲解
运维·服务器·前端·网络·网络爬虫
落——枫6 小时前
存储器知识点2
网络
逆风局?6 小时前
计算机网络的组成,功能
网络·计算机网络
m0_747124537 小时前
用QT做一个网络调试助手
网络·qt·php
007php0077 小时前
HTTPS域名443端口证书到期问题排查与解决
开发语言·网络·网络协议·计算机网络·http·golang·https
我的运维人生7 小时前
安全漏洞扫描与修复系统的高质量技术详解
网络·安全·web安全·运维开发·技术共享