zoukankan      html  css  js  c++  java
  • TCP面试题之三次握手过程

    TCP简介:

      1、面向连接的、可靠的、基于字节流的传输层的通信协议;

      2、将应用层的数据流分割成报文段并发送给目标节点的TCP层;

      3、数据包都有序号,对方收到则发送ACK确认,未收到则重传;

      4、使用校验和来检验数据在传输过程中是否有误;

    TCP标志位(Flags):

      1、URG:紧急指针标志;

      2、ACK:确认序号标志;

      3、PSH:push标志;

      4、RST:重置连接标志;

      5、SYN:同步序号,用于建立连接过程;

      6、FIN:finish标志,用于释放连接;

    TCP三次握手过程:

      1、建立连接时,客户端发送SYN包到服务器,并进入SYN_SEND状态,等待服务器确认;

      2、服务器收到SYN包,必须确认客户的SYN,同时自己也发送一个SYN包,即SYN+ACK包,此时服务器进入SYN_RECV状态;

      3、客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK,此包发送完毕,客户端和服务器进入established状态,完成三次握手;

    首次握手的隐患------SYN超时问题

    问题起因和分析:

      1、服务器收到客户端的SYN,回复SYN和ACK的时候未收到ACK确认

      2、服务器不断重试直至超时,Linux默认等待63秒才断开连接;(重复5次【不包括第一次】,从1秒开始,每次重试都翻倍:1+2+4+8+16+32=63秒)

    针对SYN Flood的防护措施:

      1、SYN队列满后,通过tcp_syncookies参数会发SYN cookie【源端口+目标端口+时间戳组成】;

      2、若为正常连接则Client会回发SYN Cookie,直接建立连接;

     建立连接后,Client出现故障怎么办:

    保活机制:

      1、向对方发送保活探测报文,如果未收到相应则继续发送;

      2、尝试次数达到保活探测数仍未收到相应则中断连接;

  • 相关阅读:
    相对布局(下)
    html5-微格式-时间的格式
    html5-新元素新布局模板
    html5-section元素
    html5-article元素
    html5-新布局元素header,footer
    html5-基本知识小结及补充
    html5-常用的通用元素
    html5-div布局
    html5-块元素和内联元素
  • 原文地址:https://www.cnblogs.com/hujinshui/p/10472940.html
Copyright © 2011-2022 走看看