热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

关于TCP不丢包的疑问?

基于TCP发送文件如果出现客户端发送某个包时,发送成功,而服务器接受失败那我就需要让客户端再重新发一次这个包可是我怎么才能知道是哪个包服务器接受失败呢?还有TCP是不会丢包的,那我
基于TCP发送文件
如果出现客户端发送某个包时,发送成功,而服务器接受失败
那我就需要让客户端再重新发一次这个包
可是我怎么才能知道是哪个包服务器接受失败呢?

还有TCP是不会丢包的,那我说的这种情况除了网路断开,应该是不会出现的对么?
只要我发送时成功的,服务器一定可以接受到么?

9 个解决方案

#1


TCP本身已经做了出错处理,如果接受失败会做相应的处理,是在物理层实现的,网卡上!

#2


当然不知道了,这个就像断点续传,TCP不丢包,是他有重传机制,在传输中,网络不中断时不会丢包的,但是网络中断了,肯定不行了撒。
1,不知道
2,对

#3


引用 2 楼 jasonm2008 的回复:
当然不知道了,这个就像断点续传,TCP不丢包,是他有重传机制,在传输中,网络不中断时不会丢包的,但是网络中断了,肯定不行了撒。
1,不知道
2,对


1.那断点重传的机制原理是什么呢?
他是怎么知道到底应该从哪个包传起来呢?

2.那只要send返回的是true,那服务器那recv一定是成功的,是吧?只要网络是不断开的。

#4


不一定。
很多时候,包其实在路上被某种为之原因给弄没了·~

当然,你接受的时候,你可以直接接受带tcp头的数据,这样子你就可以分析了不是???

建议,还是自己分包。然后服务器端进行确认。
如果某个包丢了,服务器发回包号,然后客户端重新发送

#5


TCP保证这一点:如果超时,则重传。
对了,比如被除非被 过滤掉了

#6


引用楼主 wangsiyuanoo 的回复:
基于TCP发送文件
 如果出现客户端发送某个包时,发送成功,而服务器接受失败


客户端发送成功,而服务器接受失败,这个我的看法如下:

1.只要客户端发送函数send返回成功,则发送的数据一定到了服务器端。(因为只有当服务器端收到数据并返回ack后,send才会成功。所以网络如果中断了,也不会出现发送成功,而服务器接受失败的情况)。

2.客户端发送函数send返回成功,虽然说明数据已经到了服务器端(具体说应该是数据被驱动程序保存在内核空间),但还是有可能服务器端处理该数据的应用程序在得到该数据之前,突然停电了,或者系统死机了,这种情况下才会出现发送成功,而服务器接受失败(准确说应该是服务器端处理该数据的应用程序接受失败)。

#7


引用 4 楼 lbjfeng 的回复:
不一定。
很多时候,包其实在路上被某种为之原因给弄没了·~

当然,你接受的时候,你可以直接接受带tcp头的数据,这样子你就可以分析了不是???

建议,还是自己分包。然后服务器端进行确认。
如果某个包丢了,服务器发回包号,然后客户端重新发送

对,我现在是自己分包,我也在每个包上加了包号,
但问题是,比如客户端发了第20个包给服务器,服务器包接受失败了,那都读不出这个包里包号,怎么返回给客户端说应该重发哪个包呢?

#8


引用 6 楼 fly_1101 的回复:
引用楼主 wangsiyuanoo 的回复:
 基于TCP发送文件
  如果出现客户端发送某个包时,发送成功,而服务器接受失败


 客户端发送成功,而服务器接受失败,这个我的看法如下:

 1.只要客户端发送函数send返回成功,则发送的数据一定到了服务器端。(因为只有当服务器端收到数据并返回ack后,send才会成功。所以网络如果中断了,也不会出现发送成功,而服务器接受失败的情况)。

 2.客户端发送函数send返回成功,虽然说明数据已经到了服务器端(具体说应该是数据被驱动程序保存在内核空间),但还是有可能服务器端处理该数据的应用程序在得到该数据之前,突然停电了,或者系统死机了,这种情况下才会出现发送成功,而服务器接受失败(准确说应该是服务器端处理该数据的应用程序接受失败)。


我的这个看法好像有误,send好像不是要对方回复ack后才返回,准备明天来做个实验看看。

#9


