请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

TCP三次握手中的问题

图片描述

1、第一次发送数据时,最后一次握手为什么还要发送seq,我个人理解,seq在最后一次握手是没有必要的,因为接受方只需要验证传过来的ack就行了,seq没有用啊!
2、感觉三次握手也存在悖论问题。如果最后一次握手中,报文丢失,那么接受方就一直等着?另外,即使最后一次握手的报文没有丢,那么发送方又是如何知道接收方接收到了呢?那么发送方如何确定什么时候该发送数据报呢?
个人感觉这跟著名的《红蓝军对抗问题》很像,你始终没有办法确定对方接受到了啊

正在回答

1回答

咚咚呛 2019-09-15 21:51:18
  1. 最后一次握手已经具备通信性质了,也即是可以进行数据的传输了,这里的seq不只是为了握手而使用的。

  2. 这个疑问挺好的,思考的挺深入。两种情况,设想第三次握手丢失了,由于发送方才是主动请求的一方,一般是客户端,那么客户端在第三次丢失的时候,一段时间没有收到服务端的确认,则会重传,再退一步,假设客户端没有重传,那么服务端打开的这个连接也会在一段时间关闭,因为连接上没有数据传输。

  3. 再假设报文没有丢失,如果没有丢失,那么服务端肯定会发送一个确认号并携带信息,发送方也即是客户端依据可靠传输,一定会受到确认。

  4. 最后,再退一步提问,那么为什么还需要第三次握手呢?这个课程上有介绍,同学可以回顾一下。

0 回复 有任何疑惑可以回复我~
  • 提问者 慕哥2296688 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2019-09-16 16:00:42
  • 老师,从您的第2条和第3条的回答来看,也就是说:客户端的第三次握手,服务端也会有响应的,是吗?
    回复 有任何疑惑可以回复我~ 2020-02-22 14:23:45
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信