TCP可靠数据传输

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

TCP的可靠数据传输

1.TCP保证可靠数据传输的方法

TCP主要提供了检验和、序号/确认号、超时重传、最大报文段长度、流量控制等方法实现了可靠数据传输。

检验和

通过检验和的方式,接收端可以检测出来数据是否有差错和异常,假如有差错就会直接丢失该TCP报文段。

序号/确认号

序号:TCP传输时将每个字节的数据都进行了编号,这就是序号,一个报文段的序号字段因此是该报文段首字节的字节流编号。

确认号:主机 A 填充进报文段的确认号是主机 A 期望从主机 B 收到的下一字节的序号。

tcp发送数据,杂篇,tcp/ip,网络,服务器

在上图中,通过序号和确认号,只要发送端有一个报文段传输,接收端没有通过确认号回应(ACK用来保证确认号是有效的),都会重发。或者接收端的响应报文段在网络中丢失了,导致发送端没有收到,也会重发数据。这就可以保证数据的完整性。

超时重传

在进行TCP传输时,TCP每发送一个报文段,都会在一个超时间隔内等待接收方发送回一个ACK确认报文段,如果在这个超时间隔内没有收到ACK确认报文段就会触发超时重传,TCP发送端就会重新发送此报文段。

这个超时间隔是按照3.5.3节的方法动态计算的

最大报文段长度:MSS

在建立TCP的时候,双方约定一个最大报文段长度(MSS)进行发送,重传的时候也是根据这个长度进行重传。

流量控制

        一般来说,我们总希望数据传输的更快一些。但如果发送方把数据发得过快,接收方就可能来不及接收,这就会造成数据的丢失。流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收。
        利用滑动窗口机制可以很方便地在TCP连接上实现发送方流量控制。通过接收方的确认报文中的窗口字段,发送方能够准确地控制发送字节数。

        TCP通过让发送方维护一个称为接收窗口的变量来提供流量控制。通俗的说,接收窗口用于给发送方一个指示:该接收方还有多少可用的缓存空间。因为TCP是全双工通信,在连接两端的发送方都各自维护一个接收窗口rwnd,rwnd是动态变化的,下图对变量rwnd进行了图示。

tcp发送数据,杂篇,tcp/ip,网络,服务器

接收窗口rwnd由以下公式得到:

rwnd = RcvBuffer - [LastByteRcvd - LastByteRead]

其中,

LastByteRcvd:接收方上的应用程序从缓存读出的数据流的最后一个字节的编号。

LastByteRead:从网络中到达的并且已放入接收方的接收缓存中的数据流的最后一个字节的编号。

LastByteRcvd - LastByteRead <= RcvBuffer

        接收方通过把当前的rwnd值放入它发给发送方的报文段接收窗口字段中,通知发送方它在该连接的缓存中还有多少可用空间。开始时,接收方设定rwnd = RcvBuffer。

        发送方轮流跟踪两个变量, LastByteSent和LastByteAcked,这两个变量的意义很明显,注意到这两个变量之间的差 LastByteSent - LastByteAcked,就是发送方发送到连接中但未被确认的数据量, 通过将未确认的数据量控制在值 rwnd 以内,就可以保证发送方不会使接收方的接收缓存溢出。 因此,发送方在该连接的整个生命周期须保证
LastByteSent - LastByteAcked <= rwnd

滑动窗口机制:缓存中会有一个窗口,这个窗口中全部都是发送方已发送但未收到响应ACK的报文段,当窗口中最早的那个已发送但未收到响应收到了响应报文段之后,滑动窗口会右滑。

2.超时间隔加倍

TCP重传具有最小序号的还未被确认的报文段时,如果TCP下次重传的还是此分组,那么会将此分组的超时定时器的时间间隔增加为原先的二倍。

3.快速重传

TCP发送方会在超时事件发生之前通过注意是否有3个冗余的ACK来决定是否重新发送冗余ACK所对应的报文段及之后的报文段。

如果TCP发送方接收到对相同数据的3个冗余ACK,它会把这当做一种暗示,说明跟在这个已被确认过3次的报文段之后的报文段已经丢失,TCP就执行快速重传。

超时间隔加倍和快速重传只是大多数TCP实现中所做的一些修改,并非所有TCP均有此机制文章来源地址https://www.toymoban.com/news/detail-680531.html

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

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

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

