《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 其他 > Linux教學——如何學習 Linux 內核網絡協議棧

Linux教學——如何學習 Linux 內核網絡協議棧

2022-10-26
作者:土豆居士
來源:電子技術應用專欄作家 一口Linux
關鍵詞: Linux 網絡協議棧

  協議棧的細節

  下面將介紹一些內核網絡協議棧中常常涉及到的概念。

  sk_buff

  內核顯然需要一個數據結構來表示報文,這個結構就是 sk_buff ( socket buffer 的簡稱),它等同于在<TCP/IP詳解 卷2>中描述的 BSD 內核中的 mbuf。

  sk_buff 結構自身并不存儲報文內容,它通過多個指針指向真正的報文內存空間:

  微信截圖_20221026155705.png

  sk_buff 是一個貫穿整個協議棧層次的結構,在各層間傳遞時,內核只需要調整 sk_buff 中的指針位置就行。

  net_device

  內核使用 net_device 表示網卡。網卡可以分為物理網卡和虛擬網卡。物理網卡是指真正能把報文發出本機的網卡,包括真實物理機的網卡以及VM虛擬機的網卡,而像 tun/tap,vxlan、veth pair 這樣的則屬于虛擬網卡的范疇。

  如下圖所示,每個網卡都有兩端,一端是協議棧(IP、TCP、UDP),另一端則有所區別,對物理網卡來說,這一端是網卡生產廠商提供的設備驅動程序,而對虛擬網卡來說差別就大了,正是由于虛擬網卡的存在,內核才能支持各種隧道封裝、容器通信等功能。

  微信截圖_20221026155928.png

  socket & sock

  用戶空間通過 socket()、bind()、listen()、accept() 等庫函數進行網絡編程。而這里提到的 socket 和 sock 是內核中的兩個數據結構,其中 socket 向上面向用戶,而 sock 向下面向協議棧。

  如下圖所示,這兩個結構實際上是一一對應的。

  微信截圖_20221026155951.png

  注意到,這兩個結構上都有一個叫 ops 的指針, 但它們的類型不同。socket 的 ops 是一個指向 struct proto_ops 的指針,sock 的 ops 是一個指向 struct proto 的指針, 它們在結構被創建時確定。

  回憶網絡編程中 socket() 函數的原型:

微信截圖_20221026160045.png

  實際上, socket->ops 和 sock->ops 由前兩個參數 socket_family 和 socket_type 共同確定。

  如果 socket_family 是最常用的 PF_INET 協議簇, 則 socket->ops 和 sock->ops 的取值就記錄在 INET 協議開關表中:

 微信截圖_20221026160135.png

  L3->L4

  我們知道網絡協議棧是分層的,但實際上,具體到實現,內核協議棧的分層只是邏輯上的,本質還是函數調用。發送流程(上層調用下層)通常是直接調用(因為沒有不確定性,比如TCP知道下面一定IP),但接收過程不一樣了,比如報文在 IP 層時,它上面可能是 TCP,也可能是 UDP,或者是 ICMP 等等,所以接收過程使用的是注冊-回調機制。

  還是以 INET 協議簇為例,注冊接口是:

  微信截圖_20221026160156.png

  在內核網絡子系統初始化時,L4 層協議(如下面的 TCP 和 UDP)會被注冊:

 微信截圖_20221026160213.png

  而在IP層,查詢過路由后,如果該報文是需要上送本機的,則會根據報文的 L4 協議,送給不同的 L4 處理:

 微信截圖_20221026160253.png

  L2->L3

  L2->L3 如出一轍。只不過注冊接口變成了:

  微信截圖_20221026160310.png

  誰會注冊呢?顯然至少 IP 會:

