运输层

189 阅读2分钟

TCP(Transmission Control Protocal)

TCP是基于Internet Protocal的协议,位于运输层,在TCP中通信双方实体是对等的。

自动状态机模型

在该模型中,共存在11个状态,任意时刻任意一方都处于这11个状态之中。这些状态中包括:

  • CLOSED状态:初始状态。处于该状态时:
    • 当当前实体需要主动通信时,打开并发送SYN到SYN SENT状态.
    • 当当前实体需要被动通信时,打开到LISTEN状态。
  • LISTEN状态:监听状态。处于该状态时:
    • 若想主动通信,发送SYN到SYN SENT状态。
    • 若被动收到了SYN,发送SYN ACK到SYN RCVD状态。
  • SYN SENT状态:已发送连接请求状态。处于该状态时:
    • 若应用进程关闭该请求,或该请求未收到响应(超时),进入CLOSED状态。
    • 若收到了SYN请求,说明同时打开,发送SYN及ACK到SYN RCVD状态。
    • 若收到了SYN ACK,发送ACK到ESTABLISHED状态。
  • SYN RCVD状态:已收到连接请求状态。处于该状态时:
    • 若收到了ACK,进入ESTABLISHED状态。
    • 若发送FIN,说明连接未建立即终止,进入FIN WAIT 1状态(主动关闭)。
    • 若收到了RST,重置并进入LISTEN状态。
  • ESTABLISHED状态:连接已建立状态。处于该状态时:
    • 若发送FIN,说明为主动关闭连接,进入FIN WAIT 1状态。
    • 若收到FIN,说明为被动关闭连接,发送ACK并进入CLOSE WAIT状态。
  • FIN WAIT 1状态:已发送关闭请求状态。处于该状态时:
    • 若收到ACK,说明关闭请求已被响应,进入FIN WAIT 2状态。
    • 若收到FIN,说明同时关闭,发送ACK并进入CLOSING状态。
    • 若收到FIN ACK,说明关闭请求被响应且请求关闭,发送ACK进入TIME WAIT状态。
  • FIN WAIT 2状态:已收到关闭响应状态,处于该状态时:
    • 若收到FIN,说明请求关闭,发送ACK并进入TIME WAIT状态。
  • CLOSING 状态:剩余我方请求未响应状态。处于该状态时:
    • 若收到ACK,说明关闭请求已被响应,进入TIME WAIT状态。
  • TIME WAIT状态:2MSL状态,处于该状态时:
    • 若超过2MSL未收到请求,说明ACK安全送达,自动进入CLOSED状态。
  • CLOSE WAIT状态:被动关闭状态。处于该状态时:
    • 若发送FIN,则说明我方请求仍未响应,进入LAST ACK状态。
  • LAST ACK状态:等待关闭响应状态。处于该状态时:
    • 若收到ACK,说明关闭请求已响应,进入CLOSED状态。 该自动机转化模型如下所示:

连接建立

三次握手协议