tcp传输协议中如何解决丢包问题的方法

一、解答之前,要考虑TCP协议为什么会丢包,在什么样的情况下会丢包。

1、TCP协议定义(Transimission Control Protocol)是以一种面向连接的、可靠的、基于字节流的传输层通信协议。

2、TCP是基于不可靠的网路实现可靠传输,肯定会存在丢包问题。

3、如果在通信过程中,发现缺少数据或者丢包,那边么最大的可能性是程序发送过程或者接受过程中出现问题。

例如:我有2台服务器 ,A和B服务器。

A服务器发送数据给B服务器频率过高时,B服务器来不及处理,造成数据丢包。(原因可能是程序逻辑问题,多线程同步问题,缓冲区溢出问题)

如果A服务器不对发送频率进行控制,或者数据进行重发的话,那么B服务器收到数据就会少。就会造成丢失数据

二、TCP协议丢包后,如何解决丢包的问题

为了满足TCP协议不丢包。TCP协议有如下规定

1、数据分片:发送端对数据进行分片,接受端要对数据进行重组,由TCP确定分片的大小并控制分片和重组

2、到达确认:接收端接收到分片数据时,根据分片数据序号向发送端发送一个确认

3、超时重发:发送方在发送分片时设置超时定时器,如果在定时器超时之后没有收到相应的确认,重发分片数据

4、滑动窗口:TCP连接的每一方的接受缓冲空间大小固定,接收端只允许另一端发送接收端缓冲区所能接纳的数据,TCP在滑动窗口的基础上提供流量控制,防止较快主机致使较慢主机的缓冲区溢出

5、失序处理:作为IP数据报来传输的TCP分片到达时可能会失序,TCP将对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层;

6、重复处理:作为IP数据报来传输的TCP分片会发生重复,TCP的接收端必须丢弃重复的数据;

7、数据校验:TCP将保持它首部和数据的检验和,这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。如果收到分片的检验和有差错,TCP将丢弃这个分片,并不确认收到此报文段导致对端超时并重发

tcp传输协议中如何解决丢包问题的方法图1
tcp传输协议中如何解决丢包问题的方法图2

tcp传输协议中如何解决丢包问题的方法图3

TCP在不可靠的网络上实现可靠的传输,必然会有丢包。TCP是一个“流”协议,一个详细的包将会被TCP拆分为好几个包上传,也是将会把小的封裝成大的上传,这就是说TCP粘包和拆包难题。

但是许多人有不同的理解。TCP协议本身确保传输的数据不会丢失完整性。如果在传输过程中发现数据丢失或数据包丢失,最大的可能性是在发送或接收程序的过程中出现问题。

tcp传输协议中如何解决丢包问题的方法图4

例如,服务器向客户端发送大量数据,并且发送频率非常高,因此发送链接中很可能会出现错误(1、程序处理逻辑错误;2、多线程同步问题;3、缓冲区溢出等)如果发送失败得不到处理,那么客户端收到得数据将少于理论数据,这将导致数据丢失与数据包丢失。这种现象,其实本质上来说不是丢包,也不是丢数据,只是因为程序处理有错误,导致有些数据没有成功地被socket发送出去。

关于send函数的问题:

首先必须明确send函数做了什么。 他是将数据传递给本地TCP层,还是将数据传递给应用层,确认接收方TCP层后再返回。在后者的情况下,你说的没错,其实不然。 那是由于nagle算法不能使用了,即该算法将send函数接收的小数据汇总成大数据包发送。

即使send函数能进行数据发送,对方也不一定被接受。 TCP协议只是在传输层履行义务,send函数只是应用层起到向TCP层传递数据的作用,除此之外与TCP层没有任何关系。

常见的解决方案包括拆包、添加包头和发送组合包。如果服务器或客户端断开连接,一般会使用心跳测试。

心跳测试:每隔一段时间向服务器发送数据包。为了节省资源,通常会发送空数据包。如果发送失败表明套接字已断开,此时需要根据特定条件释放资源并重新连接。

TCP传输可以保证数据交换的可靠性,这意味着一台主机将数据正确地传输到目标计算机,目标计算机的协议栈有一定的限制,如果不及时处理在目标计算机上接收到的数据,堆栈就会溢出。

这种溢出不是由TCP协议本身引起的,而是由系统的IP协议栈的缓冲区溢出引起的。

本文来自投稿,不代表天一生活立场,如若转载,请注明出处:http://tiyigo.com/it/37225.html

(0)
上一篇 2023-07-27 16:37
下一篇 2023-07-28 09:02

相关推荐

  • 守望先锋如何练源氏(守望先锋源氏教程)

    这里先提个醒:在21个英雄里面,源氏应该是要花最多时间和精力去精通的英雄了。所以相应地,今天这期的篇幅也会比较长。拿源氏与之前猎空相比,一个最大不同,是他跳跃和爬墙。猎空因为有闪现…

    2023-04-09
  • 如何将电脑连接的无限wifi共享给手机上

    “网络极客”,全新视角、全新思路,伴你遨游神奇的网络世界。 电脑端将网络共享至手机使用,一般有两种方式: 一种是查看已经连接的无线WiFi信号密码,并供手机端使用; 一种是通过将电…

    2023-06-24
  • 电信宽带出了问题该怎么处理,电信宽带微信收钱延迟怎么解决

    现如今网络飞速发展,生活中处处需要网络。一旦缺少互联网信息,我们的生活就会陷入一片“混乱”,因此,不定期维护宽带及排障是关键。 中国电信想用户所虑,急用户所需。当您家的电信宽带出现…

    2023-05-06
  • gtx新一代显卡比10系提高多少

    GTX10系显卡下一代究竟命名为11系还是20系都不好下定论,但是性能上我们可以大体推测一下。 核心架构升级 下一代显卡很可能不会采用Volta架构,就Volta架构目前最强的消费…

    2023-05-17
  • dns为什么会失效

    DNS是什么意思? DNS是英文Domain Name System的缩写,中文名为域名系统。DNS的作用就是根据域名查出IP地址。 计算机只能识别“15.31.91.12”、“1…

    电脑教程 2023-03-21
  • ai褶皱工具怎么变大变小

    01.宽度工具(shift+W),只针对路径描边。 1.用来路径描边宽度。在路径描边上点击不动进行拖动可以放大或缩小描边的粗细,多动控制点可以调整位置。 2.用宽度工具点击控制点后…

    2023-03-14
  • 怎样卸载数据库,已有数据库怎么卸载

    Oracle数据库卸载不单单要卸载程序本身,还要清除注册表中的相关数据,否则,再次安装时可能会出现错误。 一、卸载程序 1.首先第一步,在开始菜单里面找到”Univer…

    2023-03-22
  • 怎么使用ps软件里的画笔预设颜色

    自定义画笔可以将自己的签名、标志、图像等定义成画笔笔头。这样一来如果你想对自己照片添加水印或者签名那就变得很简单,只需使用画笔选择好颜色在图像上直接点击即可。这种使用画笔添加的水印…

    2023-04-12
  • 如何运用excel中的VLOOKUP函数比对数据

    =vlookup(查找值,查找范围,查找列数,0) 一般后面就写0就可以了,逗号正常写。 比如在e2 张飞,在a:b列对应的年龄。 我是大海,微软认证Excel专家,企业签约Pow…

    2023-01-30
  • win10电脑重装系统后连不上网

    电脑重装WIN10以后,连不上网络,一般会有三种情况:一是网卡驱动没有安装好,二是网络设置有问题,一是网卡硬件出了问题。 要解决这些问题,其实很容易。让我具体道来: 1、网卡硬件出…

    2023-07-24