面试小知识(2)为什么TCP需要三次握手和四次挥手

本文详细解释了TCP协议中为什么需要三次握手来建立连接和四次挥手来断开连接,通过三次握手避免了已失效的连接请求报文段导致的错误,四次挥手确保了全双工通信中双方都能关闭连接。同时探讨了TIME-WAIT阶段2MSL等待的意义,以及为什么不能将挥手次数减少为三次。
摘要由CSDN通过智能技术生成

首先我们先了解一下计算机网络的三大模型
在这里插入图片描述
经典的OSI七层模型:

物理层、数据链路层、网络层、传输层、会话层、表示层、应用层

简化的理论五层模型:

物理层、数据链路层、网络层、传输层、应用层(对应于七层模型的会话层、表示层、应用层)

实际应用中的TCP/IP体系四层模型:

网络访问层(五层模型的物理层和数据链路层的统一)、网络互连层、传输层、应用层

TCP协议位于三大模型中的传输层

传输层主要协议为UDP和TCP,其中 TCP 协议与 UDP 最大的不同就是 TCP 提供可靠的传输,而 UDP 提供的是不可靠传输。

为了提供可靠的传输,就引出了今天的第一个问题。

TCP的三次握手

首先我们来看一下两军问题:

假设一支蓝军指挥官向另外一支蓝军发出消息:“我建议在明天佛晓发起进攻,请确认。”如果消息到达了另一支蓝军,其指挥官同意这一建议,并且他的回信也安全的送到,那么能否进攻呢?
不能。这是一个两步握手协议,因为该指挥官无法知道他的回信是否安全送到了,所以,他不能发起进攻,改进协议,将两步握手协议改为三步握手协议,这样,最初提出建议的指挥官必须确认对该建议的应答信息。假如信息没有丢失,并收到确认消息,则他必须将收到的确认信息告诉对方,从而完成三步握手协议。
然而,这样他就无法知道消息是否被对方收到,因此,他不能发起进攻。那么现在采用四步握手协议会如何呢?结果仍是于事无补。

那为什么三次握手就可以建立起一个真正的可靠连接,而不是两次握手,或者四次握手呢?

这个问题的本质是, 信道不可靠, 但是通信双发需要就某个问题达成一致,而为了达到一致,双方需要经过多少次应答。

其实,正如两军问题说描述,无论多少次握手,都会有连接不上的不确定性。而三次握手,保证了信道的基本可靠性,是理论上的最小值

在谢希仁著的《计算机网络》中提及的三次握手的目的是

“为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误”

谢希仁版《计算机网络》中的例子是这样的:

“已失效的连接请求报文段”的产生在这样一种情况下:client发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达server。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值