回覆列表
-
1 # 瘋語者書夫碼字先生
-
2 # 使用者5080196806422
傳送緩衝區可以很大,但是在真正傳送資料時需要分片傳送。分片傳送需要滿足以下條件:
1、給每個udp包加上序號。
2、校驗位元組
每個udp包的最大大小是多少?
65507 約等於 64K
為什麼最大是65507?
因為udp包頭有2個byte用於記錄包體長度. 2個byte可表示最大值為: 2^16-1=64K-1=65535
udp包頭佔8位元組, ip包頭佔20位元組, 65535-28 = 65507
如果要傳送的udp報文大於65507怎麼辦?
需要在應用層由開發者自己分片傳送. 分片的粒度最大65507位元組. 系統的sendto函式是不支援大於65507位元組的單包傳送的.
開啟登錄檔編輯器,找到“HKEY _本地_機器\系統\當前控制集\服務\ tcpip \引數”子項。在右鍵區域,找到或建立一個名為“GlobalmaxTcp WindowSize”的DWORD鍵,並將其資料值設定為“256960”(十進位制)。
一般預設TCP/IP資料傳輸單元接收緩衝區大小為576位元組。如果將緩衝區大小設定得更大,一旦TCP/IP資料包出現錯誤,整個資料緩衝區中的所有資料包內容都將丟失並重新傳輸。顯然,重複傳輸會大大影響ADSL資料傳輸的效率。因此,設定合適的緩衝區大小,保證ADSL資料傳輸的效率始終很高,將直接影響ADSL的傳輸速度!