首页 > 其他分享 >TCP链接详解

TCP链接详解

时间:2022-10-25 22:22:05浏览次数:78  
标签:状态 SYN TCP 链接 详解 RCVD 连接 客户端

一. 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攻击);

标签:状态,SYN,TCP,链接,详解,RCVD,连接,客户端
From: https://www.cnblogs.com/lsgspace/p/16826583.html

相关文章

  • HTML三详解
    Web存储随着互联网的快速发展,基于网页的应用越来越普遍,同时也变的越来越复杂,为了满足各种各样的需求,会经常性在本地存储大量的数据,传统方式我们以document.cookie来进行......
  • HTML5详解二
    本文主要内容拖拽历史地理位置全屏拖拽如上图所示,我们可以拖拽博客园网站里的图片和超链接。在HTML5的规范中,我们可以通过为元素增加draggable="true"......
  • BigDecimal精度详解
    [BigDecimal精确度的计数保留法及精度丢失的解决办法]目录[BigDecimal精确度的计数保留法及精度丢失的解决办法]BigDecimal精确度的计数保留法1、ROUND_UP2、ROUND_DOWN3......
  • 重新思考TCP三次握手,两次握手的缺点
    两次握手也能保证有序可达两次握手在CS架构中是能保证有序、可达的,因为客户端在收到服务器的确认后,双方知道客户端下一次消息的正确序号,客户端到服务器的单向连接就......
  • 微服务 Zipkin 链路追踪原理(图文详解)
    一个看起来很简单的应用,可能需要数十或数百个服务来支撑,一个请求就要多次服务调用。当请求变慢、或者不能使用时,我们是不知道是哪个后台服务引起的。这时,我们使用 Zip......
  • JUC中的AQS底层详细超详解
    摘要:当你使用java实现一个线程同步的对象时,一定会包含一个问题:你该如何保证多个线程访问该对象时,正确地进行阻塞等待,正确地被唤醒?本文分享自华为云社区《JUC中的AQS底层详......
  • Springboot中@Value的使用详解
    Springboot中@Value的使用详解Springboot通过@Value注解将配置文件中的属性注入到容器内组件中(可用在@Controller、@Service、@Configuration、@Component等Spring托管的......
  • 多表查询-外链接、子查询概述
    多表查询-外链接1、左外链接:语法:select字段列表from表1left[outer]join表2on条件;查询的是左表所有数据以及其交集部分。例子:--查询所有员工信息......
  • 获取视频链接的视频信息
    需求在不下载视频文件的情况下获取视频的时长、分辨率等信息。实现引入包compile('ws.schild:jave-all-deps:3.2.0') 代码demoURLurl=newURL(videoUrl);M......
  • PostgreSQL 数组类型使用详解
    PostgreSQL数组类型使用详解PostgreSQL数组类型使用详解可能大家对PostgreSQL这个关系型数据库不太熟悉,因为大部分人最熟悉的,公司用的最多的是MySQL我们先对Postgr......