TCP协议学习(二)
in Network with 2 comments
Read: 1,477

TCP协议学习(二)

in Network with 2 comments

TCP状态转移详解

分析讲解

储备知识:

图例分析

图:描述了所有可能的TCP状态以及状态转换
粗虚线:服务端状态转移 粗实线:客户端状态转移

ESTABLISHED为界限,上部分为建立连接的过程,下部分为断开连接的过程

服务端状态转移

首先,我们通过图可以看到服务器首先进入LISTEN状态,这个状态为被动打开状态,当我们的客户端发送SYN的时候,那么我们的服务器将此次连接放入内核缓冲池中,并且返回SYN+ACK,如果我们客户端成功返回ACK后,那么此次连接建立成功,并且进入ESTABLISHED状态

当我们的客户端断开连接的时候,客户端会执行close或者shutdown,
服务器通过收到客户端发来的关闭连接报文段后,服务端通过收到客户端发来的关闭连接报文段后,通过返回确认报文段使连接进入close wait状态,即:等到服务器应用程序关闭连接,当服务器关闭程序后,服务端会向客户端继续发送关闭连接报文段,客户端收到这个报文段后,返回确认报文段,即此次连接完全关闭

客户端状态转移

客户端通过Connect系统调用主动与服务端建立连接,Connect系统调用首先会向服务器发送同步报文段,使连接进入SYN_SEND状态,当客户端发送SYN报文段的时候,服务端返回SYN+ACK,然后客户端发送ACK报文段,那么说此次连接建立成功

当客户端关闭连接的时候,客户端首先发送一个FIN报文段,随后进入FIN_WAIT_1状态,如果现在客户端收到服务端的ACK报文段时候,则连接进行FIN_WAIT_2状态,如果客户端收到了服务端的FIN报文段,那么此时客户端回应ACK报文段,那么此时,此次连接进入了TIME_WAIT状态

如果客户段在FIN_WAIT_1的时候先收到了FIN报文段,随后收到了ACK报文段,,那么就直接从FIN_WAIT_1直接进入了TIME_WAIT状态

Responses
  1. 你这博客速度也太快了吧

    Reply
    1. @Devoted

      ?,平时学习积累吧

      Reply