線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2207
推到 Plurk!
推到 Facebook!

關於最大傳輸量 MTU

 
cuteysc
初階會員


發表:16
回覆:37
積分:35
註冊:2003-05-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-06-07 15:20:29 IP:61.216.xxx.xxx 未訂閱
關於最大傳輸量 MTU            每一個網路媒介(Ethernet、PPP、X.25、Token Ring)有不同的最大傳輸單位(MTU), 這個 MTU 代表著該媒介所能夠處理的最大 Packet 大小, 其包括了媒介表頭, 網路表頭(IP), 傳輸(TCP 或是 UDP)和應用程式資料。當一個大的 IP 封包路過小的 MTU 媒介時, 路由器會再將其大的 IP 封包分割, 當達到目的地的時候, TCP/IP 堆疊再將其一小塊一小塊的資料組合還原成一個完整的 IP 封包, 一般而言, 程式設計師最好減少再分割和重組的次數來降低系統的額外負擔。            在 TCP 中, 這點並不太重要, 因為輸出的大小會由最小分段大小(MSS)協議所決定, MSS 預設的大小是 536 位元組大小, 也就是說不論你要求傳送多少資料, 堆疊只會在每一個 TCP 中傳送 536 個位元組。            您必須用接近 MSS 的 536 位元組的大小來降低系統的額外負擔, 最後, 系統的緩衝區大小將接近 MTU 的大小, 因此使用接近於 MTU 的資料大小可以更有效率的使用系統緩衝區。            筆者建議不要超過 1460 或 1472 的位元組來傳輸 TCP 或是 UDP, 如此可和 MTU 大小吻合, 而且也和一般的 MSS 協議吻合, 以便獲得最高效率的傳輸。            一般而言, 筆者不會將資料量超過 1200 個位元組, 而為何選擇在本章說明最大傳輸量 MTU 呢?這對我們往後的傳檔程式有著密切的關係, 由於傳檔程式大多傳輸大量資料, 要如何分割我們傳輸的資料, 怎麼樣索取收條, 這都是傳檔程式好壞及效率的關鍵。            要知道, 高傳輸量的程式不只有傳檔程式, 包括網路多人連線遊戲, 視訊會議系統等等, 都是高傳輸量的程式, 若是不將傳輸量做適當得量的控制, 相信程式會錯誤百出, 系統的高負載更是會讓 Server 端吃不消。    Tips                傳輸的量最小建議不要小於 20 Bytes, 最大勿超過 1200 Bytes, 這邊請注意!一個封包必須是 4 的倍數, 也就是傳送的封包必須能夠被 4 整除的值, 包括了 40, 60, 80, 100, 120 等等, 若是有 121 Bytes 的封包傳送出去, 接收端必定會接收到 4 的倍數值, 也就是說堆疊會產生出 124 Bytes 的封包, 這點是讀者要注意的地方, 所以通常傳送一個自訂的 Struct 資料結構時, 請控制大小在 20 Bytes 以上 1200 Bytes 以下並能夠被 4 整除的值。    YSC 寫於 Borland C++ Builder Internet 程式設計聖經 一書第三章第一節 (若要轉貼請註明出處,謝謝)    Y.S.C.
現任:Programmer 深度論壇 BCB Internet 版主
http://www.chatking.net 聊天王 語音聊天社群 創辦人
系統時間:2024-05-05 6:10:43
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!