摘要:所以,事實上這個字節就是網絡層數據報的長度限制。因為數據報的首部為字節,所以數據報的數據區長度最大為字節。這個字節就是我們可以使用的字節數當我們發送的數據大于的時候會怎樣呢這也就是說數據報大于字節,大于,這個時候發送方層就需要分片。
前言
因為UDP數據傳輸的無連接特性,最簡單的UDP數據傳輸就是一次數據交互一個UDP包搞定,這樣就不用管分包問題(因為不像TCP,UDP傳輸時如果分包則是不能保證順序的,這會帶來很多問題)。
所以你一次交互的數據如果太多的話,用UDP實現就很可能并不優雅。
思考在進行UDP編程的時候,我們最容易想到的問題就是,一次發送多少bytes好?
當然,這個沒有唯一答案,相對于不同的系統,不同的要求,其得到的答案是不一樣的,我這里僅對像ICQ一類的發送聊天消息的情況作分析,對于其他情況,你或許也能得到一點幫助。
首先,我們知道,TCP/IP通常被認為是一個四層協議系統:包括鏈路層、網絡層、運輸層、應用層 。
UDP屬于運輸層,下面我們由下至上一步一步來看。
結論1:局域網環境下,建議將UDP數據控制在1472字節以下以太網(Ethernet)數據幀的長度必須在46-1500字節之間,這是由以太網的物理特性決定的,這個1500字節被稱為鏈路層的MTU(最大傳輸單元)。 但這并不是指鏈路層的長度被限制在1500字節,其實這這個MTU指的是鏈路層的數據區,并不包括鏈路層的首部和尾部的18個字節。
所以,事實上這個1500字節就是網絡層IP數據報的長度限制。因為IP數據報的首部為20字節,所以IP數據報的數據區長度最大為1480字節。而這個1480字節就是用來放TCP傳來的TCP報文段或UDP傳來的UDP數據報的。
又因為UDP數據報的首部8字節,所以UDP數據報的數據區最大長度為1472字節。這個1472字節就是我們可以使用的字節數
當我們發送的UDP數據大于1472的時候會怎樣呢?這也就是說IP數據報大于1500字節,大于MTU,這個時候發送方IP層就需要分片(fragmentation)。把數據報分成若干片,使每一片都小于MTU,而接收方IP層則需要進行數據報的重組。這樣就會多做許多事情,而更嚴重的是,由于UDP的特性,當某一片數據傳送中丟失時,接收方無法重組數據報,將導致丟棄整個UDP數據報。
因此,在普通的局域網環境下,我建議將UDP的數據控制在1472字節以下為好。
結論2:Internet編程時,建議將UDP數據控制在548字節以下進行Internet編程時則不同,因為Internet上的路由器可能會將MTU設為不同的值。如果我們假定MTU為1500來發送數據,而途經的某個網絡的MTU值小于1500字節,那么系統將會使用一系列的機制來調整MTU值,使數據報能夠順利到達目的地,這樣就會做許多不必要的操作。
鑒于Internet上的標準MTU值為576字節,所以我建議在進行Internet的UDP編程時, 最好將UDP的數據長度控件在548字節(576-8-20)以內。
這句話貌似有問題,unix網絡編程第一卷里說:ipv4協議規定ip層的最小重組緩沖區大小為576!所以,建議udp包不要超過這個大小,而不是因為internet的標準MTU是576!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/73087.html
摘要:由于本身發送的就是一份一份的數據報,所以自然而然的就有一個上限的大小。并且由于本身的不可靠性以及無序性,如果發送了這三個數據報過來,端接收到的可能是任意順序任意個數三個數據報的排列組合。 前言 最頭疼的問題莫過于到底該選TCP還是UDP作為傳輸層協議。通過快速對比分析 TCP 和 UDP 的區別,來幫助即時通訊初學者快速了解這些基礎的知識點,從而在IM、消息推送等網絡通信應用場景中能準...
摘要:控制,進程收到該信號退出時會產生文件,類似于程序錯誤信號。執行了非法指令。調用函數產生,將會使程序非正常結束。它與的區別在于后者是由于對合法地址的非法訪問觸發編程中過程中遇到不慌,下面列舉一些網絡傳輸層知識。下面列舉一些Linux中常見的信號,平時做開發經常遇到的。SIGINT:程序終止信號。當用戶按下CRTL+C時通知前臺進程組終止進程。 SIGQUIT:Ctrl+控制,進程收到該信號退出...
摘要:協議族的構成數據鏈路層網絡層傳輸層應用層和是網絡層的協議,但是它所工作的內容是鏈路層的。。。發送的時候,協議為每個包編號,簡稱,以便接收的一方按照順序還原。并沒有提供任何機制,表示原始文件的大小,這由應用層的協議來規定。 TCP/IP協議族的構成 * 數據鏈路層:ARP,RARP * 網絡層: IP,ICMP,IGMP * 傳輸層:TCP ,UDP,UGP * 應用層:Telnet,F...
摘要:擁塞控制算法包含三種擁塞控制算法,和。在早期的實現當中,這兩個擁塞控制算法分別是在發送端和接收端實現的。音頻算法音頻算法指的是在發送端對發送信號依次進行回聲消除降噪以及音量均衡操作,它包含三個算法回聲消除,噪聲抑制和自動增益控制。 1、背景 RTC(Real-time Communica...
閱讀 3043·2021-11-25 09:43
閱讀 1626·2021-11-24 11:15
閱讀 2359·2021-11-22 15:25
閱讀 3501·2021-11-11 16:55
閱讀 3240·2021-11-04 16:10
閱讀 2773·2021-09-14 18:02
閱讀 1685·2021-09-10 10:50
閱讀 1070·2019-08-29 15:39