我妻子所在公司的网络有问题。几乎每个大于几百 kB 的文件在下载时都会损坏,甚至网页有时也会乱码。我们检查了所有能检查的东西,发现她的电脑确实没有问题(特别是因为大楼里的其他每台电脑终端都有同样的问题)。
所有文件都已损坏,包括文档、照片、网页……通过任何方式(各种浏览器、wget、下载管理器……)下载的文件都会发生这种情况,Dropbox 除外。但最糟糕的问题是她无法在她的 Ubuntu 机器上安装任何东西,因为软件包在下载时已损坏,并且每次她尝试使用 apt-get 或甚至运行下载的脚本时都会出现校验和不匹配的情况。
网络管理员似乎对纠正这个问题不感兴趣,他甚至似乎不明白问题是什么以及是什么原因导致了这个问题(他坚持认为这是由于网络流量过大造成的)。
奇怪的是dropbox下载的文件并没有损坏,我想可能是它使用了校验和测试,万一失败了再尝试下载。
所以,我们认为也许有一些程序会在下载过程中进行某种检查,然后再次下载损坏的数据?我们有什么办法可以利用这个嘈杂的网络吗?
真的没有其他选择,这是她唯一可以访问的快速网络……:(
编辑:我甚至在这个网络上丢失了 ssh 连接。无法通过 ssh 保持连接超过 30 秒... :( 我得到了:
Corrupted MAC on input.
Disconnecting: Packet corrupt
答案1
TL;DR:听起来像是网络连接过饱和。尝试关闭时间、种子、下载管理器,任何能够重新下载损坏文件部分的东西。最后还有一些网络提示。
我不会对你进行大部分责骂,因为这听起来像是你的妻子在办公室私自使用网络(/me 打你的手腕,你被责骂了),但如果办公室是唯一可用的高速连接,我会认为你所在地区的宽带可用性普遍较差。
如果是这种情况,那么很有可能所涉及的业务连接是 T-1 线路,或者可能是捆绑的 T-1 线路,以实现更高的容量(甚至是卫星链路)。这些选项中的任何一个通常都提供现代宽带速度的低端性能,并且外部网络连接很可能已经饱和。严重饱和的连接很容易丢失数据包,至少对于期望它们的应用程序而言,因为当丢失的数据包被重新请求和交付时,应用程序已经放弃了对它的期望。
除了使用面向块的下载方法(如 BitTorrent(和 Dropbox))之外,您能做的不多,这些方法对每个块进行校验,并且只能传输不匹配的块以减少网络流量。Rsync(可能通过 SSH 隧道传输)是另一种使用这种块级检查传输文件的方法。您最好的选择(至少对于基于文件的传输而言,对电子邮件/浏览没有太大帮助)可能是在网络外获取另一个帐户,您可以在该帐户中下载文件并将它们“暂存”到您的 Dropbox 帐户中,或者然后您可以使用 rsync 进行下载。
如果您可以引起网络管理员的兴趣(假设他还没有做过这些事情),那么可能有一些方法可以减少对网络连接的需求,比如实施透明缓存 Squid 代理、禁止/阻止流媒体和种子,以及添加“灰名单”或在您的邮件服务器和互联网之间包含它的电子邮件垃圾邮件过滤系统(假设电子邮件在内部处理)。
编辑:Squid 代理和灰名单实际上设置起来非常简单,特别是如果您使用的是 VMWare。预装了 Squid 和过滤功能的 VM 是可用的,对于灰名单,ESVA (www.global-domination.org) 是一个不错的选择,虽然现在有些被忽视了。
答案2
我猜是文件检查导致损坏。也许网络上有一个反恶意软件网关,也许此服务无法检查 SSL 会话(这可以解释 Dropbox 成功的原因)。
我不知道 apt-get 是否可以使用 SSL 连接,但值得一看。
答案3
你可以使用 tcpdump或者Wireshark或其他一些软件包来跟踪网络流量。
(注意:Ubuntu 上的 Wireshark 需要第三方编译包)。
这可以帮助您弄清楚发生了什么。
答案4
TCP/IP 自动获取校验和。如果出现损坏,它会发送重置数据包并重新开始
我们的互联网线路经常处于饱和状态,但底层硬件始终运行正常。
除非我了解所有的连接和设置方式,否则很难准确指出问题所在。
换工作 :-P