[問題] 請問protocol stack data傳遞

看板C_and_CPP作者 (一個人在半夜醒來)時間13年前 (2011/03/31 17:06), 編輯推噓0(005)
留言5則, 1人參與, 最新討論串1/1
假設有 A->B->C 三層 A最上層 C最下層 在此protocol stack中A產生的data會pass給B B將A的data當作payload再加上自己的header再pass給C pseudo code大概是 A_Send(){ B_Send(a_msg); } B_Send(a_msg){ b_msg = b_hdr + a_msg; C_Send(b_msg); } 一般我看到的實作方式好像都是 收到上層資料後配置一塊記憶體 填入header再把上層傳來的memory copy過去 每一層都要做一次 配置記憶體和複製資料 感覺很沒效率 是不是有其他好的方法來解決這種問題? 希望是C可以做得到 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.133.1.252

03/31 19:01, , 1F
如果header的大小都固定,那在C就可以配置所有header空間
03/31 19:01, 1F

03/31 19:01, , 2F
A,B兩層再把資料填進去就好
03/31 19:01, 2F

03/31 19:02, , 3F
如果不固定,也可以用linked-list之類的方法來串資料
03/31 19:02, 3F

03/31 19:03, , 4F
一樓推錯了,應該說在最上層A就可以配置所有header的空間
03/31 19:03, 4F
A先配置這樣好像有點破壞分層 因為要知道其他層的東西才知道自己要從哪裡開始塞資料 ※ 編輯: snh 來自: 175.181.245.217 (04/01 20:48)

04/02 18:40, , 5F
據我所知Linux Kernel對於網路封包就是採事先分配的方式
04/02 18:40, 5F
文章代碼(AID): #1Db4G8XF (C_and_CPP)