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

         TCP三次握手及四次挥手:相对于SOCKET开发者,TCP创建过程和链接折除过程是由TCP/IP协议栈自动创建的。因此开发者并不需要控制这个过程.但是对于理解TCP底层运作机制,相当有帮助。

    TCP三次握手  

        所谓三次握手(Three-way Handshake),是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。  

    三次握手的目的是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号并交换 TCP 窗口大小信息。在socket编程中,客户端执行connect()时。将触发三次握手。

    TCP报文格式:

    第一次握手: 

    客户端发送一个TCP的SYN标志为1的包指明客户打算连接的服务器的端口,以及初始序号X,保存在包头的序列号(Sequence Number)字段里。 

    第二次握手: 
    服务器发回确认包(ACK)应答。即SYN标志位和ACK标志位均为1同时,将确认序号(Acknowledgement Number)设置为客户的序号(Seq)加1以.即X+1。

    第三次握手. 
    客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1.并且把服务器发来ACK的序号字段+1,放在确定字段中发送给对方.并且在数据段放写客户段序列+1 

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

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

  • 相关阅读:
    TSQL笔记4:表
    C#笔记26: 与非托管代码交互操作
    C#笔记22:多线程之停止或取消线程
    C#笔记25:比较和排序(IComparable和IComparer以及它们的泛型实现)
    TSQL笔记7:临时表和表变量
    TSQL笔记6:GO
    WPF快速指导9:WPF中的属性(依赖项属性)
    TSQL笔记2:INSERT、UPDATE和DELETE
    C#笔记23:多线程之Task(并行编程)
    云计算读书笔记(一)
  • 原文地址:https://www.cnblogs.com/luoquan/p/4886142.html
Copyright © 2011-2022 走看看