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状态,完成四次挥手。

  • 相关阅读:
    微信小程序自定义分享图片
    rtop:一个通过 SSH 监控远程主机的交互式工具【转】
    mysql双主+keepalived【转】
    诡异的Linux磁盘空间被占用问题,根目录满了,df和du占用不一样【转】
    linux磁盘空间查看inode
    python数据库操作
    Jenkins 安装及使用
    编程入门python之定义函数【转】
    grep和sed匹配多个字符关键字的用法
    linux 如何删除文件夹下面的文件和文件夹,只保留两个文件
  • 原文地址:https://www.cnblogs.com/fengfen/p/10265436.html
Copyright © 2011-2022 走看看