一、回答这个问题之前,要考虑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三次握手,四次释放图:

【编辑推荐】

【责任编辑:赵宁宁 TEL:(010)68476606】

点赞 0

服务器传递文件丢包怎么回事,TCP传输协议中如何解决丢包问题相关推荐

  1. ios 与服务器传递文件,iOS开发 如何跨系统传输文件 如:茄子快传、快牙

    0.分析 不管是不是跨平台,利用网络来传输数据,必须先规定好链接方式(网络)和通讯方式(协议). 按照现在的应用场景,分析,其实需要实现的是一个点对点(P2P)交换数据的功能: 网络发现(两个设备相互 ...

  2. windows查看linux文件工具,「实用工具」介绍几款Windows系统与Linux服务器传递文件的工具...

    本文主要介绍几款用于和linux服务器传递文件的工具 WinSCP WinSCP是一个Windows环境下使用SSH的开源图形化SFTP客户端.同时支持SCP协议.它的主要功能就是在本地与远程计算机间 ...

  3. TCP/IP协议中的一些常用端口简单讲解

    (源自http://bbs.360.cn/3232114/17010996.html) 那么TCP/IP协议中的端口指的是什么呢?如果把IP地址比作一间房子 ,端口就是出入这间房子的门.真正的房子只有 ...

  4. TCP之三:TCP/IP协议中backlog参数(队列参数)

    目录: <TCP洪水攻击(SYN Flood)的诊断和处理> <TCP/IP协议中backlog参数> TCP建立连接是要进行三次握手,但是否完成三次握手后,服务器就处理(ac ...

  5. TCP/IP协议中的端口

    本文所述端口都是逻辑意义上的端口,是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等. 我们这里将要介绍的就是逻辑意义上的端口. ...

  6. 利用TCP传输协议实现基于Socket的聊天程序(高级版_多线程)

    大家好,在上篇<利用TCP和UDP协议,实现基于Socket的小聊天程序(初级版)>博客中,所写程序只是实现简单的连接通信,基于控制台实现,运用了TCP和UDP两种传输协议.今天我和大家分 ...

  7. tcp/ip协议中消息传输对帧消息的操作

    2019独角兽企业重金招聘Python工程师标准>>> 接口:Framer.java: package com.tcpip;import java.io.IOException; i ...

  8. 在tcp/ip协议中以BigEndian方式的编码与解码

    2019独角兽企业重金招聘Python工程师标准>>> package com.tcpip;/*** 在tcp/ip协议中以BigEndian方式的编码与解码* @author ** ...

  9. TCP传输过程中丢包问题

    TCP协议本身是保证传输的数据完整性不会丢数据的. 如果通信中发现缺少数据或者丢包, 那么,最大的可能在于程序发送的过程或者接收的过程出现问题. 例如服务器给客户端发大量数据,Send的频率很高, 那 ...

最新文章

  1. 数字货币普涨 比特币现金算力暴涨21.45%
  2. 49.SCVMM管理下的Hyper-V到Azure的异地(Azure)容灾
  3. TCGA免疫浸润评价数据库,TIMER 2.0 使用指南
  4. 推荐五款浏览Github必备的Chrome插件
  5. 刚刚,OpenStack 第 19 个版本来了,附28项特性详细解读!
  6. python医学数据挖掘_GitHub - SSSzhangSSS/Python-Data-mining-Tutorial: Python数据挖掘教程
  7. Java打war包or打jar包
  8. 机器学习笔记(十七)——EM算法的推导
  9. @codeforces - 553E@ Kyoya and Train
  10. Struts xml中Action的method与路径的三种匹配方法
  11. JavaScript运算符及转义字符
  12. mysql官网下载详细教程图文
  13. 华为服务器麒麟系统,麒麟服务器
  14. Phoenix踩坑填坑记录
  15. HomeKit 设备接入协议
  16. 超级计算机深蓝比卡斯帕罗夫聪明吗,【图片】卡斯帕罗夫对深蓝棋谱及简析【国际象棋吧】_百度贴吧...
  17. mysql查缺补漏(一) and or优先级和多表join
  18. 超详细 LaTex数学公式
  19. python 实现多核 CPU 并行计算
  20. 科研级试剂材料磷脂聚乙二醇马来酰亚胺 DSPE-PEG-MAL----为华生物

热门文章

  1. Python数据分析之一元线性回归
  2. 精品素材 – 24款扁平风格 PSD 格式图标免费下载
  3. RHEL5 基于虚拟用户验证的VSFTP服务器
  4. 洛谷P2278操作系统
  5. Cocos2d-3.x Android环境搭建
  6. cocos2d-JS (四)如何学习
  7. NSArray 所有基础点示例
  8. JavaScript 图片切割效果(带拖放、缩放效果)
  9. 【Java】使用springboot框架中的注解@ManyToOne遇到的坑
  10. 多线程的创建方式之实现Callable接口