zoukankan      html  css  js  c++  java
  • TCP的三次握手四次挥手

    三次握手

    第一次握手:客户端将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给服务端,客户端进入SYN_SENT状态,等待服务端确认。
            (2)第二次握手:服务端收到数据包后由标志位SYN=1知道客户端请求建立连接,服务端将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给客户端以确认连接请求,服务端进入SYN_RCVD状态。
            (3)第三次握手:客户端收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给服务端,服务端检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,客户端和服务端进入ESTABLISHED状态,完成三次握手,随后客户端与服务端之间可以开始传输数据了。

    四次挥手

    三次握手耳熟能详,四次挥手估计就,所谓四次挥手即终止TCP连接,就是指断开一个TCP连接时,需要客户端和服务端总共发送4个包以确认连接的断开。

    1.第一次挥手:主动关闭方发送一个FIN,用来关闭主动关闭方关闭被动方的数据传送,主动关闭方进入FIN_WAIT_1状态。
        2.第二次挥手:被动关闭方收到FIN后,发送一个ACK给主动关闭方,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),被动关闭方进入CLOSE_WAIT状态。
       3.第三次挥手:被动被关闭方发送一个FIN,用来关闭被动关闭方主动关闭方的数据传送,被动关闭方进入LAST_ACK状态。

    4.第四次挥手:主动关闭方收到FIN后,主动关闭方进入TIME_WAIT状态,接着发送一个ACK给被动关闭方,确认序号为收到序号+1,被动关闭方进入CLOSED状态,完成四次挥手。

  • 相关阅读:
    如何给远程主机开启mysql远程登录权限
    Session机制详解
    CentOS 下PHP的卸载
    PHP实现执行定时任务的几种思路详解
    容易产生错误的where条件
    php超时任务处理
    (转载)Android项目tab类型主界面总结
    使用xutils发送POST请求,携带json和图片二进制文件数据获取服务器端返回json数据
    Android开发中常见错误
    (转载)Android显示原理简介
  • 原文地址:https://www.cnblogs.com/fengfen/p/10265436.html
Copyright © 2011-2022 走看看