TCP握手为什么是三次不是2次,4次


相关问题


## 为什么是3次
  • 发送方(sender,S),接收方(receiver,R)
  • 对于第一次握手,R可确认收到SYN报文和S的初始序号,而S却什么都不能确认
  • 对于第二次,S可确认自己发的SYN报文和R发的SYNACK报文正常以及S的初始序号
  • 对于第三次,R可确认C发的ACK报文正常和S已经知道R的初始序号,自此接收方和发送发都可知道对方已经知道自己初始序号,也就是双方的初始序号已经协定完毕
    在这里插入图片描述

背诵版


面试官:TCP 为什么是三次握手呢?两次握手不行吗
三次握手最主要的目的就是服务端和客户端双方都确认自己与对方的发送与接收是正常的。

第一次握手时,客户端发送 SYN 报文给服务器,然后服务器接收。这样,服务器可以确定:客户端的发送是正常的,我自己接收是正常的;而客户端在第一次握手时啥也确认不了;
第二次握手时,服务器响应这个 SYN 报文给客户端,然后客户端接收该报文。这样,客户端可以确定:我自己发送和接收都是正常的,服务器发送和接收也是正常的;
所以,第三次握手客户端发送 ACK 报文给服务器,其实就是服务器去确定自己发送正常,对方接收正常
这样,只有经过三次握手才能确认双方的收发功能都正常

详细版


三次握手的目的是建立可靠的通信信道,说到通讯,简单来说就是数据的发送与接收,而三次握手最主要的目的就是双方确认自己与对方的发送与接收是正常的
只有经过三次握手才能确认双方的收发功能都正常,缺一不可:

  • 第一次握手(客户端发送 SYN 报文给服务器,服务器接收该报文):客户端什么都不能确认;服务器确认了对方发送正常,自己接收正常
  • 第二次握手(服务器响应 SYN 报文给客户端,客户端接收该报文):
    客户端确认了:自己发送、接收正常,对方发送、接收正常;
    服务器确认了:对方发送正常,自己接收正常
  • 第三次握手(客户端发送 ACK 报文给服务器):
    客户端确认了:自己发送、接收正常,对方发送、接收正常;
    服务器确认了:自己发送、接收正常,对方发送、接收正常





为什么不能是2次

  • 如果只有两次,没有第三次,那接收方就没办法确认发送方是否已经收到自己SYNACK报文及初始序号
  • 也就相当于接受方不能确认双方的初始序号协定完成,初始序号是可靠的数据传输的重要依据,所以也就没办法提供可靠的数据传输
  • 而且接收方不能确认双向连接是否建立完成。如果发送方没有接收到SYNACK报文,则连接没建立,接收方给这条没有真正建立的连接分配了资源,也就相当于浪费了资源





为什么不是4次

  • 在第三次握手之后不论是发送方还是接收方都可以确认都可以双方的初始序号协定完毕
  • 且三次握手之后已经把前面需要确认的都确认了,而确认只能确认之前的通信情况,对后面的通信不起作用,所以如果四次还是五次或是更多次都是徒劳的




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值