TCP是流協(xié)議,不像UDP那樣sendto發(fā)一次消息,另一端必然會(huì)收到完整消息,或者沒有收到任何消息。
當(dāng)用TCP send發(fā)一次消息的時(shí)候,可能另一端在某時(shí)刻可能只收到一部分消息,下一時(shí)刻才能收到另一部分。那如果一個(gè)消息很小,是否可以保證另一端在某時(shí)刻能收到這條完整消息?
- 調(diào)用send后,TCP將數(shù)據(jù)拷貝到緩沖區(qū)。緩沖區(qū)內(nèi)可能不止一條用戶消息。
-
TCP按照一定算法,將緩沖區(qū)的數(shù)據(jù)打包到1-n個(gè)TCP報(bào)文中,交給IP層發(fā)送。TCP報(bào)文是TCP協(xié)議的最小發(fā)送單位,大小應(yīng)該是可變的,并且丟失的話會(huì)重發(fā)。
- #并不能保證一個(gè)TCP報(bào)文中必然包含一條用戶消息的全部,所以即使消息很小,另一端也有可能在某時(shí)刻只收到部分
-
IP層將TCP報(bào)文裝進(jìn)IP包,然后再交給鏈路層發(fā)送以太幀
- #理論上IP包的大小應(yīng)該會(huì)選擇比MTU小。一旦IP包比MTU大,意味著網(wǎng)絡(luò)上的路由要幫你緩存多個(gè)以太幀,拼出IP包后才知道如何路由到下一個(gè)節(jié)點(diǎn)。向下一節(jié)點(diǎn)路由的時(shí)候還要再拆分成多個(gè)以太幀發(fā)送
- #所以TCP報(bào)文應(yīng)該會(huì)比選擇比MTU小
全文收集到
我的知識(shí)共享
posted on 2013-03-21 11:02
LOGOS 閱讀(2769)
評(píng)論(1) 編輯 收藏 引用