zoukankan      html  css  js  c++  java
  • TCP三次握手的过程

    三次握手

    下图就是wireshark抓包工具抓获的TCP连接建立的三次握手过程:

    http://www.cnblogs.com/hnrainll/archive/2011/10/14/2212415.html

    相对于SOCKET开发人员,TCP创建过程和链接折除过程是由TCP/IP协议栈自己主动创建的.因此开发人员并不须要控制这个过程.可是对于理解TCP底层运作机制,相当有帮助.

     
       并且对于有网络协议project师之类笔试,差点儿是必考的内容.企业对这个问题热情之高,出乎我的意料:-)。有时上午面试前强调这个问题,并反复讲一次,下午差点儿每个人都被问到这个问题。
     
    因此在这里详解一下这两个过程。
     
    TCP三次握手
     
    所谓三次握手(Three-way Handshake),是指建立一个TCP连接时,须要client和server总共发送3个包。
     
    三次握手的目的是连接server指定port,建立TCP连接,并同步连接两方的序列号和确认号并交换 TCP 窗体大小信息.在socket编程中,client运行connect()时。将触发三次握手。
     
     
     
     
    • 第一次握手:
      client发送一个TCP的SYN标志位置1的包指明客户打算连接的server的port,以及初始序号X,保存在包头的序列号(Sequence Number)字段里。
    • 第二次握手:
      server发回确认包(ACK)应答。即SYN标志位和ACK标志位均为1同一时候,将确认序号(Acknowledgement Number)设置为客户的I S N加1以.即X+1。

    • 第三次握手.
      client再次发送确认包(ACK) SYN标志位为0,ACK标志位为1.而且把server发来ACK的序号字段+1,放在确定字段中发送给对方.而且在数据段放写ISN的+1

    SYN攻击

       在三次握手过程中,server发送SYN-ACK之后,收到client的ACK之前的TCP连接称为半连接(half-open connect).此时server处于Syn_RECV状态.当收到ACK后,server转入ESTABLISHED状态.

      Syn攻击就是 攻击client 在短时间内伪造大量不存在的IP地址,向server不断地发送syn包,server回复确认包,并等待客户的确认,因为源地址是不存在的,server须要不断的重发直 至超时,这些伪造的SYN包将长时间占用未连接队列,正常的SYN请求被丢弃,目标系统执行缓慢,严重者引起网络阻塞甚至系统瘫痪。

     Syn攻击是一个典型的DDOS攻击。检測SYN攻击很的方便,当你在server上看到大量的半连接状态时,特别是源IP地址是随机的,基本上能够断定这是一次SYN攻击.在Linux下能够例如以下命令检測是否被Syn攻击

    netstat -n -p TCP | grep SYN_RECV

    一般较新的TCP/IP协议栈都对这一过程进行修正来防范Syn攻击,改动tcp协议实现。主要方法有SynAttackProtect保护机制、SYN cookies技术、添加最大半连接和缩短超时时间等.

    可是不能全然防范syn攻击。

    TCP 四次挥手

    TCP的连接的拆除须要发送四个包,因此称为四次挥手(four-way handshake)。client或server均可主动发起挥手动作,在socket编程中,不论什么一方运行close()操作就可以产生挥手操作。

     

    參见wireshark抓包,实測的抓包结果并没有严格按挥手时序。我预计是时间间隔太短造成。

    source url:http://bluedrum.cublog.cn
  • 相关阅读:
    工作的本质是思考
    V8、JSCore、Hermes、QuickJS,hybrid开发JS引擎怎么选
    Aspects框架的源码解读及问题解析
    饿了么移动APP的架构演进
    关键字:客户端架构演进
    以小见大,见微知著——亿万级APP架构演进之路
    理解 Swift:ObjectiveC 的构建管道
    MMKV 组件现在开源了
    进阶:iOS 性能优化系列
    你如果无法度量它,就无法管理它
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/4063088.html
Copyright © 2011-2022 走看看