能否這樣講:當我們在網際網路上傳送很長的大文件時,就必須使用TCP協議而不是使用UDP協議?
02-19
不是,並且相反的是,當我們傳比較大的文件時,為了速度,往往使用的是UDP。
在帶寬容量很大,延遲也較大(Fat-long Network)上,進行大文件傳輸,作為FTP的承載協議,首選的還是那些專門考慮了這種情況並進行優化的高速TCP實現。如:
http://en.wikipedia.org/wiki/HSTCP
基本思路之一是,TCP演算法中應該能夠儘快地讓CWnd增長(擁塞窗)達到較大值*,並穩定在不會引起連接擁塞的水平上,從而保證一次RTT時間內能夠傳輸儘可能多的數據。
為了做到這一點,優化的TCP協議需要設計較快CWnd增長速度的演算法;同時,在遇到丟包、亂序和擁塞時,需要有合適的機制能夠進行分別處理,儘可能地精確地調用擁塞控制和超時重傳;最後,每次擁塞控制對吞吐量帶來的影響需要降到盡量低。(*註:較大值是指鏈路容量Bandwidth與單向延遲Delay的乘積,BDP)。相對起自己實現一個可靠的UDP傳輸,選擇這些高速TCP在可擴展性、開發成本上都要更強一些。
關於校驗:傳輸層的文件校驗,TCP最多只能用簡單的checksum,應用層需要實現例如MD5等校驗方式自行處理。不是的, TCP能做的UDP一樣可以實現
推薦閱讀:
※DNS解析的過程是什麼,求詳細的?
※OSI模型中,一個協議應該屬於哪一層是以什麼為標準劃分的?
※二層交換的傳輸鏈路,天津-貴陽長途傳輸,100M帶寬,TCP跑到三四十M就不行了,UDP測試沒問題。?
※TCP網路編程,從socket到消息包,發送接收都是bit,傳輸中兩端怎麼知道哪些bit組成一個協議?
※UNP第三版中大篇幅的介紹了SCTP,請問SCTP應用的發展趨勢怎麼樣?有沒有多投入學習的必要?