zoukankan      html  css  js  c++  java
  • TCP

    一、三次握手 

      三次握手流程: 

        甲:客户端机器发送链接请求:SYN=1,seq=x ;
        乙:服务器机器响应链接请求:SYN=1,ACK=1,seq=y ; (y = x+1)
        丙:客户端机器响应服务端:ACK=1,seq=x+1,ack=y+1 ;

        

      三次握手的原因:

        

        a:确认双方都能首发报文。

        b:防止出现请求超时导致脏链接。

          甲机器第一次请求链接超时。

          甲机器第二次请求链接发送成功,建立链接。

          此时:服务器收到甲机器的第一次建立链接请求。

           

    二、四次挥手

      四次挥手的流程:

        甲:客户机发送断开链接请求:FIN =1,seq=u

        乙:服务端发送应答:ACK=1,seq=v,ack=u+1

        丙:客户端处于半关闭状态,只能接受数据,不能发送数据。

        丁:服务端传输完成:FIN=1,ACK=1,seq=w,ack=u+1

        己:服务端进入半关闭状态

        庚:客户端应答服务器"丁"步骤的消息:ACK=1,seq=u+1,ack=w+1

        辛:客户端等待2MSL,收不到服务端的消息,关闭链接。

        壬:服务器收到客户端的消息,断开链接。

       流程图:

          

        四次挥手的原因:

          1、确保数据全部接收。

          2、TIME_WAIT 非常重要,不可省略。

       

    三、实际使用

      1、减少服务器的TIME_WAIT超时,能增加服务器并发。

        /etc/sysctl.conf    net.ipv4.tcp_fin_timeout=30

      

      

  • 相关阅读:
    Java中的HashMap
    单机百万连接调优和Netty应用级别调优
    简单排序(冒泡排序,插入排序,选择排序)
    使用AC自动机解决文章匹配多个候选词问题
    树状数组解决数组单点更新后快速查询区间和的问题
    LeetCode 763. Partition Labels
    LeetCode 435. Non-overlapping Intervals
    线段树
    无序数组求第K大的数
    KMP算法解决字符串匹配问题
  • 原文地址:https://www.cnblogs.com/chen--biao/p/12180653.html
Copyright © 2011-2022 走看看