• TCP三次握手四次挥手内容及步骤


    TCP特性

    1、工作在传输层

    2、面向连接的协议

    3、全双工协议

    4、半关闭

    5、错误检查

    6、将数据打包成段,排序

    7、确认机制

    8、数据恢复、重传

    9、流量控制、滑动窗口

    10、拥塞控制,慢启动和拥塞避免算法

    常见端口号

    http80 https443 ftp20/21 dns53 tftp69

    smtp25 pop110 imap143 telnet23 ssh 22

    mysql3306 oracle1521 

    三次握手

     

    ————————————————

    当一台主机(客户端)想要通过TCP协议向另一台主机(服务器)发送数据时,需要建立三次握手

    第一次握手,客户端主动打开TCP连接通道,发送TCP请求报文,在该报文中SYN(同步位,代表连接请求或连接请求的接受报文)置为1,seq(序列号)为随机数x。

    第一次握手过程中,客户端由CLOSED状态,即没有任何连接的状态,变为SYN-SENT状态,即发送连接请求后等待匹配的连接请求状态。代表请求连接,不会传输数据。

    第二次握手,当服务器端收到了TCP连接请求(即SYN置为1的报文。注:此处应该是不携带ACK为1的报文),服务器被动打开连接通道,根据服务器自身策略向客户端发送TCP回复报文,在该报文中SYN置为1,ACK(确认位,置为1代表确认,置为0代表...代表不确认呗)置为1,ack(确认序列号)为TCP请求报文中的seq+1即x+1,seq(序列号)为另一个随机数y。

    在第二次握手过程中,服务器在收到TCP请求报文时,被动的由CLOSED状态与LISTEN状态变为SYN-RECEIVED状态,即收到和发送一个连接请求后等待对方对连接请求确认的状态,同时准备好缓存空间以及一些涉及到的变量。代表允许连接,不会传输数据。

    第三次握手,当客户端收到服务器的TCP连接请求的回复报文后,会向服务器端发送一个报文携带ACK置为1,ack为TCP连接请求的回复报文中seq+1即y+1,seq为最开始的x+1,也就是TCP连接请求的回复报文中ack的值,SYN置为0。

    在第三次握手过程中,当客户端收到了TCP连接请求的回复报文(允许连接)时,客户端由SYN-SENT状态变为ESTAB-LISHEN状态,代表一个打开的连接,同时客户端为TCP连接准备好缓存空间以及一些涉及到的变量。该报文代表向服务器端确认的确认报文,可以携带数据。

    ————————————————

    LISTEN:侦听来自远方的TCP端口的连接请求

    SYN-SENT:再发送连接请求后等待匹配的连接请求(客户端)

    SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认(服务器)

    ESTABLISHED:代表一个打开的连接

    FIN-WAIT-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认

    FIN-WAIT-2:从远程TCP等待连接中断请求

    CLOSE-WAIT:等待从本地用户发来的连接中断请求

    CLOSING:等待远程TCP对连接中断的确认

    LAST-ACK:等待原来的发向远程TCP的连接中断请求的确认

    TIME-WAIT:等待足够的时间以确保远程TCP接收到连接中断请求的确认

    CLOSED:没有任何连接状态

    四次挥手

     

    ————————————————

    参与一条TCP连接的两个“进程”中的任何一个都能终止该连接,连接结束后,主机中的“资源”(缓存和变量)都将被释放。

    第一次挥手,客户端向服务器发送关闭连接请求报文,即连接释放报文,关闭TCP连接,该报文中FIN(结束位)置为1,seq置为u(报文段第一个字节的序号,可以标识这个报文段)。

    在第一次挥手过程中,客户端由ESTABLISHED状态变为FIN-WAIT-1,等待远程TCP连接中断请求,或先前的连接中断请求的确认。此时客户端已经释放了发送连接。

    第二次挥手,服务端收到客户端发送的关闭请求,回复一个确认报文段,该确认报文中ACK置为1,ack为u+1,seq为v(最后一个TCP数据报文中的最后一个字节+1)。

    在第二次挥手过程中,服务器由ESTABLISHED状态变为CLOSE-WAIT状态,等待足够的时间以确保远程TCP接收到连接中断请求的确认。此时服务器端释放了接受连接。由于客户端关闭了发送连接,服务器端关闭了接受连接,所有此时整个TCP连接处于一种半关闭状态。

    第三次挥手,服务器发送确认关闭报文后需要向客户端发送一个释放连接报文,关闭TCP发送连接,由于是释放连接报文,所以FIN置为1,ACK置为1,ack为u+1(由于上一挥手报文也是由服务器发送,所有客户端等待的报文需要有ACK位,同时确认号依旧为上一个报文的确认号),

  • 相关阅读:
    k8s 存活探针(健康检查)
    数据库CPU 100%处理记录
    zabbix 批量安装+自动注册
    Docker 学习目录
    ubuntu18启动zabbix-agent失败/故障记录
    使用Docker构建企业Jenkins CI平台
    记一次服务被黑处理过程
    ELK数据迁移,ES快照备份迁移
    脚本监控服务状态 微信-钉钉告警
    邮箱附件脚本
  • 原文地址:https://www.cnblogs.com/diyudewudao/p/13160305.html
Copyright © 2020-2023  润新知