TCP连接三次握手的过程,为什么是三次,可以是两次或者更多吗?
5 分钟阅读
•
745 字
+
558 词
- 首先假设客户端进行连接, 发送一个SYN报文到服务端 ,请求建立连接, 客户端进入SYN_SENT状态 。
- 服务端收到SYN报文后呢,会 从LISTEN状态转变为SYN_RCVD状态 。并会 发送一个ACK-SYN报文作为回应 ,此时这个连接是一个 半连接状态,服务端会将它存到半连接队列中。
- 客户端收到这个报文后,会 返回一个ACK报文作为回应 ,然后客户端进入了ESTABLISHED状态,而服务端收到ACK后也会进入ESTABLISHED状态,并且之后就可以 利用accept方法将全连接队列中的连接拿出并生成对应的连接fd了 。
参考答案:
-
第一次握手
:客户端向服务器发送一个
SYN(同步序列编号)报文,请求建立连接,客户端进入SYN_SENT状态。 -
第二次握手
:服务器收到
SYN报文后,如果同意建立连接,则会发送一个SYN-ACK(同步确认)报文作为响应,同时进入SYN_RCVD状态。 -
第三次握手
:客户端收到服务器的
SYN-ACK报文后,会发送一个ACK(确认)报文作为最终响应,之后客户端和服务器都进入ESTABLISHED状态,连接建立成功。