亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

sk_buff整理筆記(兩、操作函數)

系統 1919 0

? ? ? ? 承接上一: sk_buff 整理筆記(一、數據結構) 這一篇要講的是內核為sk_buff結構提供的一些操作函數。

? ? ? ? 第一、首先要講的是sk_buff中的四大指針:

? ? ? ? 四大指針各自是:head、data、tail、end;這四個指針都是指向了數據區的。數據區中存放的是協議頭和數據。head和end指針是每一個數據包一樣的,也是有這兩個指針來確定數據區的大小的。最開始的時候head、data、tail三個指針都是指向一起的,當有協議數據加進來時才更改。

? ? ? ? 再來說下包的形成。首先是應用層的數據。然后到四層加上四層的TCP協議頭(如果為TCP包),然后發往三層。在三層時把四層發來的數據都當作是負載,然后再往負載前加上一個三層IP協議頭。發往二層。最后二層加上個幀頭就能夠發送了。所以在包形成時,這幾個指針起到了很關鍵的作用。以下來看下四個指針的指向地址大小,這也有利于對以下要講到一些操作函數的理解。

? ? ? ?? sk_buff整理筆記(兩、操作函數)

? ? ? ? 最后一句的意思是:當數據包在二層(即data指針指向二層協議頭)時。獲取到三層協議頭指針的一種方法。當然也能夠直接用自帶的獲取三層協議頭指針的函數(事實上函數里面也是用上面這句代碼實現的),這里僅僅是為了顯示data添加時,是往下移動的。

方便后面的幾個函數理解。

? ? ? ? 第二、幾個操作sk_buff指針的函數:

? ? ? ? 首先來說下三個空間。方便以下介紹函數時理解。第一個是:headroom,就是skb->head和skb->data之間的空間。第二個是:data。就是skb->data和skb->tail之間的空間。第三個是:tailroom,就是skb->tail和skb->end之間的空間。例如以下圖:

? ? ? ? ? sk_buff整理筆記(兩、操作函數)

? ? ? ? 接下來說下四個操作sk_buff結構中指針的函數:(a) skb_put(), (b)skb_push(), (c)skb_pull(), and (d)skb_reserve();這四個函數在數據包在各層之間傳輸時。起到了至關

重要。

? ? ? ?? sk_buff整理筆記(兩、操作函數)

? ? ? ? (a)skb_put():向后擴大數據區空間。headroom空間不變,tailroom空間降低,skb->data指針不變,skb->tail指針下移;

? ? ? ? (b)skb_push():向前擴大數據區空間。headroom空間降低,tailroom空間不變。skb->tail指針不變,skb->data指針上移;
? ? ? ? (c)skb_pull():縮小數據區空間,headroom空間增大。tailroom空間不變,skb->data指針下移,skb->tail指針不變;

? ? ? ? (d)skb_reserve():數據區不變,headroom空間增大,tailroom空間降低,skb->data和skb->tail同一時候下移;

? ? ? ? 大家也能夠照著源代碼來分析,還有個當大家看源代碼時。會發現好多函數都有個同名的,比方:skb_push()函數,就有兩個:static inline unsigned char *__skb_push(struct sk_buff *skb, unsigned int len);和unsigned char *skb_push(struct sk_buff *skb, unsigned int len);第一個函數是詳細內容的實現(關鍵函數),第二個函數僅僅是在第一個函數的基礎上進行一些合法性檢查。

? ? ? ? 第三、其它簡單的操作函數:

? ? ? ? 獲取/設置協議頭指針等一系列函數。如:獲取IP頭指針,unsigned char *skb_network_header(const struct sk_buff *skb);還有其它些函數(skb內存申請、skb克隆和復制、skb隊列操作)將到后面做具體分析。

? ? ? ? 敬請觀看下一篇 sk_buff整理筆記(三、內存分配和釋放)


sk_buff整理筆記(兩、操作函數)


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 日本久久中文字幕精品 | 久久天堂视频 | 久热九九 | 夜色资源站www国产在线资源 | 黄色一级毛片 | 日韩精品成人 | 婷婷六月色 | 中文字幕日韩一区二区不卡 | 久久国产精品久久久久久小说 | 亚洲精品99久久一区二区三区 | 色综合久久天天综线观看 | 国产精品久久久久鬼色 | 久久99精品久久久66 | 婷婷色中文字幕 | 日韩午夜在线视频 | 成人在线视频观看 | 免费看美女隐私的网站 | 操操日日 | 精品国产福利 | 老子影院午夜伦手机不卡6080 | 亚洲国产精品日韩高清秒播 | 日夜夜操| 91网红福利精品区一区二 | 国产精品久久精品福利网站 | 激情91| 日本伊人色综合网站 | 国产区综合另类亚洲欧美 | 中国国语毛片免费观看视频 | 欧美日本一区 | 国语高清精品一区二区三区 | 国产成人小视频在线观看 | 第一福利视频网 | 精品久久久久久中文字幕无碍 | 亚洲精品二三区伊人久久 | 色综合成人丁香 | 日韩va亚洲va欧美va浪潮 | 爱爱免费视频网站 | 国产成人精品.一二区 | 最近中文字幕在线视频1 | 国产亚洲精品激情一区二区三区 | 国产欧美亚洲精品综合在线 |