同樣資料量的buffer,比如1500位元組的資料,分10包 x 150傳送和1包 x·1500傳送,對比如下:
(1)10包資料,需要10個20位元組ip頭資訊,7位元組幀前導,1位元組幀首界定符及幀與幀之間的12位元組的預設幀間距,而這些都是通常意義的網路頻寬的一部分,所以小包會造成頻寬的浪費。
(2)在儲存**的模型下,報文的收發及查表都需要訪存,那麼小包的處理,需要訪存的次數x10,降低了cache命中的機率,而cache未命中,消耗的是cpu的時鐘週期,所以小包處理增加了cpu的負擔。
(3)150位元組的包的時間間隔約為35ns,而1500的包的時間間隔約為300ns,35x10的間隔時間要大於1x300ns,所以小包處理增加了報文處理的時延。
所以在x86的平台上,應盡量避免小包的傳送,當然大包的大小也需要考慮交換機,路由器的最大mtu的設定而定,通常是1500位元組為宜。
資料的網路傳輸
一 資料傳送過程 從主機進入線路 1 應用程式首先得將需要傳送到資料寫入該程序的記憶體位址空間中 2 應用程式通過系統函式庫介面 比如send函式 向核心發出系統呼叫,系統核心將這些資料從使用者態記憶體區複製到由核心維護的一段稱為核心緩衝區的記憶體位址空間 3 當資料寫入核心緩衝區後,核心會通知網絡...
網路傳輸檔案的問題
最近在寫網路傳輸檔案的問題了。剛開始考慮了很久,就是通過網路傳輸用的是byte,怎樣把任何一種檔案寫成流了。就成了問題了。客戶端 把檔案寫成流,然後就是通過網路傳輸了。服務端 byte轉換為流,然後轉換為檔案。這個檔案是任意型別的 寫了很久才明白了。原來可以傳遞任何型別的檔案,只是轉換的問題難倒了我...
網路傳輸遇到亂碼問題
寫的伺服器開啟乙個網頁,漢字顯示亂碼,英文正常顯示。排查許久,因為伺服器接受請求傳送網頁,傳送端專門標識了charset utf 8,查閱的資料都說要將編碼轉義,設定為utf 8 許久後意識到原來是未設定html編碼 這裡在對應的網頁html 中也相應的設定的是utf 8 位置在head中 ok成功...