TCP链接详解

一. TCP协议

  传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。

  基于流的方式;

    • 面向连接;(在通信之前要通过三次握手建立链接)
    • 可靠通信方式;(确保数据不会丢失)
    • 在网络状况不佳的时候尽量降低系统由于重传带来的带宽开销;(拥塞控制
    • 通信连接维护是面向通信的两个端点的,而不考虑中间网段和节点。

  因为有着拥塞控制和可靠数据传输的要求所以导致了TCP协议的传输效率相对于UDP要低,但是不会像UDP一样出现丢包现象。

 

二. TCP协议的报文格式

在这里插入图片描述

三. 链接状态

1.客户端

  • CLOSED状态:为关闭状态;
  • SYN_SENT状态:为请求连接状态,如果连接成功了就变为ESTABLISHED;
  • ESTABLISHED状态:连接成功。
 

2.服务端

  • LISTENING状态:监听状态, State显示是LISTENING时表示处于侦听状态,就是说该端口是开放的,等待连接,但还没有被连接。就像你房子的门已经敞开的,但还没有人进来;
  • SYN-RCVD状态:收到和发送一个连接请求后等待对方对连接请求的确认;
  • ESTABLISHED状态:连接成功

补充:SYN-RCVD状态,当服务器收到客户端发送的同步信号时,将标志位ACK和SYN置1发送给客户端,此时服务器端处于SYN_RCVD状态,
如果连接成功了就变为ESTABLISHED,正常情况下SYN_RCVD状态非常短暂。如果发现有很多SYN_RCVD状态,那你的机器有可能被SYN Flood的DoS(拒绝服务攻击)攻击了。

 

四. TCP的三次握手

 

 

    

 

 

五. 相关网络攻击 

 

SYN Flood的攻击,在进行三次握手时,攻击软件向被攻击的服务器发送SYN连接请求(握手的第一步),但是这个地址是伪造的,如攻击软件随机伪造了51.133.163.101等地址;
服务器 在收到连接请求时将标志位 ACK和 SYN 置1发送给客户端(握手的第二步),但是这些客户端的IP地址都是伪造的,服务器根本找不到客户机,也就是说握手的第三步不可能完成;
这种情况下服务器端一般会重试(再次发送SYN+ACK给客户端)并等待一段时间后丢弃这个未完成的连接,这段时间的长度我们称为SYN Timeout,一般来说这个时间是分钟的数量级;
大量的伪造访问,服务端需要维护大量的半连接,同时需要不断的进行重试这会消耗非常多的CPU 时间和内存。此时从正常客户的角度看来,服务器失去响应,这种情况我们称做: 服务器端受到了SYN Flood攻击(SYN洪水攻击 )

 

参考链接:https://blog.csdn.net/qq_48508278/article/details/122588669(TCP三次握手(详解));

                  https://blog.csdn.net/u013617791/article/details/123622076(DDOS攻击);

posted @ 2022-10-25 22:19  FOEVERYANG  阅读(369)  评论(0编辑  收藏  举报