经典面试题 为什么TCP连接需要三次握手,两次不可以吗?四次呢?

经典面试题 为什么TCP连接需要三次握手,两次不可以吗?四次呢?

TCP连接 三次握手


一、为什么需要三次握手?

主要是为了防止已失效的连接请求报文段在某些特殊请款下传送到了服务端,占用服务器资源,却一直不进行有益操作。

二、三次握手的具体逻辑

1.假设逻辑

假设主机A为客户端,主机B为服务器端

现假定出现一种异常情况,即A发出的一个已失效的报文段,但是B无法知道是否该连接请求报文段已失效,可能是网络异常或者服务器宕机等等各种问题,B就是没收到。
可以B现在收到了这个失效的连接请求报文段后,却无法判断这个是否是失效请求,就误认为是A再次发出一次新的连接请求。于是就直接向A发出确认报文段,表示同意建立连接。
此时若不采用三次握手进行二次确认,连接在B发出确认时已经建立,那么此时这个连接便是无效连接,没有任何客户端依靠此连接进行通信,偷偷占用服务器资源。

我们假设A和B是通信的双方。假设握手实际上是朋友之间进行短信聊天,发一次信息就是进行一次握手。

  1. 第一次握手: A给B发短信说:“B,你现在有空吗?”
  2. 第二次握手: B此时收到了A的信息,然后对A说: “ 我有空,你呢?有空吗? ”
  3. 第三次握手: A此时收到了B的确认信息,然后说:“我也有空,那我跟你说个事。”

在三次握手之后,A和B都能确定这么一件事: 双方的通信可以流畅的进行。 这样,双方就可以开始进行正常的对话了。

三次握手的作用

采用三次握手的办法可以防止上述现象的发生。例如在刚才的情况下,A不会向B的确认发出确认。B由于收不到确认,就知道A并没有要求建立连接。

2.两次不可以吗?四次呢?

两次:

例如在刚才的情况下,A不会向B的确认发出确认。B由于收不到确认,就知道A并没有要求建立连接。

四次:

如果四次,那么就造成了浪费,因为在三次结束之后,就已经可以保证A可以给B发信息,A可以收到B的信息; B可以给A发信息,B可以收到A的信息。


总结

TCP连接的连接问题,是最突出且适用范围最广的面试题目,无论你的未来期望做什么,这都是你必知必会的常识。

希望这个博客能对你有所益处。我是轻王,我为自己代言。
TCP和UDP是两种常用的传输层协议,它们在嵌入式系统中也有一些区别。 首先,TCP是面向连接的协议,而UDP是无连接的协议。TCP通过三次握手建立连接,并通过四次挥手断开连接,而UDP在发送数据之前需要建立连接。 其TCP是可靠的通信方式,通过超时重传、数据校验等方式来确保数据的可靠性,丢失、重复、按序到达。而UDP由于无需连接的原因,传输速度较快,但保证可靠交付,可能会出现丢失、重复等问题。 此外,TCP是面向字节流的,将数据看作一连串无结构的字节流,而UDP是面向报文的,每个数据包都是一个完整的报文。 另外,每一条TCP连接只能是点到点的,而UDP建立连接,可以支持一对一、一对多、多对一和多对多的交互通信。 此外,TCP需要建立连接,首部开销较大,而UDP的首部较小。 最后,TCP是全双工的可靠信道,而UDP是可靠信道。 综上所述,TCP和UDP在嵌入式系统中的区别主要体现在连接方式、可靠性、数据处理方式和通信模式等方面。 #### 引用[.reference_title] - *1* *2* *3* [【嵌入式面试2022年嵌入式经典面试题汇总(网络编程)](https://blog.youkuaiyun.com/qq_44330858/article/details/129077287)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猫轻王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值