美文网首页网络知识
TCP的三次握手和四次挥手

TCP的三次握手和四次挥手

作者: lijincheng | 来源:发表于2017-06-26 08:24 被阅读50次

    TCP(Transmission Control Protocol) 传输控制协议

    TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:

    TCP的6种标志位:URG、ACK、PSH、RST、SYN、FIN
    URG:表示紧急
    ACK:表示响应
    PSH:表示有数据
    RST:表示重置
    SYN:表示建立连接
    FIN:表示关闭连接

    TCP的三次挥手过程

    三次握手过程

    第一次握手:建立连接(默认客户端的端口是CLOSED状态,建立连接的时候主动打开打开),客户端发送SYN(SYN=1,seq=x)包到服务器,并进入SYN_SENT状态,等待服务器确认。

    第二次握手:服务器收到SYN包(默认服务器的端口是CLOSED状态,它会不定时地被动打开端口,来等待客户端的请求,此时端口为LISTEN状态),必须确认客户的SYN(SYN=1,ACK=1,seq=y,ack=x+1),此时服务器进入SYN_RECV状态。

    第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认ack=y+1包,此包发送完毕,客户端和服务器都进入ESTAB_LISHEN状态。

    完成三次握手之后,客户端和服务端可以进行通信。

    TCP的四次挥手过程

    四次挥手过程

    第一次挥手:客户端给服务器发送TCP包,用来关闭客户端到服务器的数据传送。将标志位FIN和ACK置为1,序号为seq=u,确认序号为ack=1。

    第二次挥手:服务器收到FIN后,发回一个ACK(标志位ACK=1),确认序号为收到的序号seq=v。序号为收到的确认序号ack=u+1。

    第三次挥手:服务器关闭与客户端的连接,发送一个FIN。标志位FIN和ACK置为1,序号为seq=w,确认序号为ack=u+1。

    第四次挥手:客户端收到服务器发送的FIN之后,发回ACK确认(标志位ACK=1),确认序号为收到的序号seq=u+1,序号为收到的确认序号ack=w+1。

    TCP 协议中的三次握手和四次挥手的整个过程

    整个过程

    客户机端的三次握手和四次挥手

    服务器端的三次握手和四次挥手

    有限状态机FSM:Finite State Machine 说明

    ** CLOSED ** 没有任何连接状态
    ** LISTEN** 侦听状态,等待来自远方TCP 端口的连接请求
    ** SYN-SENT ** 在发送连接请求后,等待对方确认
    ** SYN-RECEIVED ** 在收到和发送一个连接请求后,等待对方确认
    ESTABLISHED 代表传输连接建立,双方进入数据传送状态
    ** FIN-WAIT-1** 主动关闭, 主机已发送关闭连接请求,等待对方确认
    ** FIN-WAIT-2 ** 主动关闭, 主机已收到对方关闭传输连接确认,等待
    对方发送关闭传输连接请求
    ** TIME-WAIT ** 完成双向传输连接关闭,等待所有分组消失
    ** CLOSE-WAIT** 被动关闭, 收到对方发来的关闭连接请求,并已确认
    ** LAST-ACK 被动关闭, 等待最后一个关闭传输连接确认,并等待所
    有分组消失
    ** CLOSING
    双方同时尝试关闭传输连接,等待对方确认

    相关文章

      网友评论

        本文标题:TCP的三次握手和四次挥手

        本文链接:https://www.haomeiwen.com/subject/bczlcxtx.html