用谈恋爱来理解TCP的三次握手和四次挥手

一、TCP/IP的连接

      当socket建立了TCP/IP连接之后,服务器会一直监听客户端的连接请求,连接成功之后就会是比较可靠的连接。之所以说TCP连接可靠,那是因为连接和断开都需要比较复杂的流程。
      就好比如一对恋人。他们成为男女朋友之前,肯定会有一方不断地最求另一方,或者两人共同度过了一些难忘地时光,彼此相互有了依赖。然后其中一方说"做我的女(男)朋友吧"(这就是TCP连接的第一次握手),然后另一方答应了(就有了第二次握手),低三次握手自然是正式成为男女朋友。

二、三次握手

      TCP的三次握手是为了确认连接,保证服务器和客户端能够正常的通信。“三次握手”是由客户端主动打开的,服务器被动打开。这个不难理解,我们在学习socket编程的时候,在对服务器进行编程的时候,有个监听连接的代码:listen,之后还有一个API :accpet 响应客户端的连接:
在这里插入图片描述
      每次握手都携带了一个报文:SYN 数据包。每次发送数据都要确认数据的完整性,就像是定情信物(第一次握手)。图中的ack 为应答信号,接收到SYN之后,把SYN给你然后附带自己的信物(第二次握手),证明我收到了你的定情信物SYN。第三次收到是我本人给你的SYN之后,确认可以交往(第三次握手),完成连接。

三、四次挥手

      分久必合,合久必分,既然有握手就有分手,啊不…挥手。TCP的四次挥手是确认断开通信,其过程就是其中一端发起断开连接请求,另外一方回应断开请求。
      即男女朋友间突然有一天有一个人觉得双方不合适,提出分手(就是TCP的第一次挥手);另外一方说好,可以分手(产生第二次挥手);分手可以,等我下班,下班之后还给你定情信物(FIN)(这是第三次挥手);接收到换回来的信物(FIN)确认分手,(第四次挥手)。
在这里插入图片描述
      第二次挥手的时候,发送的只有应答信号,因为接收方可能还在处理进程内的任务,等待任务完成后,才发送报文及应答这是第三次挥手。

五、为什么握手只要三次而挥手要四次

      因为在那个女孩提分手的时候,我还在加班(接收端还在处理必要的程序),我只能告诉她,“好的我知道了”(接收端只能通过ACK告诉发送端,已收到断开请求),只有等加班完了之后才给把当年的定情信物还给她(接收端处理完程序之后,再发送 FIN+(ACK+1) 表示第三次挥手)。

师承:抖音 上官可编程 ->陈立臣

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值