微信截圖_20221026160329.png

  而在報文接收過程中,設備驅動程序會將報文的 L3 類型設置到 skb->protocol,然后在內核 netif_receive_skb 收包時,會根據這個 protocol 調用不同的回調函數:

 微信截圖_20221026160346.png

  Netfilter

  Netfilter 是報文在內核協議棧必然會通過的路徑,我們從下面這張圖就可以看到,Netfilter 在內核的 5 個地方設置了 HOOK 點,用戶可以通過配置 iptables 規則,在 HOOK 點對報文進行過濾、修改等操作。

  微信截圖_20221026160406.png

  在內核代碼中,我們時??梢?NF_HOOK 這樣的調用。我的建議是,如果你暫時不考慮 Netfilter,那么就直接跳過, 跟蹤 okfn 就行。

  微信截圖_20221026160428.png

  dst_entry

  內核需要確定收到的報文是應該本地上送(local deliver)還是轉發(forward),對本機發送(local out)的報文需要確定是從哪個網卡發送出去,這都是內核通過查詢 fib (forward information base, 轉發信息表) 確定。fib 可以理解為一個數據庫,數據來源是用戶配置或者內核自動生成的路由。

  fib 查詢的輸入是報文 sk_buff,輸出是 dst_entry. dst_entry 會被設置到 skb 上:

 微信截圖_20221026160448.png

  而 dst_entry 中最重要的是一個 input 指針和 output 指針:

  微信截圖_20221026160506.png

微信截圖_20221026160524.png



 更多信息可以來這里獲取==>>電子技術應用-AET<<

