UDP和TCP协议包大小的计算
?
UDP一次發(fā)送數(shù)據(jù)包的大小,TCP一次發(fā)送數(shù)據(jù)包的大小。
MTU最大傳輸單元,這個最大傳輸單元實際上和鏈路層協(xié)議有著密切的關(guān)系,EthernetII幀的結(jié)構(gòu)DMAC+SMAC+Type+Data+CRC由于以太網(wǎng)傳輸電氣方面的限制,每個以太網(wǎng)幀都有最小的大小64bytes最大不能超過1518bytes,對于小于或者大于這個限制的以太網(wǎng)幀我們都可以視之為錯誤的數(shù)據(jù)幀,一般的以太網(wǎng)轉(zhuǎn)發(fā)設(shè)備會丟棄這些數(shù)據(jù)幀。
由于以太網(wǎng)EthernetII最大的數(shù)據(jù)幀是1518Bytes這樣,刨去以太網(wǎng)幀的幀頭(DMAC目的MAC地址48bit=6Bytes+SMAC源MAC地址48bit=6Bytes+Type域2bytes)14Bytes和幀尾CRC校驗部分4Bytes那么剩下承載上層協(xié)議的地方也就是Data域最大就只能有1500Bytes這個值我們就把它稱之為MTU。
PPPoE所謂PPPoE就是在以太網(wǎng)上面跑PPP協(xié)議,有人奇怪了,PPP協(xié)議和Ethernet不都是鏈路層協(xié)議嗎?怎么一個鏈路層跑到另外一個鏈路層上面去了,難道升級成網(wǎng)絡(luò)層協(xié)議了不成。其實這是個誤區(qū):就是某層協(xié)議只能承載更上一層協(xié)議。
為什么會產(chǎn)生這種奇怪的需求呢?這是因為隨著寬帶接入(這種寬帶接入一般為Cable Modem或者xDSL或者以太網(wǎng)的接入),因為以太網(wǎng)缺乏認證計費機制而傳統(tǒng)運營商是通過PPP協(xié)議來對撥號等接入服務(wù)進行認證計費的.
PPPoE帶來了好處,也帶來了一些壞處,比如:二次封裝耗費資源,降低了傳輸效能等等,這些壞處俺也不多說了,最大的壞處就是PPPoE導(dǎo)致MTU變小了以太網(wǎng)的MTU是1500,再減去PPP的包頭包尾的開銷(8Bytes),就變成1492。
UDP 包的大小就應(yīng)該是 1492 - IP頭(20) - UDP頭(8) = 1464(BYTES)
TCP 包的大小就應(yīng)該是 1492 - IP頭(20) - TCP頭(20) = 1452(BYTES)
目前大多數(shù)的路由設(shè)備的MTU都為1500
編程的時候一定要注意哦,不能超過這兩個值,否則你的傳輸效率就大打折扣了。
?
轉(zhuǎn)載于:https://www.cnblogs.com/baobao2010/archive/2010/07/27/1786455.html
總結(jié)
以上是生活随笔為你收集整理的UDP和TCP协议包大小的计算的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 淘宝,我来了!
- 下一篇: Base64 加密字符串和文件