理解TCP:传输控制协议的特点和机制

这篇具有很好参考价值的文章主要介绍了理解TCP:传输控制协议的特点和机制。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

文章解释了TCP的拥塞控制策略,包括慢启动、拥塞避免、快速恢复和快速重传。

TCP—传输控制协议是一种面向连接的可靠传输协议。可靠,有序,无丢失和无传输

特点:

  • TCP是一种面向连接的传输协议

  • 每一条TCP连接有且只能存在两个端点,形成一种端对端连接形式。

  • 可靠、有序、无丢失和无重复

  • TCP时提供全双工通讯

    • 按序到达但是还未被应用程序提取的数据

    • 乱序到达的数据

    • 想要发送的应用层数据

    • 已经发送但未收到确认的数据

    • 发送缓存

    • 接收缓存

  • TCP是面向字节流

    建立TCP连接的时候需要知道内容

源/目IP、源/目端口----->TCP绘画的四元组信息
套接字:IP:port

可靠性

TCP的可靠性是同过四个机制来进行的

  • 确认机制:传输确认每收到一个数据端均需要进行一次确认。

  • 重传机制:当一个数据端中的某个报文丢失,会提醒重传丢失的报文

  • 排序机制:传输一个数据端,呗分为多个报文,从不同路径传输最终到达目的地顺序会被打乱,需要重新排列组合,回复原石报文内容

  • 流控机制(滑动窗口机制):调节窗口大小来,对流量进行控制

    • 窗口大小:指无需等待确认就可以连续发送的最大数据量

确认机制
  • 累计确认

确认序列号表面是接受方期望收到发送方发送的下一个字节的序号;且表示之前的所有数据均已接受—累计确认(默认)

  • 选择确认

若收到的报文段无差错,只是未按序号,中间还缺少一些序号的数据;
通过 选择确认,
可以只传送缺少的数据而不重传已经正确到达接受方的数据。

选择确认机制也是需要进行协商的

排序机制
  • MTU—最大传输单元(针对设备接口的概念)不是固定的,根据链路类型来(e.g.以太网中MTU=1500字节)

  • MSS—最大段长度—TCP分段,在可选项中填充–该参数是需要在TCP建立握手过程中通过前两次SYN报文段来进行协商确定——只有date部分没有传输层段

  • PMTU—路径MTU发现协议—在一条传输路径中各个设备的MTU不相同,需要使用PMTU来确定MTU

    • (工作过程:起始段发送一个向目标地点的数据包,里面除了源目端口其余用0填充,发送到下个比它MTU小的节点,那个设备丢弃该数据包,并且回复一个它的MTU给起点,重复操作直到目标回消息给它)

重传机制

1.超时重传

  • RTT—往返时间(TCP报文发送完成的时刻到接收到该报文对应的ACK报文的时刻的差值)

  • RTO—超时重传时间(TCP超时重传定时器的超时时长)

  • RTO略大于RTT时间—>动态变换的数值,加倍的形式进行变化

    • RTO太大了
      重发就慢,丢了还要过很久才重发,导致TCP连接没有充分利用网络,网络的利用率低,进而导致TCP端到端传输的延时长,性能差。

    • RTO太小了
      重发得太快,会导致没有丢的包就重发。于是网络上存在大量的无意义的重发报文,一来占用大量带宽会,二来会增加网络拥塞,会导致更多的超时,然后更多的超时双导致更多的重发。

2.快速重传

  • 在TCP中,快速重传机制是一种错误控制机制,用于在检测到丢包时快速重传丢失的数据包,如果发送方连续收到三个相同的ACK,它会推断相对应的数据包可能已经丢失,并立即重传该数据包而不是等待重传计时器超时(RTO时间到达)。

    • 如果ACK(n)出现三次则重传数据包n

流控机制—流量控制机制

如何确定丢失的是哪一个报文
TCP,TCP 传输控制协议,TCP 可靠性,TCP 拥塞控制

窗口:指定的是无需等待确认应答,而可以继续发送数据包的最大值。

窗口大小体现在缓存的大小
窗口大小:TCP,TCP 传输控制协议,TCP 可靠性,TCP 拥塞控制

TCP的数据流控制机制是为了确保发送方的数据发送速率不会过快,以至于接收方来不及处理。这个机制通过滑动窗口来实现,它允许发送方在接收方确认接收数据之前发送一定数量的数据。

  1. 滑动窗口:发送方和接收方都维护一个窗口。发送方的窗口限制了它可以发送但还未被确认的数据量,而接收方的窗口限制了它可以接收但还未处理的数据量。

  2. 接收窗口:接收方在确认报文中告诉发送方其接收窗口的大小,这个大小表示接收方还能接收多少数据。如果接收窗口变为0,发送方必须停止发送数据,直到接收窗口的大小再次变为正数。

  3. 发送窗口调整:发送方根据接收到的接收窗口大小调整自己的发送窗口大小,以控制发送速率。

  4. 零窗口探测:如果发送方收到的接收窗口大小为0,它会定期发送零窗口探测报文,以检测接收方窗口是否已经打开(即接收方是否已经处理了数据并有空间接收新数据)。

  5. 窗口更新:当接收方处理了一些数据并有更多空间可用时,它会发送一个窗口更新报文,告知发送方新的接收窗口大小,发送方随后可以根据这个新大小发送更多数据。

TCP要求发送方依据接收窗口rwnd来控制数据的发送量。rwnd等于接收方接收缓存大小减去已存数据量大小 即rwnd变量是可变的。

TCP头部的信息

TCP,TCP 传输控制协议,TCP 可靠性,TCP 拥塞控制

