FTP使用兩個TCP連接來通信,一條控制連接(control connection)用來提交命令和接受回復;一條數據連接(data connection)來處理實際的文件傳輸。在文件傳輸過程中,控制連接是很容易進入空閑狀態的,TCP標准也沒有規定一個連接的最大空閑時間。但是路由器和防火牆經常會把空閑的連接給關閉掉,並且不通知雙方,就造成了傳輸100%但最后還是超時的現象。后面的評論就是解決問題的關鍵了:TCP傳輸過程中有最大的包上限MTU(Maximum Transmission Unit,不超過1500),超過這個大小的傳輸就要拆成多個包(packet)。所以比較“小”的文件不用拆包,一次就傳輸完了;“大”的文件需要拆包,分多次發送,就出現超時的問題。對於不同的ISP提供商來說,不同的MTU存在最優值。於是在路由器管理頁面找到MTU設置,發現原來是1492,隨手用網上找的值1472填進去,重啟路由器,It works!!

