1樓:刑珈藍禾
1. 前言
在linux 2.6核心中對於網路資料包中的時間戳處理和2.4相比有了不少變化,如果原樣照搬2.4就要出錯
了。2. 2.6中的tstamp
2.4中skb的時間戳直接就用struct timeval結構,而且使用時直接訪問該引數。
2.6中的時間戳已經改為skb專用的時間結構struct skb_timeval:
struct sk_buff ;
定義如下:
struct skb_timeval ;
和2.4區別就是強調了引數是32位無符號數,時間是相對於一個基準時間的偏差,基準點可以自己定義,
通常還是按unix的預設基準時間;而在timeval中定義的是long,在64位系統中將是64位,而且是有符
號的,時間是絕對時間,即基準點是固定的。
在 include/linux/skbuff.h 中提供以下兩個函式介面來獲取和設定skb的時間戳:
/*** skb_get_timestamp - get timestamp from a skb
* @skb: skb to get stamp from
* @stamp: pointer to struct timeval to store stamp in
* * timestamps are stored in the skb as offsets to a base timestamp.
* this function converts the offset back to a struct timeval and stores
* it in stamp.
*/static inline void skb_get_timestamp(const struct sk_buff *skb, struct timeval *stamp)
/*** skb_set_timestamp - set timestamp of a skb
* @skb: skb to set stamp of
* @stamp: pointer to struct timeval to get stamp from
* * timestamps are stored in the skb as offsets to a base timestamp.
* this function converts a struct timeval to an offset and stores
* it in the skb.
*/static inline void skb_set_timestamp(struct sk_buff *skb, const struct timeval *stamp)
3. 記錄時間
2.4中skb的時間戳是自動記錄的,獲取skb後就能直接讀取其進入系統的時間。
而在2.6中,是否記錄時間戳成為可選的,大概因為很多網路應用中用不到skb的內部時間,為其賦值將
增加系統的開銷,系統增加了一個靜態引數netstamp_needed來控制是否記錄時間戳。
/* net/core/dev.c */
/* when > 0 there are consumers of rx skb time stamps */
static atomic_t netstamp_needed = atomic_init(0);
// 允許記錄時間戳
void net_enable_timestamp(void)
// 停止記錄時間戳
void net_disable_timestamp(void)
// 設定時間戳
void __net_timestamp(struct sk_buff *skb)
export_symbol(__net_timestamp);
static inline void net_timestamp(struct sk_buff *skb)
}在發包函式dev_queue_xmit_nit()和收包函式nettf_rx(),netif_receive_skb()中就呼叫了
net_timestamp()函式來設定時間戳,而預設情況下不記錄時間戳,要使系統記錄時間戳必須模組中呼叫
net_enable_timestamp()來允許記錄時間戳,模組退出時呼叫net_disable_timestamp()停止記錄。
3. 結論
對於安全裝置,要識別flood、scan等攻擊都要用到時間上的統計資訊,所以時間戳是必須的,而如果是從2.4移植到2.6,就必須增加net_enable_timestamp()開啟時間戳記錄,否則將會發現時間戳都是0而使統計失敗,而如果沒仔細檢查時間戳值的話,真是死都不知道是怎麼死的。
2樓:匿名使用者
可以下來用用,還可以免費使用。
ip資料包的定義是什麼
怎樣獲得ros時間戳
3樓:子君別無期
毋庸置疑,登陸winbox,在winbox右上方點選右鍵選擇time就ok了。
ip報文格式
cmd裡向別人ip投遞資料包的命令是什麼?
4樓:
投遞資料包的命令是ping,ping是最直接,最簡單的命令,使用也很方便:
ping -t 可以持續的ping,觀察丟包率很實用ping -l 可以設定向目標ip投放資料包的大小常用的就是這兩個命令,如果需要持續ping,並且需要設定資料包大小,可以ping -l 資料包大小 -t ip地址。
ip協議的操作
5樓:潭建樹
ip實現兩個基本功能:定址和分段。ip可以根據資料包包頭中包括的目的地址將資料包傳送到目的地址,在此過程中ip負責選擇傳送的道路,這種選擇道路稱為路由功能。
如果有些網路內只能傳送小資料包,ip可以將資料包重新組裝並在報頭域內註明。ip模組中包括這些基本功能,這些模組存在於網路中的每臺主機和閘道器上,而且這些模組(特別在閘道器上)有路由選擇和其它服務功能。對ip來說,資料包之間沒有什麼聯絡,對ip不好說什麼連線或邏輯鏈路。
ip使用四個關鍵技術提供服務:服務型別,生存時間,選項和報頭校驗碼。服務型別指希望得到的服務質量。
服務型別是一個引數集,這些引數是internet能夠提供服務的代表。這種服務型別由閘道器使用,用於在特定的網路,或是用於下下一個要經過的網路,或是下一個要對這個資料包進行路由的閘道器上選擇實際的傳送引數。生存時間是資料包可以生存的時間上限。
它由傳送者設定,由經過路由的地方處理。如果未到達時生存時間為零,拋棄此資料包。對於控制函式來說選項是重要的,但對於通常的通訊來說它沒有存在的必要。
選項包括時間戳,安全和特殊路由。報頭校驗碼保證資料的正確傳輸。如果校驗出錯,拋棄整個資料包。
ip不提供可靠的傳輸服務,它不提供端到端的或(路由)結點到(路由)結點的確認,對資料沒有差錯控制,它只使用報頭的校驗碼,它不提供重發和流量控制。如果出錯可以通過icmp報告,icmp在ip模組中實現。
當IP資料包的長度超過MTU時,路由器會如何處理
如果允許分片則路由器自動分片,如果不允許分片則給源傳送一個錯誤資訊。僅供參考 當路由器接受ip報文的mtu大於該路由器的最大mtu時,怎麼辦 評分 3.5 5 30頁 當路由器接收的ip報文的mtu大於該路由器的最大 mtu時,採取的策略是 b a.丟掉該分組 b.將該分組分片 c.直接 該分組 d...
鋁模具內孔大了1 2絲用什么工藝可以縮小
做個鑲塊鑲進去,鑲塊壁厚10mm左右就夠了 所以這個內徑22的孔直接加工成40的孔,做一個直徑40的鑲塊,在鑲塊上重新加工22的孔。用鋁合金製造的模具具有一下特點 1 材質均勻性好 熱處理技術卓越,產品在300 厚度 直徑 以下,強度 硬度基本保持一致 2 表面精度高,減少材料的浪費 3 加工效能好...
表示顏色可以用color的什么方法
color類中有一個構造方法可以傳入三個int值,分別代表rgb顏色的值。color c new color int a,ing g,int b 設定color的rgb顏色值即可。color c new color int a,ing g,int b 設定color的rgb顏色值即可。ios如何使用...