生动理解TCP的三次握手和四次挥手

三次握手(建立连接)

场景设定:

想象你(客户端)想要去你朋友(服务器)家借一本书。为了礼貌和确保朋友在家,你会先敲门并等待回应,这个过程就像TCP的三次握手。

三次握手过程:
  1. 第一次握手:你走到朋友家门口,轻轻地敲了敲门。这个动作相当于TCP客户端发送一个带有SYN(同步)标志的数据包给服务器,表示你想要建立连接。

    • 你说(在心里或实际上):“嘿,朋友(服务器),我是(你的名字),想借本书,你在家吗?(SYN)”
  2. 第二次握手:你朋友听到敲门声后,走到门口并打开一小条缝,确认是你,并回应说:“进来吧,门没锁。” 这个回应相当于TCP服务器发送一个带有SYN和ACK(确认)标志的数据包给客户端,确认收到了客户端的请求,并同意建立连接。

    • 朋友说:“哦,(你的名字),进来吧,我正好有空。(SYN, ACK)”

    注意:在这个例子中,为了简化,我们没有明确提及序列号(seq)和确认号(ack),但在实际的TCP三次握手中,这些是非常重要的。

  3. 第三次握手:你听到朋友的回应后,推开门并说:“谢谢,打扰了。” 这个动作相当于TCP客户端发送一个ACK数据包给服务器,确认收到了服务器的同意,并准备开始借书的过程。

    • 你说:“谢谢,我这就进来。(ACK)”

至此,三次握手完成,你和你朋友之间的“连接”已经建立,你可以开始借书了。

四次挥手(断开连接)

场景继续:

你借完书后,准备离开朋友家,但你们都需要确保对方已经准备好结束这次“连接”。

四次挥手过程:
  1. 第一次挥手:你告诉朋友你借完书了,准备离开。这相当于TCP客户端发送一个FIN(结束)数据包给服务器,表示客户端没有更多的数据要发送了,想要关闭连接。
    • 你说:“朋友(服务器),我借完书了,准备走了。”(FIN)
  2. 第二次挥手:你朋友听到你说要离开,回应你说:“好的,我知道了,你慢走。” 这个回应相当于TCP服务器发送一个ACK数据包给客户端,确认收到了客户端的FIN,但服务器可能还有自己的事情要做,所以还没有准备好关闭连接。
    • 朋友说:“好的,(你的名字),我知道了,你慢走。(ACK)”
  3. (一段时间后)第三次挥手:你朋友也完成了自己的事情,走到门口对你说:“我也准备好了,可以关门了。” 这个动作相当于TCP服务器发送一个FIN数据包给客户端,表示服务器也没有更多的数据要发送了,也想要关闭连接。
    • 朋友说:“(你的名字),我也好了,可以关门了。(FIN)”
  4. 第四次挥手:你听到朋友的话后,回应说:“好的,这就关。” 然后你关上了门。这个动作相当于TCP客户端发送一个ACK数据包给服务器,确认收到了服务器的FIN,双方都同意关闭连接。
    • 你说:“好的,关门吧。(ACK)”

通过这个过程,你和你朋友都确保了双方都已经准备好结束这次“连接”,并且都同意了关闭。这就像是TCP的四次挥手过程。

三次握手:

四次挥手:

  • 8
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值