引用 8 楼 fly_1101 的回复:
引用 6 楼 fly_1101 的回复:
 引用楼主 wangsiyuanoo 的回复:
  基于TCP发送文件
   如果出现客户端发送某个包时,发送成功,而服务器接受失败


  客户端发送成功,而服务器接受失败,这个我的看法如下:

  1.只要客户端发送函数send返回成功,则发送的数据一定到了服务器端。(因为只有当服务器端收到数据并返回ack后,send才会成功。所以网络如果中断了,也不会出现发送成功,而服务器接受失败的情况)。

  2.客户端发送函数send返回成功,虽然说明数据已经到了服务器端(具体说应该是数据被驱动程序保存在内核空间),但还是有可能服务器端处理该数据的应用程序在得到该数据之前,突然停电了,或者系统死机了,这种情况下才会出现发送成功,而服务器接受失败(准确说应该是服务器端处理该数据的应用程序接受失败)。


 我的这个看法好像有误,send好像不是要对方回复ack后才返回,准备明天来做个实验看看。

确实是这样的,你send完你马上用setsockopt设置关闭时间,用closesocket关闭确实有时候会丢数据。

推荐阅读
  • 开发网站你需要知晓的部分专用术语
      越来越多的企业和个人都在拥有属于自己的网站门户,首当其冲的就是你得知晓几个网站方面的专业术语,先是中就有好多的客户不明白这些,造成误会是正常的,那不如我们对它有个大致的了解,这样就不容易感觉 ... [详细]
  • 参加我们的第七届年度调查。有些来了又去了,但是今天有数百种Linux发行版运行良好。发行版,程序包管理器和桌面的结合为Linux用户创建了无数的定制环境。尽管存在一些共性,但我们也 ... [详细]
  • CentOS8.4 安装PHP7.4.25
    1、下载官网:https:www.php.netdownloads#cdmydata#wgethttps:www.php.netdistributionsphp ... [详细]
  • crossorigin注解添加了解决不了跨域问题_CORS与@CrossOrigin详解
    1、跨域的基本概念a、跨域的解释要了解跨域,首先需要知晓浏览器的同源策略,简单的说就是两个请求协议、端口、主机都相同,则两个请求具有相同的 ... [详细]
  • 这篇文章将为大家详细讲解有关C#开发技巧有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。C#开发技 ... [详细]
  • 一篇文章帮助您了解什么是云游戏以及它的优势和缺点
    云游戏是云计算的一个子类别。与电影和连续剧非常相似,游戏可以流式传输到用户的设备以播放内容。详细了解云游戏、其技术背景、优缺点以及市场上最好的云游戏提供商。相信随着技术的不断发展, ... [详细]
  • 通过CreateDirectory命令创建相应的Directory之后,可以将目录的访问权限授予其他用户,这样其他用户就能通过外部表访问很多主机上的文件,而不需要登录到数据库服务器 ... [详细]
  • 泛圈企业云盘:打造高效灵活的协同平台提高企业办公效率
    云计算作为一种新的模式,给企业信息化的发展带来了巨大的变化。其中,企业云盘是一种可以快速被接受的企业云应用,因为在企业云盘存储中,所有云服务带来的风险都会大大降低。将文档管理系统本 ... [详细]
  • 北京时间6月21日上午消息,AMD正尝试重新进入服务器处理器市场。该公司将获得微软和百度的帮助。两家公司宣布,将在数据中心中使用AMD最新的Epyc芯片 ... [详细]
  • HTTP请求响应的步骤第一步:第二步:第三步:第四步:第五步第一步:1.客户端连接到Web服务器⼀个HTTP ... [详细]
  • 以下内容|尾部_quarkus实战之一:准备工作
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了quarkus实战之一:准备工作相关的知识,希望对你有一定的参考价值。欢迎访问我的GitHub ... [详细]
  • IT管理类培训,你想了解的全都在这里
    IT类的培训,主要分为技术类和管理类。不断有小伙伴问起各种培训的价值,内容和对自己职业发展的帮助,希望这篇帖子可以给大家一些启发。首先用 ... [详细]
  • 局限性_Scrum框架的局限性
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Scrum框架的局限性相关的知识,希望对你有一定的参考价值。在很多工作坊的讨论中, ... [详细]
  • 摘要:本文中,我们将进一步理解微服务架构的核心要点和实现原理,为读者的实践提供微服务的设计模式,以期让微服务在读者正在工作的 ... [详细]
  • 事务是通过MULTI命令开始的,在非事务状态下客户端发送的命令会被立刻执行,而在事务状态下,除了EXECWATCHDISCARD这几个命令外,redis会将命令保留在事务队列里。 ... [详细]
author-avatar
AYAKASHIZ
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有