VIVO Java开发面试题及参考答案

TCP 能不能两次握手?

TCP 不能两次握手。

在 TCP 连接建立过程中,三次握手是必不可少的。第一次握手是客户端向服务器发送一个带有 SYN(同步序列号)标志的 TCP 报文段,这个报文段包含了客户端初始的序列号。这一步的主要目的是告诉服务器,客户端想要建立连接,并且让服务器知道客户端的初始序列号,用于后续数据传输的排序和确认等操作。

如果只有两次握手,当服务器收到客户端的 SYN 报文后,回复一个 SYN - ACK(同步 - 确认)报文,假设这个时候就认为连接建立成功了。会存在一个问题,因为服务器无法确认客户端是否收到了自己的 SYN - ACK 报文。如果客户端没有收到这个报文,而服务器却认为连接已经建立,那么服务器就会一直等待客户端发送数据,造成服务器资源的浪费。而且,这种情况下如果有恶意攻击者向服务器发送大量的 SYN 报文,然后不回复服务器的 SYN - ACK 报文,就会导致服务器产生大量的半连接,引发服务器的性能问题,这就是所谓的 SYN 洪水攻击。所以,两次握手是不能保证 TCP 连接可靠建立的,必须要通过三次握手来确保双方都明确知道连接已经成功建立。

TCP 三次握手,为什么要第三次?四次行不行?

TCP 需要第三次握手主要是为了确保双方都能确认对方已经具备收发数据的能力。

在第一次握手时,客户端发送 SYN 报文,此时服务器只知道客户端有建立连接的意图。第二次握手,服务器回复 SYN - ACK 报文,这时客户端知道服务器已经收到自己的连接请求并且

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

大模型大数据攻城狮

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

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

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

打赏作者

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

抵扣说明:

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

余额充值