TCP协议端口状态

了解TCP协议端口的连接状态,对排除和定位网络或系统故障会有很大帮助。

一 LISTENING

侦听远方TCP端口的连接请求,当提供的服务没有被连接时,处于LISTENING状态,端口等待被连接。

二 SYN_SENT(客户端状态)

客户端调用connect,发送一个SYN请求建立一个连接,在发送连接请求后等待匹配的连接请求,此时状态为SYN_SENT

二 SYN_RECEIVED(服务端状态)

在收到和发送一个连接请求后,等待对方连接。

三 ESTABLISHED

表示两台机器正在传输数据

TCP“三次握手”

TCP协议端口状态及TCP“三次握手”

握手之前,主动打开的客户端结束CLOSE阶段,被动打开的服务器也结束CLOSED阶段,并进入LISTEN阶段

首先client向server发送一段TCP报文 ======第一次握手

  • 标记位为SYN,表示“请求建立新连接”
  • 序号为Seq=X(X一般为1)
  • 随后客户端进入SYN-SENT阶段

TCP协议端口状态及TCP“三次握手”

其次,收到来自报文的server,结束LISTEN阶段 。并且返回一段报文 ======第二次握手

  • 标志位为SYN和ACK,表示“确定客户端的Seq序号有效,服务器能正常接收到client发送的数据,并且SYN=1,同一创建新连接”
  • 序号Seq=y
  • 确认号为Ack=x+1,表示收到了client的Seq并且将其值加1作为自己确认号Ack的值,随后服务器进入SYN-RCVD阶段。(此阶段表明能正常接收数据,RCVD)

TCP协议端口状态及TCP“三次握手”
client收到报文后,明确了从client到server的数据传输是正常的,即client确定了自己可发可收。因此结束SYB-SENT阶段,并返回最后一段TCP报文。其中: ======第三次握手

  • 标志位为ACK,表示“确认收到server同意连接的信号”
  • 序号Seq为x+1,表示也知道你确认了,并将其作为自己的序号值
  • 确认号Ack=y+1,表示收到了server的序号,并将值加1
  • 随后客户端进入ESTABLISHED阶段

TCP协议端口状态及TCP“三次握手”

随后,server收到来自client的“确认收到服务器数据”的TCP报文后,明确了从server到client的数据传输是正常的,即自己可发可收。因此,结束SYN-RCVD,并也进入ESTABLISHED阶段

总而言之,三次握手,就是使客户端和服务端明确自己可发可收。

相关文章: