美文网首页
http的三握手,和四次挥手

http的三握手,和四次挥手

作者: flyjar | 来源:发表于2020-08-19 09:33 被阅读0次

    三次握手

    第一次握手
    第一次握手,客户端向服务端发送报文 SYN=1,Seq=16位的随机数。告诉服务端,我要连接了。SYN=1,是向服务端确认,服务端是否能接受到请求。

    第二次握手
    第二次握手,服务端接收到请求,向客户端发送报文,。SYN=1,Seq=16位的随机数,ACK=1,ack=Seq+1。
    SYN=1是向客户端确认,客户端是否能接受到请求。ACK=1是表示,接受到了客户端的SYN=1了,已确认接收到了请求。ack=Seq+1,告诉客户端,下次你再发送过的请求要从Seq+1开始。
    两次握手之后,客户端已确认自己这边是没有问题的。可以连接服务端。但是,服务端没有办法确认服务端是可以连接上客户端的,自己返回给客户端的请求,客户端是否接收到。所以有了第三次握手

    第三次握手
    客户端再次发起请求,向服务端发送报文,ACK=1,Seq=服务端第二次握手返回的Seq+1
    。ACK=1是告诉服务端,我已经收到了你请求。
    这样通过最少的三次握手。双方就都可以知道对方是可以连接上的

    四次挥手

    第一次挥手
    当客户端准备断开连接时,向服务端发送请求,FIN=1,Seq=客户端第一次生成的Seq自动增长上来的。告诉服务端我要断开连接了

    第二次挥手
    服务端接收到客户端的请求,向客户端发送请求,ACK=1,ack=服务端第一次生成的Seq自动增长上来的。ACK=1是告诉客户端,我收到你的请求,知道你要断开连接了。

    第三次挥手
    客户端发送断开的请求时,肯定已经做好了断开的准备,不再发送其他数据了。但是服务端虽然接收到了客户端要断开的申请,但是自己可能还有没有处理完的数据,需要继续向客户端发送。所以服务端,等自己处理完所有返回数据之后,会发起第三次挥手请求,FIn=1,Seq=随机数。告诉客户端,我准备向你断开连接。

    第四次挥手
    客户端收到了服务端的断开连接的申请,向服务端发送确认请求,ACK=1,Seq=随机数。告诉服务端,我已收到你的请求。至此断开了连接。

    相关文章

      网友评论

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

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