• TCP三次握手及四次挥手详细图解(未完)


    TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:
    (完成三次握手,客户端与服务器开始传送数据)
    所谓三次握手(Three-way Handshake),是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。
    三次握手的目的是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号并交换 TCP 窗口大小信息.
     
     
     
    ※第一次握手:
    客户端发送一个TCP的SYN标志位置1 (syn=1 )的包指明客户打算连接的服务器的端口,以及随机产生的初始序号X (Seq=x),保存在包头的序列号(Sequence Number)字段里,发送给服务器要求建立联机.并进入SYN_SEND状态,等待服务器确认; 
     
     
    第二次握手:
    服务器发回确认包(ACK)应答。即SYN标志位和ACK标志位均为1  (syn=1,ack=1) 的同时,将确认序号(Ack Number)设置为客户的Seq加1 (ack=X+1)。
    第三次握手:
    客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1.并且把服务器发来ACK的序号字段+1,放在确定字段中发送给对方.并且在数据段放写ISN的+1
     
    实例:
    IP 192.168.1.116.3337 > 192.168.1.123.7788: S 3626544836:3626544836
    IP 192.168.1.123.7788 > 192.168.1.116.3337: S 1739326486:1739326486 ack 3626544837
    IP 192.168.1.116.3337 > 192.168.1.123.7788: ack 1739326487,ack 1
     
    第一次握手:192.168.1.116发送位码syn=1,随机产生seq number=3626544836的数据包到192.168.1.123,192.168.1.123由SYN=1知道192.168.1.116要求建立联机;
     
    第二次握手:192.168.1.123收到请求后要确认联机信息,向192.168.1.116发送ack number=3626544837,syn=1,ack=1,随机产生seq=1739326486的包;
     
    第 三次握手:192.168.1.116收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码ack是否为1,若正确,192.168.1.116会再发送ack number=1739326487,ack=1,192.168.1.123收到后确认seq=seq+1,ack=1则连接建立成功。
     
    一个完整的三次握手也就是 请求---应答---再次确认
     
    SYN攻击
    在三次握手过程中,服务器发送SYN-ACK之后,收到客户端的ACK之前的TCP连接称为半连接(half-open connect).此时服务器处于Syn_RECV状态.当收到ACK后,服务器转入ESTABLISHED状态.
     
    Syn攻击就是 攻击客户端 在短时间内伪造大量不存在的IP地址,向服务器不断地发送syn包,服务器回复确认包,并等待客户的确认,由于源地址是不存在的,服务器需要不断的重发直 至超时,这些伪造的SYN包将长时间占用未连接队列,正常的SYN请求被丢弃,目标系统运行缓慢,严重者引起网络堵塞甚至系统瘫痪。
     
    Syn攻击是一个典型的DDOS攻击。检测SYN攻击非常的方便,当你在服务器上看到大量的半连接状态时,特别是源IP地址是随机的,基本上可以断定这是一次SYN攻击.在Linux下可以如下命令检测是否被Syn攻击

    netstat -n -p TCP | grep SYN_RECV

    一般较新的TCP/IP协议栈都对这一过程进行修正来防范Syn攻击,修改tcp协议实现。主要方法有SynAttackProtect保护机制、SYN cookies技术、增加最大半连接和缩短超时时间等.但是不能完全防范syn攻击。
     
    TCP 四次挥手
    TCP的连接的拆除需要发送四个包,因此称为四次挥手(four-way handshake)。客户端或服务器均可主动发起挥手动作,在socket编程中,任何一方执行close()操作即可产生挥手操作。
     
    参见wireshark抓包,实测的抓包结果并没有严格按挥手时序。应该是时间间隔太短造成。
     
     
    文章参考:
  • 相关阅读:
    PHPStorm打开文件所在目录
    登录顺序图与项目部署图
    JAVA配置Tomcat
    设计模式与足球
    JAVA设计模式之【模板方法模式】
    JAVA设计模式之【策略模式】
    JAVA设计模式之【状态模式】
    JAVA设计模式之【观察者模式】
    phpstorm 或 webstorm 设置打开多个项目,多个项目并存。
    JAVA设计模式之【迭代器模式】
  • 原文地址:https://www.cnblogs.com/airoot/p/4131892.html
Copyright © 2020-2023  润新知