相关文章

  • 计网 - TCP重传策略大揭秘:确保数据可靠传输的秘诀

    计网 - 传输层协议 TCP:TCP 为什么握手是 3 次、挥手是 4 次? 计网 - TCP三次握手原理全曝光:深度解析与实战演示 计网 - TCP四次挥手原理全曝光:深度解析与实战演示 TCP 实现可靠传输的方式之一,是通过序列号与确认应答 。 在 TCP 中,当发送端的数据到达接收主机时,接收

    2024年01月16日
    浏览(49)
  • tcp/ip:记一次完整的数据包传输过程

    读此文章之前,先弄懂下面5个基本知识点: 封装报文是从上层到下层 (应用层 -- 传输层 -- 网络层 – 数据链路层 -- 物理层), 解封装报文是从下层到上层 。 实际例子:从PC1远程登录服务器(Server)。 数据包传输的过程中, 源IP和目标IP不会变,除非遇到NAT(SNAT或DNAT),源MAC和

    2023年04月08日
    浏览(42)
  • TCP/IP网络编程(二) 套接字协议及其数据传输特性

    关于协议 如果相隔比较远的两人进行通话,必须先决定通话方式,如果一方选择电话,另一方也必须选择电话,否则接受不到消息。 总之,协议就是为了完成数据交换而定好的约定。 创建套接字 协议族 通过socket函数的第一个参数传递套接字中使用的协议分类信息,此协议

    2024年02月10日
    浏览(62)
  • Socket TCP/IP协议数据传输过程中的粘包和分包问题

    一:通过图解法来描述一下分包和粘包,这样客户更清晰直观的了解: 下面对上面的图进行解释: 1.正常情况:如果Socket Client 发送的数据包,在Socket Server端也是一个一个完整接收的,那个就不会出现粘包和分包情况,数据正常读取。 2.粘包情况:Socket Client发送的数据包,

    2024年02月12日
    浏览(44)
  • 数据链路层(MAC)、网络层(IP)、传输层(TCP/UDP)抓包分析

    OSI模型(OSI model),开放式系统互联通信参考模型(英语:Open System Interconnection Reference Model,缩写为 OSI)。 抓包通常抓取数据链路层、网络层、传输层的包。 OSI主要关注5层,数据从上至下逐级封装,加入每层的头部信息,在物理层转换为比特率发送; 接收端使用逆向顺序

    2024年02月16日
    浏览(53)
  • 详解TCP/IP协议第三篇:通信数据在OSI通信模型的上下传输

    😉😉 学习交流群: ✅✅1:这是孙哥suns给大家的福利! ✨✨2:我们免费分享Netty、Dubbo、k8s、Mybatis、Spring...应用和源码级别的视频资料 🥭🥭3:QQ群:583783824   📚📚  工作微信:BigTreeJava 拉你进微信群,免费领取! 🍎🍎4:本文章内容出自上述:Spring应用课程!💞💞

    2024年02月09日
    浏览(44)
  • 通信模型四层(TCP/IP)、五层、七层(OSI)的作用、协议及数据传输单位

    四层模型 五层模型 七层模型 每层作用 物理层:传输比特流 数据链路层:控制网络层和物理层之间的通信 网络层:IP寻址和路由选择 传输层:建立、维护、管理端到端连接 会话层:建立、维护、管理会话连接 表示层:数据格式化,加密、解密、 应用层:为应用程序提供网

    2024年02月03日
    浏览(46)
  • UDP(用户数据报协议)和TCP(传输控制协议)是互联网协议(IP)中两种主要的传输层协议

    您的描述是正确的。UDP(用户数据报协议)和TCP(传输控制协议)是互联网协议(IP)中两种主要的传输层协议。他们之间有几个重要的区别,其中之一就是建立连接的方式。 连接方式: • TCP:在进行数据传输之前,需要通过三次握手(3-way handshake)建立连接。这可以确保

    2024年02月02日
    浏览(116)
  • TCP/IP四层模型对比OSI七层网络模型的区别是啥?数据传输过程原来是这样的

    一、TCP/IP四层模型对比OSI七层模型 它们两个定义的一些功能和协议都是差不多的。TCP/IP四层协议模型比我们的七层少了三层,把我们的数据链路层和物理层放在一层里面了,叫做数据链路层(网络接口层),对应网络协议也没有变。 网络层和传输层是非常重要的,所以也没

    2024年02月14日
    浏览(43)
  • 【NVIDIA JETSON AGX XAVIER】与个人笔记本(win11)建立TCP-IP连接传输数据(含源码)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 NVIDIA JETSON AGX XAVIER当作客户端 个人笔记本(win11)当作服务器 首先要将Xavier与笔记本通过网线连接起来,实现Xavier联网(两者 可以相互ping通 就可以)并且需要知道 笔记本的ip地址 (假如现在是192.16

    2024年03月17日
    浏览(56)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包