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

相关推荐

  • android studio按钮点击后进入下一界面

    直接上实例: public class BackKeyTest extends Activity { /** Called when the activity is first c…

    2023-09-02
  • 电脑关不了机怎么办?,台式电脑关不了机怎么办

    电脑是一种很常用的办公/娱乐工具,在使用时间长之后,可能就会出现一些让人烦心的故障,比如本文的“关不了机”就是其中之一,下面咱们就一起来看看有哪些解决方法吧! 某些程序未关闭,造成…

    2023-01-31
  • 天文望远镜真的能看到星球吗

    。在的描述中,前面对于光速以及光年的理解是没有错的,问题就在于题主对天文望远镜是如何看到物体产生了极大的误解。事实上,这是一个十分普遍的误解,很多人误以为天文望远镜看到东西是因为望…

    2023-08-16
  • 组装电脑的基本步骤有哪些

    安装步骤 安装微处理器和RAM 首先,您得拆开主板和微处理器芯片的包装。芯片上有一个带标记的角,主板的芯片插口上也有一个带标记的角,这两个角必须对齐。对齐后,将微处理器放入插口中。…

    电脑教程 2023-01-16
  • potplayer播放操作指南

    Potplayer用了很多年,下文可以说是老司机的玩家心得,全是干货。 这个播放器本身没有什么核心竞争力,它能做到的,其他竞争对手通常也能做到,没什么好吹的。这个年头,还说支持多少…

    2023-08-24
  • 素描怎么画正方体的最好的方法

    初学者怎么画好素描当中的圆球体,按照以下几点解答提问者的问题,希望能得到帮助。 一 圆球体的轮廓是极难画准的,初学者先从正方形高宽尺度画,加上十字线来定位,由方及圆(如图),这样反…

    2023-03-17
  • 什么牌子的ssd固态硬盘好呢(什么品牌ssd固态硬盘好)

    固态硬盘的选择参数对比可以分为:主控、价格、温度、材质(影响速度)。 (一)材料分为:MLC颗粒、TLC颗粒。 MLC颗粒:速度较快,寿命较长、价格较贵; TLC颗粒:速度较慢,寿…

    2022-12-28
  • dns为什么会失效

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

    电脑教程 2023-03-21
  • 有什么电脑软件可以录电脑播放的呢

    Windows 10上自带的也有游戏录制工具,按Win+G呼出,可录制游戏和任何一个桌面程序,可以截屏。 不能控制录制的质量,录制出来的视频大小适中;只能录制一个程序,切换程序会导…

    2023-04-14
  • 笔记本电脑卡顿如何解决

    笔记本电脑卡顿问题怎么解决? 笔记本电脑卡顿问题怎么解决? 笔记本电脑运行很卡很慢如何解决,可以这样说,任何电脑的问题都可以从硬件和软件两个方面来分析处理。 一,硬件问题。 由于电…

    2023-02-07