資料報skb buf SKB才是套接字的緩衝區)

2021-10-23 12:23:02 字數 957 閱讀 8324

(推薦《精通linux核心網路》這本書,我理解的不是很好)

有這麼乙個核心報錯:

[ 88.012762] skbuff: skb_over_panic: text:402434dc len:5158 put:5158 head:4dcde900 data:4dcde940 tail:0x4dcdfd66 end:0x4dcdef40 dev:eth1

然後核心就罷工了

(但是在以往的裝置上的使用,是沒有問題,但是今天就偶然出現了這麼個問題 ,但是就**的穩定性來說,是沒有問題的

具體的問題,還得再找找)

但是正好對套接字緩衝區skb_buf做乙個簡單的筆記,

按照以往的套路就是弄清楚skb_buf 是什麼的,有什麼作用,還有就是,在linux核心中扮演什麼樣的角色

skb_buf 是乙個結構體(具體的結構體原始碼就不寫了,太多了)

作用就是:套接字的緩衝區,資料報(做網路程式設計的同學,對套接字的使用很多,但是有沒有想過,套接字的所有資訊是從**來的,雖然沒必要必須知道 ,但是你得好奇)

skb_buf在核心中運作方式(以資料報代替skb_buf):

結構sk_buff表示乙個資料報,skb是套接字的乙個緩衝區,資料報可能當前主機中使用者空間應用程式建立的本地套接字生成的,也可能是核心套接字生成的(這是書中原話,感覺作者在猜,不過猜的很有道理)

大概的流程:

從網路裝置(鏈路層)收到物理幀以後,將其關聯到資料報

然後資料報在提交給第三層(網路層)

如果發現是目的地是本地,就繼續往上到第四層 (傳輸層)

如果發現目的地不是本地,就直接在第三層**到別的裝置(裝置需要支援路由功能)

從發生核心崩潰前的操作,來看 ,應該就是和作者的猜想是一致的,我覺得應該是核心套接字生成的,使用者空間只負責和核心進行資料上的互動,核心進行處理,操作,生成(不太了解,因為還沒開始看這本書,很尬講的)

資料報格式 USB資料報解析

由域構成的包有四種型別,分別是令牌包 資料報 握手包和特殊包,前面三種是重要的包,不同包的域結構不同,介紹如下 1 令牌包 分為輸入包 輸出包 設定包和幀起始包 注意這裡的輸入包是用於設定輸入命令的,輸出包是用來設定輸出命令的,而不是放資料的 其中輸入包 輸出包和設定包的格式都是一樣的 sync p...

IP資料報 TCP資料報結構詳解

一般來說,網路程式設計我們僅僅須要呼叫一些封裝好的函式或者元件就能完畢大部分的工作,可是一些特殊的情況下,就須要深入的理解 網路資料報的結構,以及協議分析。如 網路監控,故障排查等 ip包是不安全的,可是它是網際網路的基礎,在各方面都有廣泛的應用。由ip協議衍生的協議族有10數種 據我所知 以後還會...

網路資料報

我們知道網路是通過分組交換進行通訊,是將使用者傳送的資訊資料劃分成一定的長度,每個部分叫做乙個分組。每個分組的前面有乙個分組頭,用以指明該分組發往何位址,然後由 交換機根據每個分組的位址標誌,將他們 至目的地,這一過程稱為 分組交換 osi open system interconnection,開...