微信圖片_20210517164139.jpg

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          国产精品草草| 国产乱码精品一区二区三| 欧美午夜女人视频在线| 亚洲综合日韩在线| 欧美高清视频在线| 欧美在线首页| 在线观看中文字幕不卡| 久久激情视频免费观看| 影视先锋久久| 欧美激情一区二区久久久| 一区二区三区在线视频播放| 中文在线一区| 国产精品视频专区| 伊伊综合在线| 亚洲国产第一| 久久精品一二三区| 中国av一区| 久热精品视频在线观看| 一区二区在线视频播放| 日韩视频欧美视频| 亚洲欧美日韩系列| 久久久99精品免费观看不卡| 欧美日韩中字| 91久久极品少妇xxxxⅹ软件| 欧美精品日韩精品| 欧美国产1区2区| 亚洲制服欧美中文字幕中文字幕| 欧美日韩精品一区二区三区| 午夜精品久久久久久久99樱桃| 欧美亚洲专区| 农夫在线精品视频免费观看| 欧美在线www| 欧美一区二区三区日韩| 国模大胆一区二区三区| 久久久久综合一区二区三区| 欧美a一区二区| 亚洲欧美不卡| 国产精品美女www爽爽爽视频| 国产一区二区日韩精品| 国产欧美精品在线观看| 国产亚洲福利社区一区| 国内精品嫩模av私拍在线观看| 亚洲在线观看免费视频| 免费视频一区| 男人的天堂亚洲在线| 亚洲国产婷婷香蕉久久久久久99| 久久久久久久综合日本| 精品99一区二区三区| 亚洲第一区中文99精品| 欧美特黄视频| 久久久91精品国产一区二区三区| 欧美成人国产一区二区| 国产精品一二三四区| 久久亚洲影音av资源网| 久久九九有精品国产23| 久久一区视频| 国产在线视频不卡二| 欧美日韩在线第一页| 久久国产成人| 国产欧美日本一区二区三区| 亚洲一区二区免费| 欧美在线播放一区| 免费观看成人鲁鲁鲁鲁鲁视频| 国产拍揄自揄精品视频麻豆| 久久精品国产2020观看福利| 国产欧美在线视频| 亚洲欧美日韩综合国产aⅴ| 久久成人18免费网站| 亚洲欧美日韩中文播放| 欧美激情视频一区二区三区免费| 亚洲欧洲综合另类| 国产亚洲成年网址在线观看| 免费看成人av| 国模精品一区二区三区色天香| 另类尿喷潮videofree| 欧美在线视频免费观看| 性欧美大战久久久久久久久| 国产欧美精品一区二区三区介绍| 欧美日韩国产综合视频在线| 国产视频丨精品|在线观看| 国产欧美综合一区二区三区| 欧美精彩视频一区二区三区| 亚洲国产高清自拍| 欧美久久久久免费| 亚洲午夜精品| 久久久国产精品一区二区三区| 日韩香蕉视频| 国产精品蜜臀在线观看| 欧美一区二区成人| 久久精品视频免费播放| 原创国产精品91| 亚洲专区免费| 宅男精品视频| 欧美大胆人体视频| 国产午夜精品美女视频明星a级| 99re6热在线精品视频播放速度| 欧美人体xx| 亚洲精品一二| 亚洲日本成人网| 亚洲电影第1页| 日韩性生活视频| 中日韩高清电影网| 玉米视频成人免费看| 99国产精品久久久久久久久久| 亚洲宅男天堂在线观看无病毒| 国产人成精品一区二区三| 一区二区成人精品| 香港成人在线视频| 亚洲国产精品久久| 亚洲综合视频网| 欧美日韩在线直播| 美女主播视频一区| 久久精品日韩一区二区三区| 久久影院午夜片一区| 欧美亚洲色图校园春色| 美女精品视频一区| 日韩一区二区免费高清| 欧美主播一区二区三区美女 久久精品人| 久久久久免费观看| 一色屋精品视频免费看| 最新国产成人av网站网址麻豆| 欧美激情久久久| 国产一区二区三区黄视频| 日韩网站在线看片你懂的| 母乳一区在线观看| 99精品99久久久久久宅男| 亚洲激情视频网站| 在线播放亚洲| 国产精品国产三级国产普通话三级| 国产原创一区二区| 久久成人综合视频| 亚洲美女黄网| 久久男人av资源网站| 伊人久久婷婷色综合98网| 一二美女精品欧洲| 亚洲高清三级视频| 午夜国产精品视频免费体验区| 欧美视频中文字幕| 日韩视频一区| 欧美14一18处毛片| 欧美精品123区| 久久久国产亚洲精品| 韩国v欧美v日本v亚洲v| 久久久久一区二区| 欧美高清影院| 日韩特黄影片| 国产欧美日韩在线| 国产精品美女| 黑人巨大精品欧美一区二区小视频| 亚洲日本中文字幕区| 国内不卡一区二区三区| 精品999在线播放| 欧美伊人久久久久久午夜久久久久| 久久精品一级爱片| 欧美日韩国产一区| 国产欧美一区二区三区国产幕精品| 午夜免费久久久久| 亚洲精一区二区三区| 亚洲区一区二区三区| 亚洲午夜精品久久久久久app| 国产一区二区三区成人欧美日韩在线观看| 亚洲肉体裸体xxxx137| 在线精品一区二区| 亚洲私人影吧| 欧美日本在线播放| 国产精品久久久久久久久婷婷| 久久国产日韩欧美| 在线观看视频免费一区二区三区| 亚洲一区一卡| 国产精品一区二区你懂得| 在线看欧美视频| 亚洲欧美日韩天堂| 国产视频精品xxxx| 午夜一区在线| 亚洲欧美另类国产| 亚洲国产精品一区| 国产精品免费网站| 国产精品一区二区三区成人| 黄色成人免费观看| 亚洲国语精品自产拍在线观看| 国产精品日日摸夜夜添夜夜av| 日韩一二三在线视频播| 国产一区二区三区自拍| 有坂深雪在线一区| 国产日韩一级二级三级| 国产日韩欧美视频在线| 好吊成人免视频| 欧美国产激情二区三区| 91久久久久久国产精品| 在线观看欧美亚洲| 亚洲丶国产丶欧美一区二区三区| 国产一区二区三区精品久久久| 亚洲影视九九影院在线观看| 欧美视频1区| 久久国产精品久久久| 国产精品成人播放| 欧美成人精品1314www| 亚洲欧美日韩在线一区| 亚洲视屏一区| 亚洲欧美日韩国产成人| 午夜亚洲视频| 久久亚洲不卡| 国产精品99久久久久久久vr| 国产精品sss| 欧美日韩系列| 激情小说亚洲一区| 午夜精品免费在线| 国产一区二区你懂的| 欧美日韩国产一区二区三区| 亚洲国产欧美国产综合一区| 精品成人一区| 欧美日韩国产成人在线| 欧美激情一区二区三区蜜桃视频| 先锋a资源在线看亚洲| 有坂深雪在线一区| 欧美视频在线一区二区三区| 欧美午夜理伦三级在线观看| 尤物九九久久国产精品的分类| 亚洲国产另类久久精品| 狠狠色狠狠色综合日日tαg| 欧美成人亚洲成人| 亚洲欧洲另类国产综合| 国产欧美精品在线播放| 久久精品国产96久久久香蕉| 国产精品日本精品| 亚洲国产精品日韩| 亚洲综合日本| 久久精品国产一区二区三区免费看| 亚洲一区二区成人在线观看| 亚洲欧美三级在线| 性刺激综合网| 国产欧美一区二区三区沐欲| 国产色产综合色产在线视频| 久久伊人一区二区| 国产女主播一区二区三区| 亚洲国产aⅴ天堂久久| 亚洲欧美国产高清va在线播| 亚洲成色最大综合在线| 欧美调教视频| 六月婷婷久久| 欧美精品日韩综合在线| 欧美亚洲在线| 极品少妇一区二区三区精品视频| 久久久亚洲欧洲日产国码αv| 国产精品免费一区二区三区在线观看| 国产精品专区h在线观看| 亚洲精品一区二区三区蜜桃久| 欧美精品福利| 亚洲欧美日韩在线一区| 欧美激情一区二区在线| 欧美精品亚洲| 欧美中文字幕久久| 亚洲日本电影在线| 91久久国产综合久久蜜月精品| 欧美一区二区三区四区高清| 国语自产精品视频在线看一大j8| 国产啪精品视频| 久久精品国产欧美激情| 欧美日韩精品综合在线| 亚洲专区免费| 国产精品试看| 国产主播精品在线| 欧美激情a∨在线视频播放| 国产精品视屏| 亚洲男人天堂2024| 亚洲国语精品自产拍在线观看| 亚洲欧美激情一区二区| 国产精品亚洲美女av网站| 亚洲福利视频一区二区| 亚洲一区二区3| 欧美日韩小视频| 欧美在线视频观看免费网站| 99精品热视频| 国产伦精品一区二区三区免费迷| 亚洲成色www8888| 极品尤物av久久免费看| 午夜在线不卡| 欧美成人午夜视频| 亚洲国产成人高清精品| 久久久久女教师免费一区| 亚洲视频图片小说| 女仆av观看一区| 久久婷婷国产综合精品青草| 美腿丝袜亚洲色图| 欧美一区二区三区在线视频| 久久久久国色av免费观看性色| 国产一级精品aaaaa看| 国产亚洲欧美另类一区二区三区| 亚洲精品在线看| 国产亚洲欧美日韩美女| 欧美一区二区黄色| 一区二区欧美激情| 国产精品一区视频| 亚洲欧美日韩国产一区二区三区| 亚洲风情亚aⅴ在线发布| 国模精品娜娜一二三区| 亚洲欧美国产va在线影院| 亚洲电影在线看| 一区二区三区高清在线观看| 欧美一区二区三区在线看| 在线观看日产精品| 91久久精品一区二区别| 久久精品夜色噜噜亚洲a∨| 亚洲电影免费观看高清完整版| 国产精品乱子乱xxxx| 久久精品99无色码中文字幕| 亚洲一区制服诱惑| 久久久久欧美| 国产精品精品视频| 欧美一级视频| 国内偷自视频区视频综合| 国产婷婷精品| 怡红院精品视频| 国产一区二区三区免费在线观看| 国产精品成人在线观看| 久久精视频免费在线久久完整在线看| 欧美日韩亚洲综合在线| 久久午夜色播影院免费高清| 欧美日韩一区在线视频| 亚洲小说春色综合另类电影| 久久久久久久久久久久久9999| 狠狠干成人综合网| 亚欧成人在线| 欧美一区在线直播| 亚洲欧洲精品一区二区三区不卡| 蜜桃精品久久久久久久免费影院| 国产精品美女www爽爽爽视频| 美国三级日本三级久久99|