|
|
51CTO旗下网站
|
|
移动端

TCP传输协议中如何解决丢包问题

TCP传输协议中如何解决丢包问题?回答这个问题之前,要考虑TCP协议为什么会丢包,在什么样的情况下会丢包。

作者:Tom-时光来源:Linux运维技术之路|2019-08-15 07:43

一、回答这个问题之前,要考虑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次握手」建立连接?1个例子教会你
  3. 一组图带你读懂TCP连接的终止——四次挥手的原理~
  4. TCP/IP模型的通俗理解,从Hello World实例开始
  5. 12分钟带你搞定OSI七层模型与TCP/IP五层模型
【责任编辑:赵宁宁 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

订阅专栏+更多

这就是5G

这就是5G

5G那些事儿
共15章 | armmay

96人订阅学习

16招轻松掌握PPT技巧

16招轻松掌握PPT技巧

GET职场加薪技能
共16章 | 晒书包

361人订阅学习

20个局域网建设改造案例

20个局域网建设改造案例

网络搭建技巧
共20章 | 捷哥CCIE

739人订阅学习

读 书 +更多

J2EE开发全程实录

J2EE是目前企业级软件开发的首选平台。本书从架构的角度讲解了一个完整的J2EE系统的搭建。内容包括:正则表达式、JSP、Swing、XML等技术在...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊

51CTO服务号

51CTO官微