TCP的三次握手

      最后更新:2021-10-18 23:58:08 手机定位技术交流文章

      TCP连接建立

      • I. 三次TCP握手
        • 第一次握手
        • 第二次握手
        • 第三次握手
      • 第二,为什么有三个握手?
        • 避免历史连接
        • 同步双方最初的序列号
        • 避免资源浪费
      • 三. 客户ISN与服务ISN有什么区别?
      • 四. 产生启动序号ISN的程序
      • 五、知识产权层划分:为什么在贸易点一级需要管理管理系统?
        • MTU与MSS
        • 原因分析
      • 六、SYN攻击
        • SYN攻击
        • 应对方法
          • 通过更改 Linux 内核设置来控制队队的大小以及队列满时要做什么
          • syncookie

      I. 三次TCP握手

      第一次握手

      客户端随机初始化序列号( client_isn), 将序列号设置在 TCP 第一部分的编号字段中, 并将 SYN 标记设置为 1 以表示 SYN 消息。 然后, 将第一个 SYN 消息发送到服务器, 表示连接已建立到服务, 其中不包括应用程序级别上的数据, 客户端处于 SYN- SENT 状态 。

      第二次握手

      收到客户端 SYN 信息后,该服务首先随机初始化其序列号(server_isn),在 TCP 第一部分的编号字段中填入此序列号,然后将 TCP 第一部分的确认回答字段填入cliet_isn + 1,然后在 1 中填入 SYN 和ACK 信号的位置。

      第三次握手

      收到服务信息后,客户对服务的最后回复做出回复,首先对 TCP 最初的 ACK 签名位置 1 做出回复,然后确认响应编号字段以服务器_isn+1 的形式填充,最后将信息发送到服务处,服务处可以将客户的数据传送到服务器,客户处于建立状态。当服务器收到客户的回复时,服务器同样被标为已建立状态。
      在这里插入图片描述

      第二,为什么有三个握手?

      避免历史连接

      客户不断传递许多与SYN连接的信息,如果网络堵塞:

      • 一份较老的SYN报告是在最近一次SYN报告之前收到的。
      • 服务器然后向客户端发送 SYN + ACK 消息 。
      • 当客户收到时,根据客户本身的上下文,可以将其确定为历史连接(序列号过期或超时),客户然后向服务器发送RST信号,表明连接已终止。
      • 无法判断目前的连接在两次握手后是否具有历史意义,然而,在客户(发送者)准备发送第三封电文时,可以使用三次握手来确定目前的连接是否具有历史意义,假设客户(发送者)有足够的信息来确定目前的连接是否具有历史意义,那么就无法确定目前的连接在两次握手后是否具有历史意义,但可以使用三次握手来确定当客户(发送者)准备发送第三封电文时,当客户(发送者)准备发送第三封电文时,目前的连接是否具有历史意义,假设客户有足够的信息确定目前的连接是否具有历史意义:
        • 在历史连接(序列号过期或超时)的情况下,第三次握手交付了RST电文副本,导致历史连接中止。
        • 如果连接不是历史信息,则发送的第三则电文是ACK信息,传输的双方将成功确定连接。

      因此,TCP用来建立联系的三个握手的主要理由是防止历史联系启动连接。

      同步双方最初的序列号

      序列号的作用

      • 复制数据可由接收器删除。
      • 收件人可以根据其序列号接受该数据包。
      • 您可以知道哪些数据包是寄出的,哪些数据包以前是对方收到的。

      在TCP连接中,序列号是极为重要的,因此当客户发送带有初始序列号的SYN信息时,需要这种服务来回回ACK回复,表明服务成功接收了客户SYN信息,虽然服务向客户提供初始序列号,但服务仍需要收到客户的答复,因此,在TCP连接中,单一答复可以确保必要号码的准确同步,因此,当客户发送带有初始序列号的SYN信息时,需要这种服务来回回ACK回复,表明服务成功接收客户SYN信息,虽然服务正在向客户提供初始序列号,但服务仍需要收到客户的答复,因此,单一答复可以确保准确同步。

      避免资源浪费

      如果只有两只握手,而客户SYN想要连接到网络,但没有获得ACK信息,SYN将重新发送。服务器不知道客户是否得到了在没有第三次握手的情况下为创建连接而提供的ACK确认信号,因此每个SYN仅主动收到一个SYN。如果客户SYN封住并不断发送许多SYN信息,服务器将建立一个多余的无效连接,浪费资源。

      三. 客户ISN与服务ISN有什么区别?

      如果已取消的连接被再利用,但先前链接的历史信息仍留在网络中,序列号不变,那么很难确定它是否是一个历史信息,如果它被新连接接收,则存在数据混乱,因此,在每个连接之前重新输入序列号的主要原因是允许双方进行通信,以便根据序列号拒绝不属于当前连接的部分。 但是,为了安全起见,伪造的TCP报告的相同序列号被另一方阻止接收。

      四. 产生启动序号ISN的程序

      ISN从每4毫秒+1时的时钟开始,然后持续到4.55小时。
      1948年RFC建议改进初始化序号ISN随机生成技术。

      • M是手表,每四毫秒加一分
      • F是一种散列算法,根据来源和目的地IP地址以及来源和目的地港口,产生随机值。
      • MD5法是确保哈什算法不易从外部推断出来的优选方法。

      五、知识产权层划分:为什么在贸易点一级需要管理管理系统?

      MTU与MSS

      在这里插入图片描述

      • MTU:最大网络套件长度,通常在青少年网中为1 500字节。
      • MSS:一旦IP和TCP头部被删除,可在网络包中处理的TCP数据的最大长度。

      原因分析

      当 IP 碎片丢失时, 整个 IP 信件必须重新传送 。
      由于IP层缺乏超时机制,传输层的TCP负责加班和再传送。当接收方意识到TCP提交书(头+数据)的一部分已经丢失时,它不会对另一方的ACK作出反应,导致发送方的TCP在时限之后将整个TCP提交书(头+数据)退回。因此,知道IP层被用于片段转移是极其浪费的。
      连接建立后,TCP协议通常会谈判缔约方的 MMS 值,以确保最佳传输效率。当 TCP 层检测到数据已超过 MMS 时,分割首先进行。 当然,它产生的 IP 包的大小不会大于 MTU, 并且不应该是 MTU 。
      当TCP堆叠后丢失的TCP碎片在MMS中反复出现,而不是重新传送所有碎片,这大大提高了再传送的效率。

      六、SYN攻击

      SYN攻击

      我们都知道,TCP连接是由三节握手创造的,假设攻击者在短时间内在一个不同的IP地址伪造SYN信息,服务所有人收到的SYN-RCVD信息每一条SYN_RCVD信息都进入SYN_RCVD状态,但服务提供商发送的ACK +SYN信息无法获得未知IP主机的ACK反应,SYN接收队列(未连接队列)

      应对方法

      通过更改 Linux 内核设置来控制队队的大小以及队列满时要做什么

      • 当网卡接收数据包的速度快于内核所能处理的速度时,它们会被排队。 队列的最大值控制如下:net.core.netdev_max_backlog
      • SYN_RCVD 状态连接的最大数 :net.core.netdev_max_backlog
      • 当处理能力超过处理能力时,将丢弃物连接直接返回新 SYN 到 RST :net.ipv4.tcp_abort_on_overflow

      syncookie

      如果SYN攻击继续,SYN队列可以全部填满。为了回应SYN攻击,请使用 tcp_synbookies:net.ipv4.tcp_syncookies = 1

      • 当SYN团队满员时,SYN软件包将交付给后续服务器,后者不加入SYN队列。
      • 在 SYN+ACK 中,计算一个 cookie 值并将序列号返回客户端。
      • 当服务器收到客户的回复时, 它会验证 ACK 软件包的真实性 。
      • 如果合法, 请立即输入“ 接受” 队列 。 最后, 使用 accpet () 匹配界面来应用“ 接受” 队列的连接 。

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/11969.html

          热门文章

          文章分类