TCP和UDP協(xié)議發(fā)送數(shù)據(jù)包的大小方面的知識(shí)介紹
發(fā)布時(shí)間:2012-10-25 16:26:33 作者:佚名
我要評(píng)論

來介紹一下TCP和UDP協(xié)議發(fā)送數(shù)據(jù)包的大小
MTU最大傳輸單元,這個(gè)最大傳輸單元實(shí)際上和鏈路層協(xié)議有著密切的關(guān)系,EthernetII幀的結(jié)構(gòu)DMAC+SMAC+Type+Data+CRC由于以太網(wǎng)傳輸電氣方面的限制,每個(gè)以太網(wǎng)幀都有最小的大小64bytes最大不能超過1518bytes,對(duì)于小于或者大于這個(gè)限制的以太網(wǎng)幀我們都可以視之為錯(cuò)誤的數(shù)據(jù)幀,一般的以太網(wǎng)轉(zhuǎn)發(fā)設(shè)備會(huì)丟棄這些數(shù)據(jù)幀。
由于以太網(wǎng)EthernetII最大的數(shù)據(jù)幀是1518Bytes這樣,刨去以太網(wǎng)幀的幀頭(DMAC目的MAC地址48bit=6Bytes+SMAC源MAC地址48bit=6Bytes+Type域2bytes)14Bytes和幀尾CRC校驗(yàn)部分4Bytes那么剩下承載上層協(xié)議的地方也就是Data域最大就只能有1500Bytes這個(gè)值我們就把它稱之為MTU。
PPPoE所謂PPPoE就是在以太網(wǎng)上面跑PPP協(xié)議,有人奇怪了,PPP協(xié)議和Ethernet不都是鏈路層協(xié)議嗎?怎么一個(gè)鏈路層跑到另外一個(gè)鏈路層上面去了,難道升級(jí)成網(wǎng)絡(luò)層協(xié)議了不成。其實(shí)這是個(gè)誤區(qū):就是某層協(xié)議只能承載更上一層協(xié)議。
為什么會(huì)產(chǎn)生這種奇怪的需求呢?這是因?yàn)殡S著寬帶接入(這種寬帶接入一般為Cable Modem或者xDSL或者以太網(wǎng)的接入),因?yàn)橐蕴W(wǎng)缺乏認(rèn)證計(jì)費(fèi)機(jī)制而傳統(tǒng)運(yùn)營(yíng)商是通過PPP協(xié)議來對(duì)撥號(hào)等接入服務(wù)進(jìn)行認(rèn)證計(jì)費(fèi)的.
PPPoE帶來了好處,也帶來了一些壞處,比如:二次封裝耗費(fèi)資源,降低了傳輸效能等等,這些壞處俺也不多說了,最大的壞處就是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
我對(duì)上面的理解是:如果我們定義的TCP和UDP包小于1452,1464,那么我們的包在IP層就不用分包了,這樣傳輸過程中就避免了在IP層組包發(fā)生的錯(cuò)誤。如果使用UDP協(xié)議,如果IP層組包發(fā)生錯(cuò)誤,那么包就會(huì)被丟棄,UDP不保證可靠傳輸。但是TCP發(fā)生組包錯(cuò)誤時(shí),該包會(huì)被重傳,保證可靠傳輸。所以,我們?cè)谟肧ocket編程時(shí),包的大小設(shè)定不一定非要小于1400,UDP協(xié)議要求包小于64K,TCP沒有限定。
總結(jié):
我們?cè)O(shè)定包的大小對(duì)于UDP和TCP協(xié)議是不同的,關(guān)鍵是看系統(tǒng)性能和網(wǎng)絡(luò)性能,網(wǎng)絡(luò)是狀態(tài)很好的局域網(wǎng),那么UDP包分大點(diǎn),提高系統(tǒng)的性能。不好,就分小于1464,這樣可以減低丟包率。對(duì)于TCP來說,這個(gè)就要靠經(jīng)驗(yàn)了,因?yàn)?,TCP丟包可以自動(dòng)重傳,分大了,系統(tǒng)性能提高了,分包和錯(cuò)誤重組可能會(huì)耗費(fèi)時(shí)間,使傳送時(shí)間延長(zhǎng),分小了,系統(tǒng)性能又降低了。
由于以太網(wǎng)EthernetII最大的數(shù)據(jù)幀是1518Bytes這樣,刨去以太網(wǎng)幀的幀頭(DMAC目的MAC地址48bit=6Bytes+SMAC源MAC地址48bit=6Bytes+Type域2bytes)14Bytes和幀尾CRC校驗(yàn)部分4Bytes那么剩下承載上層協(xié)議的地方也就是Data域最大就只能有1500Bytes這個(gè)值我們就把它稱之為MTU。
PPPoE所謂PPPoE就是在以太網(wǎng)上面跑PPP協(xié)議,有人奇怪了,PPP協(xié)議和Ethernet不都是鏈路層協(xié)議嗎?怎么一個(gè)鏈路層跑到另外一個(gè)鏈路層上面去了,難道升級(jí)成網(wǎng)絡(luò)層協(xié)議了不成。其實(shí)這是個(gè)誤區(qū):就是某層協(xié)議只能承載更上一層協(xié)議。
為什么會(huì)產(chǎn)生這種奇怪的需求呢?這是因?yàn)殡S著寬帶接入(這種寬帶接入一般為Cable Modem或者xDSL或者以太網(wǎng)的接入),因?yàn)橐蕴W(wǎng)缺乏認(rèn)證計(jì)費(fèi)機(jī)制而傳統(tǒng)運(yùn)營(yíng)商是通過PPP協(xié)議來對(duì)撥號(hào)等接入服務(wù)進(jìn)行認(rèn)證計(jì)費(fèi)的.
PPPoE帶來了好處,也帶來了一些壞處,比如:二次封裝耗費(fèi)資源,降低了傳輸效能等等,這些壞處俺也不多說了,最大的壞處就是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
我對(duì)上面的理解是:如果我們定義的TCP和UDP包小于1452,1464,那么我們的包在IP層就不用分包了,這樣傳輸過程中就避免了在IP層組包發(fā)生的錯(cuò)誤。如果使用UDP協(xié)議,如果IP層組包發(fā)生錯(cuò)誤,那么包就會(huì)被丟棄,UDP不保證可靠傳輸。但是TCP發(fā)生組包錯(cuò)誤時(shí),該包會(huì)被重傳,保證可靠傳輸。所以,我們?cè)谟肧ocket編程時(shí),包的大小設(shè)定不一定非要小于1400,UDP協(xié)議要求包小于64K,TCP沒有限定。
總結(jié):
我們?cè)O(shè)定包的大小對(duì)于UDP和TCP協(xié)議是不同的,關(guān)鍵是看系統(tǒng)性能和網(wǎng)絡(luò)性能,網(wǎng)絡(luò)是狀態(tài)很好的局域網(wǎng),那么UDP包分大點(diǎn),提高系統(tǒng)的性能。不好,就分小于1464,這樣可以減低丟包率。對(duì)于TCP來說,這個(gè)就要靠經(jīng)驗(yàn)了,因?yàn)?,TCP丟包可以自動(dòng)重傳,分大了,系統(tǒng)性能提高了,分包和錯(cuò)誤重組可能會(huì)耗費(fèi)時(shí)間,使傳送時(shí)間延長(zhǎng),分小了,系統(tǒng)性能又降低了。
相關(guān)文章
三大網(wǎng)絡(luò)管理協(xié)議:SNMP、NETCONF、RESTCONF介紹
本文將詳細(xì)介紹三種主要的協(xié)議:SNMP(Simple Network Management Protocol)、NETCONF(Network Configuration Protocol)和RESTCONF,需要的朋友可以參考下2024-02-13- 常見的網(wǎng)絡(luò)協(xié)議有:TCP/IP協(xié)議、UDP協(xié)議、HTTP協(xié)議、FTP協(xié)議等,本文就詳細(xì)的介紹一下常見的網(wǎng)絡(luò)協(xié)議,通過這些具體的協(xié)議更深刻的認(rèn)識(shí)整體網(wǎng)絡(luò)的傳輸流程及相關(guān)網(wǎng)絡(luò)原理,2023-05-30
- 本文主要介紹了L2TP和PPTP的區(qū)別,主要的前區(qū)別在于用途不同、使用要求不同,下面就來介紹一下L2TP和PPTP的聯(lián)系與區(qū)別,感興趣的可以了解一下2023-05-30
自組織網(wǎng)絡(luò)Ad Hoc之OLSR 協(xié)議詳解
這篇文章主要介紹了自組織網(wǎng)絡(luò)Ad Hoc之OLSR 協(xié)議詳解,需要的朋友可以參考下2023-05-08自組織網(wǎng)絡(luò)Ad Hoc之AODV協(xié)議詳解
這篇文章主要介紹了自組織網(wǎng)絡(luò)Ad Hoc之AODV協(xié)議詳解,需要的朋友可以參考下2023-05-08自組織網(wǎng)絡(luò)Ad Hoc 網(wǎng)絡(luò)基礎(chǔ)知識(shí)
自組織網(wǎng)絡(luò)(Ad Hoc)是一種移動(dòng)通信和計(jì)算機(jī)網(wǎng)絡(luò)相結(jié)合的網(wǎng)絡(luò),是移動(dòng)計(jì)算機(jī)網(wǎng)絡(luò)的一種,用戶終端可以在網(wǎng)絡(luò)內(nèi)隨意移動(dòng)而保持通信2023-05-08- 瀏覽器輸入一個(gè)URL回車后,會(huì)發(fā)生什么呢?這里就為大家分享一下,需要的朋友可以參考下2022-10-19
- 本篇主要是對(duì)網(wǎng)絡(luò)協(xié)議進(jìn)行一個(gè)歸納總結(jié),方便后續(xù)查閱及復(fù)習(xí),當(dāng)然如有新的認(rèn)知或新的理解,也會(huì)持續(xù)更新2022-10-19
- 今日回顧網(wǎng)絡(luò)知識(shí)時(shí),發(fā)現(xiàn)自己專門整理過一篇關(guān)于日常生活中常見的網(wǎng)絡(luò)協(xié)議知識(shí)以及作用的梳理,特發(fā)此一貼,也當(dāng)給自己鞏固網(wǎng)絡(luò)知識(shí)了,如有錯(cuò)誤,望各大佬指正2022-10-19
HTTP協(xié)議的8種請(qǐng)求方式及常用請(qǐng)求方式的解析
HTTP即超文本傳輸協(xié)議,是一種實(shí)現(xiàn)客戶端和服務(wù)器之間通信的響應(yīng)協(xié)議,它是用作客戶端和服務(wù)器之間的請(qǐng)求,需要的朋友可以參考下2022-10-19