介绍

TCP的一大常见问题在于重复ACK与快速重传。这一现象的发生也是由于性能问题,本章讨论如何发现这一问题以及他们意味着什么。

另一个常见问题是前一片段丢失以及乱序片段。某些情况下,这一现象喻示着故障发生,可能是由于网络问题或是抓包中断。

更多信息

重复ACK与快速重传:

当网速变慢时,重复ACK是可能的原因之一。大多数情况下,重复ACK的发生是由于高延时,延迟的变化,或无法响应ACK请求的慢速终端。

  1. 当重复ACK的数量保持在合理范围时,即1或2个百分比,则可能不是本机问题。
  2. 当有大量的重复ACK时(假设有10个),则可能:
  • 通信链路繁忙引起延迟改变
  • 服务器或客户端无响应
  1. 快速重传是对重复ACK的响应报文。
  2. 下图是该问题的示例。本例中51个重复ACK之后发生了快速重传:

  1. 以下是如何解决该问题:
  • 如果重复ACK和重传数量较少(少于1个百分比),是可以接受的。
  • 如果重复ACK发生在无线网络环境,或是Internet之上的连接,延时或是延时的改变对于这类网络来说很常见,所以也没有什么可做的。
  • 如果发生在组织内的网络,则可能有问题。如果发生在LAN之上,检查严重的问题,例如缓存和CPU负载,慢速服务器,等等。如果发生在WAN之上,查看延时,负载以及线路不稳定。

工作原理

当发现有丢失报文时(期望的序列号没有收到),或者收到了预期之外的序列号。这种情况下,接收端生成一个ACK,声明自己希望收到的下一个序列号。接收方持续生成丢失片段的ACK请求,直到实际收到。

在发送方,当它收到三个相同的ACK(初始ACK和两个重复ACK),就会假设有报文丢失并重传该报文,无论重传计时器是否过期。再次发送的报文称为快速重传。

重复ACK也减少了发往网络的吞吐量。减少了多少吞吐量取决于TCP版本。比较早期的TCP版本中出现了重复ACK,发送方将吞吐量减少为之前的一半。在多个DupACK的情况下,吞吐量减到最小。

下图显示了重复ACK和重传的典型例子,本图中第一次重复ACK将吞吐量降低至大约40%,之后重传将吞吐量减至最小。

乱序报文:

在两端抓包,乱序情况下需要关注三种现象:

  • 先前片段丢失:当前收到报文的序列号高于该连接的下一个期望序列号时,表明之前的一个或多个报文未能到达
  • 乱序报文:当前报文的序列号低于该连接先前收到的报文
  • 先前片段未能捕捉:(Wireshark 1.8.x及以上版本):同先前报文丢失。

何时发生?

用户可能在以下情况看到乱序报文:

  • 连接开始时抓包:当建立连接时抓包,这时,看到连接上的报文没有SYN/SYN-ACK/ACK,因此,Wireshark认为连接有问题。
  • 确实有报文丢失:这时会看到丢失报文重传和/或重复ACK告知发送方重传丢失报文。

上图是报文丢失的典型示例。从图中可见,10.0.0.6尝试浏览站点62.90.90.210。这一过程中, TCP片段每个1420字节发送到web服务器,334到336之间3个报文丢失,338到340之间2个报文丢失。两者Wireshark都有提示:TCP’s previous segment is not captured.

  • 延时变化:这可能是由于报文从源地址到目的地址经由不同的路由。检查这一点可以使用Tracert,在源和目的地址之间查找路由改变。如果在公司内部网络上是可以做到的,例如,在路由器上配置trap。
  • 数据捕捉问题:可能报文正常收发,但Wireshark没有捕捉到。可能有以下几种原因:
    • 数据量比较大时,Wireshark在高比特率的情况下可能会丢失报文(高于150-180 Mbps)。要避免这一问题,使用其他工具(大多数需要付费)。
    • 台式机不够强大,内存或CPU无法让Wireshark工作的足够快。这一点很好发现。
    • 当LAN交换机的端口缓存太小,报文可能被丢弃。连接到交换机(用控制台或telnet连接)使用交换机命令行来检查该问题。
    • 无线网络抓包,由于某种原因没有看到所有发送报文。

总结

乱序报文的原理很简单。TCP发送以其字节数为编号的报文到接收方。当一个报文没有按照顺序到达时,Wireshark就会注意到。原因有两点:

  • 确实有问题:这时会看到重传和重复ACK,这是TCP对于收到乱序报文的响应。
  • 抓包问题:这时仅看到乱序报文,但没有看到对可能丢失及乱序报文的响应,可能实际上并没有问题。

有帮到你的点赞、收藏一下吧

需要更多教程,微信扫码即可

