五一假期的第一天,北京天空灰蒙蒙的,大风夹着沙尘,我还是乖乖的宅在寝室里比较靠谱。最想做的事情便是捣鼓新建的这块小天地了。易库网的试用空间用五六天了,作为香港的主机,省去了国内空间备案的烦恼,又不用去忍受美国空间蜗牛般得速度,整体感觉不错,昨天晚上看到又看到易库网五一促销——全部半价,100M的空间才55RMB,果断下手了。
可是,当我往香港主机上传wordpress的时候,突然发现怎么都传不成功,老提示说文件已存在(大小为0),是否覆盖,反复这么覆盖了几次,表面上看是上传成功了,可到后台一看,传上去的wordpress压缩包大小还是0字节,当时还埋怨易库网来着,找了好几次客服,客服那边一切正常,还帮我把wordpress传了上去,怀疑是我这边网络的问题,我转念一想,我寝室的网络是电信通的,没走电信或者网通的线路,估计是出于河蟹的考虑把FTP上传给限制了,所以当时也就妥协了。
今天我抱着试一试的心态google了下,看是否有人跟我遇到同样的问题,开始的时候,大片的搜索结果都是说啥主动模式与被动模式、电信网与网通网跨网等问题,看似很好的解释了我ftp无法上传是有可能的(因为我确实是用的局域网共享,而且连了香港服务器也意味着跨网了),但十几页搜索结果以后的一篇文章让我茅塞顿开。
哈哈,原因很简单,我们寝室路由用的ADSL拨号,而ADSL服务提供商北京电信通实际使用的数据包的最大值最多为1492,我在路由高级选项里怎么都没法将其设得更高,系统默认的TCP/IP数据包最大值(MaxMTU)为1500(这是以太网分组标准),而恰巧某些站点的MaxMTU值设置又大于1492,一个大于1492字节的包没法全部发完,所以造成ftp无法上传大于1K的文件。
对症下药,怎么解决呢?
1、对于windows系统,设置如下:
第一步:进入注册表查找相关的主键,它的位置在[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\<ID for Adapter>]中。注意,这一步的关键也是要确定主键的正确位置。你可以查看“Interface”项下的每个主键,其中包含你机器的网络设置数据(比如IP地址、DNS服务器、默认网关等)的那项就是你需要的。 我的网卡IP地址设为192.168.2.107,默认网关设为192.168.2.100。
第二步,在这个主键中,新建“REG_DWORD”键。
第三步,将新建的这个键命名为“MTU”,设置其数值为十进制的1450或是小于1492的任意数值。设置完毕,注册表中增加一个键会为1450的“MTU”键,设置完毕,重启机器,OK。2、对于Linux系统,so easy:在命令行输入ifconfig eth0 mtu number,其中“number”为MTU的数值,设为1450或是小于1492的任意数值即可。果然还是linux方便啊。
3、总结:MTU的英文全称为Maximum Transmission Unit,即最大传输单位,也就是在连接的时候,所传输信息包最多可以有多少字节。MTU决定着信息包的大小,如果信息包太小,同样大小的数据就会分成很多个包传输,计算机不得不频繁地作出响应;如果信息包太大则会产生错误,导致传输失败,我这次ftp无法上传大文件的问题就出在这。
除非注明,文章均为CppLive 编程在线原创,转载请注明出处,谢谢。