• TCP三次握手四次挥手


    参考:
    https://www.cnblogs.com/passzhang/articles/9367534.html
    TCP三次握手的过程如下:
    主动连接端发送一个SYN包给被动连接端;
    被动连接端收到SYN包后,发送一个带ACK和SYN标志的包给主动连接端;
    主动连接端发送一个带ACK标志的包给被动连接端,握手动作完成。

    TCP四次挥手的过程如下:
    主动关闭端发送一个FIN包给被动关闭端;
    被动关闭端收到FIN包后,发送一个ACK包给主动关闭端;
    被动关闭端发送了ACK包后,再发送一个FIN包给主动关闭端;
    主动关闭端收到FIN包后,发送一个ACK包,当被动关闭端收到ACK包后,四次挥手动作完成,连接断开。

    netstat中的各种状态:
    CLOSED
    初始(无连接)状态。
    LISTEN
    侦听状态,等待远程机器的连接请求。
    SYN_SEND
    在TCP三次握手期间,主动连接端发送了SYN包后,进入SYN_SEND状态,等待对方的ACK包。
    SYN_RECV
    在TCP三次握手期间,主动连接端收到SYN包后,进入SYN_RECV状态。
    ESTABLISHED
    完成TCP三次握手后,主动连接端进入ESTABLISHED状态。此时,TCP连接已经建立,可以进行通信。
    FIN_WAIT_1
    在TCP四次挥手时,主动关闭端发送FIN包后,进入FIN_WAIT_1状态。
    FIN_WAIT_2
    在TCP四次挥手时,主动关闭端收到ACK包后,进入FIN_WAIT_2状态。
    TIME_WAIT
    在TCP四次挥手时,主动关闭端发送了ACK包之后,进入TIME_WAIT状态,等待最多MSL时间,让被动关闭端收到ACK包。
    CLOSING
    在TCP四次挥手期间,主动关闭端发送了FIN包后,没有收到对应的ACK包,却收到对方的FIN包,此时,进入CLOSING状态。
    CLOSE_WAIT
    在TCP四次挥手期间,被动关闭端收到FIN包后,进入CLOSE_WAIT状态。
    LAST_ACK
    在TCP四次挥手时,被动关闭端发送FIN包后,进入LAST_ACK状态,等待对方的ACK包。

    主动连接端可能的状态有:
    CLOSED SYN_SEND ESTABLISHED。
    主动关闭端可能的状态有:
    FIN_WAIT_1 FIN_WAIT_2 TIME_WAIT。
    被动连接端可能的状态有:
    LISTEN SYN_RECV ESTABLISHED。
    被动关闭端可能的状态有:
    CLOSE_WAIT LAST_ACK CLOSED。

    在Linux下,如果连接数比较大,可以使用效率更高的ss来替代netstat

  • 相关阅读:
    Linux 让终端走代理的几种方法
    golang 项目框架开发
    tensorflow + python + keras 版本对应关系
    Mac OS X下的ldd工具——otool
    jumpserver的安装
    golang 设置代理
    mac install Docker version 19.03.8
    SpringBoot + Spring Cloud Eureka 服务注册与发现
    SpringBoot + Spring Cloud Consul 服务注册和发现
    前端实现大文件上传
  • 原文地址:https://www.cnblogs.com/kikochz/p/13539450.html
Copyright © 2020-2023  润新知