ACK确认位:当ACK=1时,确认序列号有意义,在连接建立后所有传输的报文端都必须将该标记位置为1
SYN同步位:代表连接请求
FIN中止位:表明此报文端发送方数据已发送完毕,要求释放连接。
RST复位:当TCP连接出现严重错误时,必须释放连接,然后重新建立传输连接
URG紧急位:当URG=1时,表面此报文中存在紧急数据,是高优先级数据,应尽快传输给应用层程序处理,不再缓存在排队。配合紧急针使用
PSH推送位:当PSH=1时,接收方应尽快交付数据给应用层程序,

TCP,TCP 传输控制协议,TCP 可靠性,TCP 拥塞控制

拥塞控制

拥塞控制的基本条件。在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能就要变坏,这种情况就叫做拥塞(congestion);若出现拥塞而不进行控制,整个网络的吞吐量将随输入负荷的增大而下降。(就像没有红绿灯的十字路口,会有点堵塞,如果没有交警的疏导,有可能会堵死

TCP的拥塞控制

  • 慢启动

  • 拥塞避免

  • 快速恢复

  • 快速重传

TCP,TCP 传输控制协议,TCP 可靠性,TCP 拥塞控制文章来源地址https://www.toymoban.com/news/detail-845103.html

到了这里,关于理解TCP:传输控制协议的特点和机制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • TCP如何保证传输可靠性?

    文章参考: 《网络是怎样连接的》:https://book.douban.com/subject/26941639/ 《图解网络》:https://www.xiaolincoding.com/network/ 在开始阅读该博客之前,先要好好了解一下 TCP报文头部 到底有那些信息,阅读后续内容时有任何模糊的地方都可以回来这里 查看梳理 ,接下来我来解释一下:

    2024年02月20日
    浏览(15)
  • TCP消息传输可靠性保证

    三次握手 TCP 提供面向有连接的通信传输。面向有连接是指在数据通信开始之前先做好两端之间的准备工作。 所谓三次握手是指建立一个 TCP 连接时需要客户端和服务器端总共发送三个包以确认连接的建立。在socket编程中,这一过程由客户端执行connect来触发。 第一次握手:客

    2024年02月12日
    浏览(11)
  • TCP如何保证传输的可靠性

    TCP采用哪些方式保证数据传输可靠? 答: 1、数据分块:将数据包划分为合适的大小,这样更能适应网络的限制,如果数据发生错误或丢失,只要重传有问题的部分即可,减少重传的数据量。方便进行流量和拥塞控制。 2、数据包有序号,可以根据序号对失序的数据包进行重

    2024年04月11日
    浏览(14)
  • 【HBZ分享】TCP可靠性传输如何保证的?

    ACK机制是发送方与接收方的一个相互确认 客户端向服务端发送连接请求,此时服务端要回馈给客户端ACK,以表示服务端接到了客户端请求,这是第一和的第二次握手 客户端接收到服务端响应后,同样也要回馈服务端的响应,告知服务端我收到了你的回馈,我们可以进行传输

    2024年02月10日
    浏览(15)
  • 2.6 TCP与UDP的可靠性传输

    参考小林图解网络 1.1、超时重传 超时重传,就是在发送数据时,设定一个定时器,当超过指定的时间后,没有收到对方的 ACK 确认应答报文,就会重发该数据。 TCP 会在以下两种情况发生超时重传: 数据包丢失 确认应答丢失 超时重传时间 RTO是一个动态变化的值,其值应该略

    2024年02月09日
    浏览(18)
  • 计算机网络-TCP如何保证传输可靠性

    TCP协议传输的特点主要就是面向字节流、传输可靠、面向连接。 TCP协议如何确保传输的可靠性的? TCP协议保证数据传输可靠性的方式主要有: 1.校验和 2.序列号 3.确认应答 4.超时重传 5.连接管理 6.流量控制 7.拥塞控制 1.校验和 发送方:在发送数据之前计算检验和,并进行校验

    2024年02月05日
    浏览(12)
  • 计算机网络学习09(TCP传输可靠性保障)

    1、TCP 如何保证传输的可靠性? 基于数据块传输 : 应用数据被分割成 TCP 认为最适合发送的数据块,再传输给网络层,数据块被称为报文段或段。 对失序数据包重新排序以及去重: TCP 为了保证不发生丢包,就给每个包一个序列号,有了序列号能够将接收到的数据根据序列号

    2024年02月01日
    浏览(19)
  • 从可靠性的角度理解 tcp

    可靠性是 tcp 最大的特点。常见的用户层协议,比如 http, ftp, ssh, telnet 均是使用的 tcp 协议。可靠性,即从用户的角度来看是可靠的,只要用户调用系统调用返回成功之后,tcp 协议栈保证将报文发送到对端。引起不可靠的表现主要有两个方面,丢包和乱序。对于 tcp 来说,即使

    2024年02月20日
    浏览(13)
  • 【计算机网络】TCP原理 | 可靠性机制分析(一)

    个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【网络编程】【Java系列】 本专栏旨在分享学习网络编程、计算机网络的一点学习心得,欢迎大家在评论区交流讨论💌 无连接:知道对端的IP和端口号就可以直接进行传

    2024年02月03日
    浏览(13)
  • 【计算机网络】TCP原理 | 可靠性机制分析(四)

    个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【网络编程】 本专栏旨在分享学习计算机网络的一点学习心得,欢迎大家在评论区交流讨论💌 接收方在接收到数据后并不立即发送ACK报文,而是等待一定的延迟时间,

    2024年01月16日
    浏览(12)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包