TCP/IP三次握手、四次挥手

1. TCP 6种标识位
    1.1 SYN(synchronous)建立连接,只在刚开始的三次握手才会出现这个标识
    1.2 ACK(acknowledgment)确认
    1.3 PSH(push)传送
    1.4 FIN(finish)结束,只在关闭socket通讯时才会出现这个标识
    1.5 RST(reset)重置
    1.6 URG(urgent)紧急

tcp报文头


    
2. TCP/IP协议三次握手(Sequence number【顺序号码】、 Acknowledge number【确认号码】)


    2.1 第一次握手:主机A发送位码为syn=1,随机产生seq number=1234567的数据包到服务器,主机B由SYN=1知道,A要求建立联机;
    
    2.2 第二次握手:主机B收到请求后要确认联机信息,向A发送ack number=(主机A的seq+1),syn=1,ack=1,随机产生seq=7654321的包
    
    2.3 第三次握手:主机A收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码ack是否为1,若正确,主机A会再发送ack number=(主机B的seq+1),ack=1,主机B收到后确认seq值与ack=1则连接建立成功。
    完成三次握手,主机A与主机B开始传送数据。
    
3. TCP/IP协议四次挥手
    TCP连接是双向的,因此在四次挥手中,前两次挥手用于断开一个方向的连接,后两次挥手用于断开另一方向的连接 。   
    


    3.1 第一次挥手: 若A认为数据发送完成,则它需要向B发送连接释放请求。该请求只有报文头,头中携带的主要参数为: FIN=1,seq=u。此时,A将进入FIN-WAIT-1状态。
        PS1:FIN=1表示该报文段是一个连接释放请求。
        PS2:seq=u,u-1是A向B发送的最后一个字节的序号。
    
    3.2 第二次挥手:   B收到连接释放请求后,会通知相应的应用程序,告诉它A向B这个方向的连接已经释放。此时B进入CLOSE-WAIT状态,并向A发送连接释放的应答,其报文头包含: ACK=1,seq=v,ack=u+1。PS1:ACK=1:除TCP连接请求报文段以外,TCP通信过程中所有数据报的ACK都为1,表示应答。
        PS2:seq=v,v-1是B向A发送的最后一个字节的序号。
        PS3:ack=u+1表示希望收到从第u+1个字节开始的报文段,并且已经成功接收了前u个字节。A收到该应答,进入FIN-WAIT-2状态,等待B发送连接释放请求。第二次挥手完成后,A到B方向的连接已经释放,B不会再接收数据,A也不会再发送数据。但B到A方向的连接仍然存在,B可以继续向A发送数据。
    
    3.3 第三次挥手:   B向A发完所有数据后,向A发送连接释放请求,请求头:FIN=1,ACK=1,seq=w,ack=u+1。B便进入LAST-ACK状态。
    
    3.4 第四次挥手:  A收到释放请求后,向B发送确认应答,此时A进入TIME-WAIT状态。该状态会持续2MSL时间,若该时间段内没有B的重发请求的话,就进入CLOSED状态,撤销TCB。当B收到确认应答后,也便进入CLOSED状态,撤销TCB。
    
    为什么A要先进入TIME-WAIT状态,等待2MSL(关于2MSL详见:2MSL的意义)时间后才进入CLOSED状态? 为了保证B能收到A的确认应答。 若A发完确认应答后直接进入CLOSED状态,那么如果该应答丢失,B等待超时后就会重新发送连接释放请求,但此时A已经关闭了,不会作出任何响应,因此B永远无法正常关闭。

4.  四次挥手的状态流程
      4.1 主动关闭方的状态流程
            ESTATLISHED->FIN_WAIT1->FIN_WAIT2->TIME_WAIT(2MSL)->CLOSED
       4.2 被动关闭方的状态流程
            ESTATLISHED->CLOSE_WAIT->LAST_ACK->CLOSED

5.参考一位大神的文章

https://blog.csdn.net/qzcsu/article/details/72861891

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值