时间:2023-03-09来源:系统城装机大师作者:佚名
用户反馈说当与外部客户端进行 FTP 传输时,可以成功登录,但无法传输任何数据。总之 FTP 传输失败,需要来弄清楚到底发生了什么。
案例取自 SharkFest 2010《Packet Trace Whispering》
跟踪文件基本信息如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
λ capinfos FTPFinal.pcap File name: FTPFinal.pcap File type : Wireshark /tcpdump/ ... - pcap File encapsulation: Ethernet File timestamp precision: microseconds (6) Packet size limit: file hdr: 65535 bytes Packet size limit: inferred: 69 bytes Number of packets: 44 File size: 3710 bytes Data size: 3555 bytes Capture duration: 34.493422 seconds First packet time : 2007-03-22 04:37:11.513913 Last packet time : 2007-03-22 04:37:46.007335 Data byte rate: 103 bytes /s Data bit rate: 824 bits /s Average packet size: 80.80 bytes Average packet rate: 1 packets /s SHA256: 36512b444dacb061e0d8a661923f1323d0c778131bedaa7bbd5b2ab810e9a09f RIPEMD160: 3e14f2dd481632867eba14503a24e92b316b5caf SHA1: 771e45893504af381de89ba6b047b5cd3fa554fd Strict time order: True Number of interfaces in file : 1 Interface #0 info: Encapsulation = Ethernet (1 - ether) Capture length = 65535 Time precision = microseconds (6) Time ticks per second = 1000000 Number of stat entries = 0 Number of packets = 44 λ |
跟踪文件在 linux 上通过 tcpdump 所捕获,数据包数量并不多,只有 44 个,长度截断为 69 字节,文件数据大小 3555 字节,捕获时长 34.49 秒,平均速率 824 bps。
专家信息如下,可以看到 Warning 信息包括很多数据分段未被捕获,同时也有很多的(疑似)重传、(疑似)快速重传以及(疑似)虚假重传等问题,需要进一步实际分析。
众所周知,FTP 有主动和被动两种工作模式,而在有防火墙的网络环境中,经常会因为安全策略出现访问失败问题。如果排除了 FTP 主动和被动、防火墙安全策略等常见的可能性问题之外,那么剩下的就要专项分析了,就像这个特殊的案例。
数据包初步信息如下,为一条 FTP 控制连接,在 No.15 之后出现了大量的告警信息。既然与 TCP Seq Num 相关,那么转到专用视图上。
首先是 TCP 三次握手,此处有个明显问题的是SYN 数据包的 ACK 有数值,非 0,Wireshark 也会有明显提示 [The acknowledgment number field is nonzero while the ACK flag is not set]
。虽然有些小问题,但此处未影响 TCP 三次握手的建立。
No.4 - No.15 正常的控制交互,Request - Response 。
主要分析如下:
TCP ACKed unseen segment
;问题貌似出现在服务器发送的 No.16 数据包上,需要继续展开部分字段辅助判断,譬如 IP ID。
可以看到客户端 No.15、No.17、No.19 ...... IP ID 是逐步递增的,意味着客户端并没有发送过 Seq 94,Next Seq 97 的 TCP 分段,因此对于服务器,上述分析 2 中的结论并不正确(可能收到了客户端发送的 Seq 70,Next Seq 94 和 Seq 94,Next Seq 97 的两个 TCP 分段)。
那么具体问题是什么呢?让我们做一个假设,客户端数据包在传输过程中发生了变化,额外多出来了 3 个字节,是否符合问题现象。
总之,问题可能出现在中间传输路径上的设备,可能是 NAT 或是防火墙等设备,增加了客户端从未发送的 3 个额外字节,所以服务器回复的 ACK 也增加了 3 个字节,造成一系列连续问题。
很少见的问题,但一切皆有可能。
2024-07-07
Java框架如何实现非阻塞式编程?2023-03-11
Android Jetpack 组件LiveData源码解析2023-03-11
hbuilderx设置Firefox浏览器安装路径教程 hbuilderx怎么设置Firefox浏览器安装路径?一、AVL树的概念 二、AVL树节点的定义 三、AVL树的插入 四、AVL树的旋转 1.左单旋 2.右单旋 3.左右双旋 4.右左双旋 五、进行验证 六、AVLTree的性能...
2023-03-09