详解TCP的三次握手和四次挥手

菜鸡每日一面系列打卡35

每天一道面试题目

助力小伙伴轻松拿offer

坚持就是胜利,我们一起努力!

 

题目描述

谈谈你对TCP三次握手和四次挥手的理解。

 

题目分析

关于TCP的三次握手和四次挥手,已经被面试官问烂了。然而,并不是所有人都能很好地回答这个问题,尤其是一些细节上的点,很容易被忽略。

不用担心,接下来,菜鸡将对该问题做一个全面的总结!

 

题目解答

三次握手

开局一张图:

这张图展示了建立TCP连接所需的三次握手过程。

首先需要明确,三次握手的目的是建立可靠的通信信道,即双方确认彼此的信息发送与接收是正常的。

其次需要明确,客户端与服务器的身份并不是固定的,在某些情况下的客户端,在另外的情况下可能会承担服务器的角色。

下面我们依次来看三次握手的过程和目的。

第一次握手:客户端向服务端发送SYN。此时客户端什么都不能确认;服务端确认对方发送正常,自己接收正常。

第二次握手:服务端向客户端发送SYN/ACK。此时客户端确认自己发送、接收正常,对方发送、接收正常;服务端确认对方发送正常,自己接收正常。

第三次握手:客户端向服务端发送ACK。此时客户端确认自己发送、接收正常,对方发送、接收正常;服务端确认自己发送、接收正常,对方发送、接收正常。

综上所述,当且仅当三次握手之后,双方都能够确认收发功能正常。

四次挥手

依然开局一张图:

这张图展示了断开TCP连接所需的四次挥手过程。

下面我们依次来看四次挥手的过程和目的。

第一次挥手:客户端向服务端发送FIN。用来关闭客户端到服务器的数据传送。

第二次挥手:服务器向客户端发送ACK。表示服务端收到了客户端的连接释放通知。

第三次挥手:服务器向客户端发送FIN。用来关闭与客户端的数据传送。

第四次挥手:客户端向服务端发送ACK。表示客户端收到了服务端的连接释放通知。

同样,这里所说的客户端和服务器并不是一个固定的概念。事实上,建立TCP连接的任何一方都可以在数据传送结束后发出连接释放通知,待对方确认后进入半关闭状态。当另一方也没有数据再发送的时候,则发出连接释放通知,对方确认后就完全关闭了TCP连接。

另外,值得注意的是,在第四次挥手之后,客户端并非立马进入关闭状态,而是会进入TIME-WAIT状态,在等待2MSL时间后,才会进入关闭状态。这样做的原因主要有以下两点:

第一,防止客户端发送的最后一个ACK报文丢失而引起服务端不能正常关闭。

第二,防止已经失效的连接请求报文段对新连接造成影响。

以上便是菜鸡对TCP三次握手和四次挥手的一些总结,供大家参考。

学习 | 工作 | 分享

长按关注“有理想的菜鸡

只有你想不到,没有你学不到

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值