TCP重复ACK与乱序相关推荐

  1. TCP数据流稳定性--TCP分片,重组及乱序

    1.IP分片的情况.IP软件包有一个[分片]和[重组]模块,一个IP数据报在传输中可以被ip软件包的[分片]模块分片,在目的接收端B的IP软件包 的[重组]模块重新组合.接收端B的IP软件包如果收到乱 ...

  2. 弱网测试:使用netem模拟网络延迟、丢包、损坏、重复、和乱序等网络问题

    本文目录 1.延时---Delay 1.1.enp2s0 网卡上增加100ms延时 1.2.enp2s0 网卡上增加100ms ± 20ms的延时(80ms到120ms) 1.3.enp2s0 网卡上 ...

  3. TCP协议(二) 重传 乱序和丢包

    TCP重传机制 接收端给发送端的Ack确认只会确认最后一个连续的包,比如,发送端发了1,2,3,4,5一共五份数据,接收端收到了1,2,于是回ack 3,然后收到了4和5. 1)超时重传 一种是不回a ...

  4. 关于TCP乱序和重传的问题

    TCP是一个巨复杂的协议,因为他要解决很多问题,而这些问题又带出了很多子问题和阴暗面.所以学习TCP本身是个比较痛苦的过程,但对于学习的过程却能让人有很多收获.关于TCP这个协议的细节,我还是推荐你去 ...

  5. wireshark和tcpdump抓包TCP乱序和重传怎么办?PCAP TCP排序工具分享

    点击上方↑↑↑蓝字[协议分析与还原]关注我们 " 介绍TCP排序方法,分享一个Windows版的TCP排序工具." 在分析协议的过程中,不可避免地需要抓包. 无论抓包条件如何优越, ...

  6. 被面试官问懵:TCP 四次挥手收到乱序的 FIN 包会如何处理?

    摘要:收到个读者的问题,他在面试的时候,被搞懵了,因为面试官问了他这么一个网络问题. 本文分享自华为云社区<TCP 四次挥手收到乱序的 FIN 包会如何处理?>,作者:小林coding . ...

  7. TCP 四次挥手收到乱序的 FIN 包会如何处理?

    大家好,我是小林. 收到个读者的问题,他在面试鹅厂的时候,被搞懵了,因为面试官问了他这么一个网络问题: 不得不说,鹅厂真的很喜欢问网络问题,而且爱问异常情况下的网络问题,之前也有篇另外一个读者面试鹅厂 ...

  8. RabbitMQ常见问题解决方案——消息丢失、重复消费、消费乱序、消息积压

    文章目录 背景 RabbitMQ常见问题解决方案 1. RabbitMQ的可靠性(消息丢失问题) 1.1 生产者丢失消息 1.2 RabbitMQ弄丢消息 1.2.1 交换机持久化 1.2.2 队列持 ...

  9. TCP的乱序和丢包判断(附Reordering更新算法)-理论

    又到了周末,生物钟准时在午夜让我恍惊起而长嗟,一想到TCP,恍如昨日,也不知怎么就千里迢迢之后心依旧茫然,算是拾起来的东西吧,就坐下来再写点关于TCP的东西.由于最近在追<龙珠超>,也是很 ...

最新文章

  1. MFC应用技术之CTreeControl的使用
  2. 华为鸿蒙系统是指芯片吗_没有了芯片,华为能靠鸿蒙OS系统打出差异化吗?
  3. OMS订单管理系统框架图
  4. [unity2D] 迷你拼图
  5. 第五卷《鏖战雁门(下)》第47章《抉择》
  6. 易语言 执行java_CallJava易语言调用JAVA代码
  7. 梅科尔工作室-李庆浩 深度学习-KNN算法
  8. linux php preg扩展,PHP_linux shell 正则表达式(BREs,EREs,PREs)差异比较,在计算机科学中,是指一个用 - phpStudy...
  9. vue项目-element UI-NavMenu 导航菜单始终只展开一个
  10. abaqus Tie python脚本报错 原因令人震惊
  11. Shiro基础应用——角色和权限校验
  12. EAUML日拱一卒-微信小程序实战:位置闹铃 (19)-发布微信小程序
  13. beego 例子_Beego模板 循环和判断几个例子
  14. vue基于Blob.js和Export2Excel.js做前端导出excel兼容ie
  15. 基于PHP+MySQL音乐网站的设计与实现
  16. RabbitMQ普通集群、镜像集群、集群负载均衡、压力测试、选举策略及测试、集群故障恢复【集群超大全详解】
  17. VC检测U盘的插入与拔出
  18. JPG怎样转换成PDF格式保存
  19. 音视频应用开发系列文章目录
  20. 神武3等待服务器响应是怎么回事,神武3心情故事 真有玩家一个服务器玩10年吗?...

热门文章

  1. 交个朋友,还得看小米
  2. 腾讯获准在中国销售Switch游戏机 任天堂股价应声飙升逾14%
  3. 这个城市的外卖小哥注意了!必须穿上特定马甲 违反交规逃逸将被追罚
  4. OPPO Reno配置曝光 骁龙855+10倍混合光学变焦
  5. 支付宝最不想看到的:当“集五福”变成赚钱生意 有人日入千元!
  6. 获取Linux命令源代码的方法【ZT】
  7. MiniGUI编程--编辑框
  8. 拳皇全明星伺服务器维护,拳皇全明星5月31日更新公告_拳皇全明星5月31日更新内容介绍_玩游戏网...
  9. chrome 无法抓屏的问题
  10. 遇到一个把.o文件strip后出现的奇怪问题