TCP协议详解

      最后更新:2021-10-28 18:10:56 手机定位技术交流文章

      文章目录

      • 前言
      • 一、TCP协议概述
        • 1.协议特点
        • 2.TCP报文段
      • 二. TCP数据传输可靠性
        • 1.概述
        • 两次超时选择 重新发送
        • 3.快速重传机制
      • 三、TCP流量控制
      • 四、TCP连接管理
        • 一. 建立联系 -- -- 三次握手
        • 2. 连接断开 - 四波
      • 五、TCP拥塞控制
        • 1.基本原理
        • 2.慢启动(SS)
        • 三.AIMD(增加-乘数)
      • 总结

      前言

      请注意本条案文如下。

      一、TCP协议概述

      1.协议特点

      (1) TCP是传输层的连接(假连接)协议。

      在传输数据之前,对话双方必须达成一致。必须建立连接连接状态只保留在连接的两个端点上,而不是在步骤节点上。

      TCP 连接包含两个主机的缓存、连接状态变量、插座等等。

      (2) 每个TCP连接只能有两个终点,每个TCP连接只能是点对点。

      在此情况下,主机、主机IP地址、申请程序协议港和运输层不是TCP连接的终点。Socket 是 TCP 连接端口 [口 = (IP 地址: 端口号)

      每个TCP连接在对话的两端通过两个端点(即两组)确定。

      (3) TCP提供可靠的服务,避免错误、损失、不重复和有序抵达(可靠订单、无重量)。

      (4) TCP允许连续通信。

      利用发送和接收缓存,可以通过同一连接传输双向数据流。
      发送缓存:即将发送的数据和已经发送但尚未确认的数据
      接收缓存:按顺序生成但接收应用程序尚未读取的数据,以及以不规则方式抵达的数据。
      在这里插入图片描述

      TCP 字节流(5)

      TCP认为,应用程序的数据是无结构字节的顺序。
      (UDP协议用于数据报告。 )

      (5)流水线机制

      配置 TCP 拥堵管理和流量控制技术窗口的大小 。

      (6)流量控制机制

      2.TCP报文段

      TCP的数据模块称为条目,TCP的条目分为若干部分。TCP首部TCP数据全部TCP部分作为实施伙伴数据报告的一部分,分为两半,第一部分的前20B部分固定不变。

      最小的 20B 选项位于 TCP 条目的前端,其次是 4N 字节选项,该选项被添加到要求中,通常整数长度为 4B。

      TCP信息可用于传输数据以及创建、发布和回复连接。

      在这里插入图片描述
      (1) 来源港区和目的地港区:每个2B港是运输层与应用层之间的服务界面,运输层的功能重复并分布在整个港口。

      (2) 序号字段为4B,而TCP是一个字节流(即TCP在传输时按字节发送),因此TCP连接的数据流中每个字节都有编号。序列号字段的价值是此报告字段所传送数据的第一个字节的编号。在建立TCP连接时,双方随机选择序列号

      (3) 实地确认编号:4B,期望从对面下一个条目获得数据的是第一个字节的数目。如果被确认为N,则表示已经适当收到序列号为N-1的所有数据。

      (4) 第一部长(数据多样化):4个位子,而不是IP数据分节的位子,表明TCP部分的数据在多大程度上源自TCP部分。

      (5)保留字段

      (6) URG = 1 表示紧急URL。紧急指针字段有效它告诉系统,报告中有紧急数据,应当尽快通报(类似于高度优先数据),然而,紧急小组必须同时发出紧急指令,即紧急数据是从紧急指尖的第一个字节到字节的数据。

      (7) 立场确认 ACK:确认编号字段只有在 ACK=1 时才被接受;当 ACK=0 时无效。 TCP 授权所有 ACK 广播在连接建立后放入 1 上。

      累计确认:在适当收到序号之前的所有字节

      作为序列号和ACC通信的一个实例,请考虑以下各点:
      在这里插入图片描述
      主机A要求的序列号为79,传输端点点数据,第一个字节号为42,需要数据为“C”,主机B发送数据“C”,以及第一个字节号为“ACK=43”的数据,表示前42个字节已经收到,主机A答复发送的序列号为79的数据,传输端点点数据的第一个字节号为42,要求数据为“C”,主机B发送数据“C”,以及第一个字节号为“ACK=43”的数据,表示接收了前42个字节,主机A正在回复。

      (8) PSH(普什):收到来自TCP的PSH=1,并尽快将其发送到接收申请程序,而不必等待整个缓存被填满。

      (9) 反转 RST (重置):当 RST = 1 时, TCP 连接存在重大问题,如果主机失灵,则必须放弃连接并重新建立运输连接。

      (10) SYN:同步位置SYN=1 表示这是连接请求或信件接收连接 。
      当 SYN = 1, AK = 0时,它表示它是连接请求,如果另一方同意确定连接,则使用 SYN = 1, AK = 1, 或 SYN = 1, 表示它是连接请求或电文接收。

      (11) 终止FIN(完成):FIN=1 发出信号,发送此信息者提供的数据已经发送,并要求释放传输链接,以释放连接。

      (12)窗口字段:它表示现在允许另一方通报数据数量,而且接收方的数据缓存能力受到限制,因此利用窗口值作为接收方的基础,使发送方能够以字节界定其发送方的发送方窗口,该字节通常用于限制发送方的数据传输。

      假设识别号码为701,窗口字段为100,这意味着从701开始,发送电文的接收方也具有接收缓存能力接收1,00 B数据(字节序号为701-170)。

      (13) 校验和:相同的UDP校验和

      (14) 紧急指针字段:在本次报告中指定紧急数据字节数,并将紧急数据置于当前提交的数据前。

      (15)选项字段

      (16)填充字段

      二. TCP数据传输可靠性

      1.概述

      (1) TCP在不稳定的IP层服务的基础上实现可靠的数据传输服务。

      (2) 水线机制(与滑坡窗口的协定)
      滑动窗口协议–>GBN,SR

      (3)累积确认

      TCP使用单一的再传送计时器。

      (5) 附带性再传输触发:暂停或重复反控

      (6) 分步骤的办法:交通控制、拥堵控制和重复ACK。

      大部分都已经摆在我们面前了。所有这一切都是关于TCP的超时再传送的可能性,然后是渐进。

      两次超时选择 重新发送

      TCP发件人如果在时限内没有得到确认,则重新发送发送的文本。重复超时的问题在于决定如何设定超时时间。

      TCP采用了一种自适应算法它跟踪报告期间的发送时间和收到相关确认的时间。这两次的区别在于报告的返回和返回时间。

      加权平均往返时间

      样本RT:从发送到接收ACK(被忽视的再传送)所需的时间。
      估计RTT是通过测算若干抽样RTT的平均数和确定RRT的估计值而形成的。
      在这里插入图片描述

      计时器设定的RETO(再传输时间输出)应略大于预计的估计数。

      计时超时选项 :
      在这里插入图片描述
      DVRT代表了 " 采样特特 " 与 " 估计特特 " 之间的差别。
      在这里插入图片描述

      Karn 算法
      只要报告部分再次传送,在确定平均返回时间时,就不会考虑其返回时间的样本。

      TCP发送方事件
      (1) 从申请一级获得的信息
      改变。 序列号是段的第一个字节; 激活计时器并指定超时: 超时间隔

      (2)超时
      将耗时段重新发送并重新开始计时器 。

      (3)收到ACK
      如果验证了先前未知的线段, 并更改了SendBase, 窗口中还有一个身份不明的组, 请重新启动计时器 。

      TCP发送端程序

      重传示例
      在这里插入图片描述
      定时器过期后,发件人会发出新消息。
      计时器时间是相当的:发件人发送两个信息;如果第一个信息不返回发件人,发件人会在计时器过期后再次发送;过一会儿,服务器发出的信息会到达发件人,返回 ACK=100,ACK=120,第二个返回到ACK=120,因为收到两个报告。

      3.快速重传机制

      TCCP正在进行中;如果需要的时间比预期的长,加班时间将重置并增加一倍,从而大幅度增加。

      发件人通过重复 " ACK " 检测组损失,背对背传输若干组,如果其中之一没有出现 " ACK " 检测组损失,可能导致多次 " ACK " 检测组损失,如果其中之一缺失,可能导致 " ACK " 检测组损失,从而重复 " ACK " 检测组损失,从而可能导致 " 多重 " ACK " 。如果发件人为同一数据收到三份日志,则假定数据后部分丢失。超时( 快速重发) 到期前重新发送您的邮件 。

      快速重传算法

      三、TCP流量控制

      流量控制:发报机不会传送太多或过快,导致接收器溢出(缓冲溢出)。
      为管制交通,TCP采用幻灯窗口方法。

      接收器在通信过程中根据接收器自己缓存收据的大小动态调整发送器发送窗口的大小。接收窗口,也就是说,改变TCP报告第一部分“窗口”字段的价值,以限制将信息输入发送方向网络的速度。

      发件人根据其对当前网络堵塞的估计选择的窗口值。拥塞窗口大小与网络的带宽和延迟时间紧密相连。

      接收器为 TCP 连接分配缓冲符 。
      在这里插入图片描述
      可提供的缓冲空间:
      spareroom= RcvWindow
      = RcvBuffer-[LastByteRcvd -LastByteRead]

      接收器将使用片段中的页眉字段。告诉发件人,RcvWindow。发件人限制他发送的数据数量, 但尚未从 ACK 收到 。不超过接收器的免费 RcvWindow 尺寸

      四、TCP连接管理

      C/S 模式用于建立 TCP 连接, 连接形成程序的积极启动程序称为客户端, 被动等待程序称为服务器。
      在这里插入图片描述
      在通过TCP交付数据之前,发送者和接收者必须建立连接。
      建立连接前的准备:
      (1) TCP 可变初始化

      一.Seq表示本报告数据的第一个字节的数字。
      二. 缓存和流量控制数据

      (2) 优胜:将提案国聚集在一起

      (3) 服务器:正在等待消费者连接请求。

      一. 建立联系 -- -- 三次握手

      TCP建立过程图解
      在这里插入图片描述

      第一步客户端的 TCP 先向服务器的 TCP 发送一个 。连接请求报文段这是一张独一无二的纸不含应用层数据SYN标志已设为 1 。客户端 机会 = 随机序列号选择后数 = cliet_isn = (连接请求不传输数据,但消耗序列号)

      第二步当服务器的 TCP 收到连接请求时, 向客户端发送确认, 如果客户端接受创建连接的话 。并分配 TCP 缓存和变量到 TCP 连接中,在该连接中,SYN 和ACK 被指定在确认报告(图中未显示 ACK ) 1 中,检查数字字段值是 cack=client_isn+1, 服务器随机生成初始序列号后序号=server_isn( 承认信件不包含数据, 但也消耗 - 序列号), 并且条目不包括应用程序层数据 。

      第3步:当客户收到确认信息时,向服务器发送确认信息。然后,为了提供连接 一个缓存和一个变量报告字段的 ACK 标记设为 1, 序列号字段为 clit_isn+1, 经确认的编号为 fieldack=server_isn+1 。条目中可包含数据,而数据是使用序列号所必需的。

      在三个成功阶段之后,建立了TCP连接,以便提供数据层。

      注:
      (1) 第二次握手结束后,服务器的资源得到分配。

      (2) 第三次握手结束后,客户资源得到分配,使服务器易受SYN洪水的影响。

      SYN洪泛攻击
      攻击者传送了TCP SYN,当服务器回复了ACK时,攻击者没有确认,导致TCP连接被挂断。半连接状态如果服务器没有得到确认, 它会再次向攻击者发送ACK, 浪费更多的服务器资源 。

      由于这些TCP连接无法三次动摇,如果攻击者发送大量TCP连接,服务器上的这些TCP连接将消耗CPU和记忆,因为它们处于绞刑状态,服务器最终可能死亡,无法为正常用户服务。

      SYN饼干是解决办法。

      2. 连接断开 - 四波

      连接释放过程图解
      在这里插入图片描述
      第一步当客户端想要断开服务器时, 发送一个到服务器 。连接释放报文段,并停止提供数据,自愿关闭TCP连接,即FIN标志设为1, 后继=u(先前发送数据的最后一个字节加1),而FIN条目即使不包含数据,也消耗一个序列号。

      TCP是一个双重工作者,这意味着TCP连接可能被认为有两个数据路径。然而,在发送FIN电文时,FIN的终端无法发送数据,因为数据访问渠道之一关闭,而另一方能够发送数据。

      第二步一旦服务器获得连接发布部分,即发出确认函,该部分有自己的序号V(相当于先前传输数据的最后字节加1),即发出确认函。

      目前客户-服务器连接已终止 。TCP连接仅被部分封锁。如果服务器提供数据,客户端必须仍然接收数据,即服务器与客户端的连接没有关闭。

      第三步当服务器发送 FIN=1 连接发布信息时, 它应该告诉 TCP 它不再有数据可以转发给客户端 。

      第四步当客户获得连接发布段落时,必须用 ACK 字段设定为 1 来发送确认 。TCP 连接当时尚未发布, 因此客户在启动连接关闭前必须等待定时器设定 2MSL 。 不过, 只要服务器收到客户计算机的确认, 服务器就关闭 。

      注:在连接和释放过程中,ACK、SYN和FIN必须等于1。

      连接时的客户端和服务器状态 :
      在这里插入图片描述

      五、TCP拥塞控制

      1.基本原理

      拥塞控制防止将过多的数据注入网络,保证网络路由器或连接不超载

      当交通堵塞发生时,终点不知道交通堵塞的复杂程度,通信连接的终点往往因交通堵塞而导致通信时滞。

      交通控制与混合控制
      相同点:它们都通过调整发报机传送数据的速度来获得控制。

      不同点:
      选区控制是一种世界性程序,使网络能够通过吸收所有主机、路由器和限制网络传输性能的其他因素,抵制现有的网络负荷。

      流动控制经常被用来指点到点的交通控制,即接受发送者的终端控制,它所做的只是调节发送者提供数据的速度,以便接收者能够接收数据。

      控制原理:
      (1) 发送率受发送者的限制。
      当CongWin的大小改变时,交通控制会到哪里去?

      (2) CongWin(CongWin)(统一窗口):根据观察到的网络拥堵情况改变交付率的动态调整。

      (3) 如何探测网络拥挤区域?
      损失事件 = 超时或三次重复ACK,发件人在损失事件发生后降低费率。

      (4) 如何以合理方式改变发送率?
      一. 间接减少 -- -- 增加:AIMD
      2.慢启动: SS

      2.慢启动(SS)

      理由:一旦建立了联系,就会成指数增长。

      当TCP首次连接并开始交付TCP部分时,先令的压缩窗口CongWin=1,是MSC报告部分最长的时段之一。

      收到新段落确认后,在CongWin中增加一个,即额外的 MSS,这是逐步扩大发件人压缩窗口CongWin的一种方式,这将使该组更能接受注入网络,因为开始时提供的带宽可能大大于最初的传输率。
      在这里插入图片描述
      指数增长:每个RRT(也称为传输轮)将CongWin翻倍,以极小的起始速度,但逐渐加快速度,获得相对的ACK以采取行动。

      三.AIMD(增加-乘数)

      理由:逐渐提高交付率,同时仔细监测现有带宽,直至损失发生。

      加性增每个RRT在CongWin中增加一个 MMS-无凝解
      乘性减输了之后,一半孔文也被称为快恢复

      指数发展何时应当由线性增长取代(以避免抽搐)?

      设定可变阈值, 将拥堵窗口加到缓缓起点的缓缓起点, 然后使用 AIMD( 人群避免) 来避开人群 。
      在这里插入图片描述

      在损失发生时损失事件之前,Win的长期价值的1/2的阈值被设定在损失发生时损失事件之前的最低限值上。

      当压缩窗口为16千兆瓦时,是加班,如果在以下四个RTT中成功传输TCP,那么所有TCP都是在第四个RRT小时内传输的。
      如果您得到肯定答案, 抽搐窗口的大小是多少?

      总结

      以下是一个提示:这是一篇文章的概要:

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

          热门文章

          文章分类