TCP三次握手,客户端如何知道服务器是否已经进入建立连接状态可以发送数据。

来源:11-3 TCP协议详解

Nomo_Air

2020-07-26

图片描述

我知道在第三次握手的时候,服务器没有收到客户端的ACK,会尝试重传。但我有一些疑惑,在网上没有找到,遂找老师请教。

1.第一种情况,三次握手正常,客户端再发送了第三次请求之后,进入了建立连接状态,但客户端如何知道,现在服务器已经是建立连接状态,他可以向服务器发送数据了?

2.第二种情况,第三次握手,因为网络原因,丢失了,服务器没有收到,此时客户端进入了连接状态,在服务器还没有超时重传的这段时间,客户端在有2种选择,第一种啥也不干,第二种直接开始发数据。如果是啥也不干,那又回到了第一个问题,他怎么知道服务器是否是已经进入连接状态。第二种,直接发数据,我认为服务器会认为连接还没有建立,直接reset,关闭连接。

在网上寻求答案未果,我认为是这样的,第三次握手,客户端直接带着数据过来,服务器在第三次既是收到ack但也包含了客户端带来的数据。

请问老师我的理解是否正确。

写回答

1回答

咚咚呛

2020-07-26

问题很描述清晰详细,点赞。

先说第三次握手,其实在第三次握手的时候,客户端已经收到来自服务端的第二次握手报文了,此时对于客户端而言已经是建立连接的状态了,所以第三次握手的报文,是可以发送数据的,你的理解是正确的。这也就解决了你列举的两种情况。

总的来说你的思考逻辑是非常清晰的,挺不错的,相信你已经掌握了TCP三次握手了。


0
0

(新版)计算机基础,计算机组成原理+操作系统+网络

编程之前先学这门课,系统补足计算机基础知识,夯实编程地基

7739 学习 · 1580 问题

查看课程