图解TCP协议中的三次握手和四次挥手

本文通过对话形式生动地解释了TCP/IP协议中三次握手和四次挥手的过程及原因,帮助读者理解建立连接与断开连接背后的机制。

比起枯燥的文字说明,笔者更喜欢用图和讲故事的方式来表达对于TCP/IP的理解。

三次握手

  • 金:“喂,老特,你听得到吗?”
  • 特:“小金子,我听得到你呀,你听得到我吗?”
  • 金: “我能听到你说话,周末我们去新加坡溜达溜达,度个蜜月吧”

两次握手:

  • 金:“喂,老特,你听得到吗?”
  • 特:“小金子,我听得到呀”
  • 金:“老特,喂喂,你听得到吗?”
  • 特:“靠,小金子,我听得到呀!!!!”
  • 金:“你能不能听到我讲话啊!!喂!”

四次握手:

  • 金:“喂,老特,你听得到吗?”
  • 特:“小金子,我听得到呀,你听得到我吗?”
  • 特:“小金子,我能听到你,你能听到我吗?”
  • 金:“老特,你老糊涂了吧,……不想说话了”

三次握手图解

四次挥手图解

注:图片来源于网络

面试时可能会问到:

  • Q:三次握手的目的是什么?
  • W: 通过三次与目标设备的通信来确定数据包发送成功。以浏览器和服务器的通信来打比方:
浏览器:你好服务器,我是 浏览器A。
服务器:你好 浏览器A,我是 服务器B。
浏览器:服务器B 你好。
复制代码
  • Q: 为什么要进行四次挥手?
  • W: 当数据包发送完毕需要断开连接的时候,就需要TCP的四次挥手来保证链接的合理断开:
主动结束方:你好,我的数据发送完毕了,我要进入准备断开的状态了。(此时它虽然不再发送数据了,但是可以接受数据)
另一方:我知道了,我还没有发送完毕的,你等着吧。
另一方:我也发送完毕了,可以断开链接了。(此时它也进入准备断开的状态)
主动结束方:好的,那断开吧。
复制代码
  • Q: TCP为什么建立链接是三次,关闭链接是四次呢?
1.服务端的listen状态下的socket当收到SYN报文的建连请求后,它可以把ACK和SYN(ACK起应答作用,而SYN起同步作用)放在一个报文里来发送
2.关闭连接时,当收到对方的FIN报文通知时,它仅仅表示对方没有数据发送给你了;但未必你所有的数据都全部发送给对方了
3.你可以未必会马上会关闭SOCKET,也即你可能还需要发送一些数据给对方之后,再发送FIN报文给对方来表示你同意现在可以关闭连接了
4.它这里的ACK报文和FIN报文多数情况下都是分开发送的
复制代码

转载于:https://juejin.im/post/5b1cfbcbf265da6e5635c16e

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值