青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
一年十二月  誰主春秋
關(guān)注:基礎(chǔ)系統(tǒng)工程 密碼學(xué) 人工智能
C++博客
首頁
新隨筆
聯(lián)系
聚合
管理
隨筆-162 評論-223 文章-30 trackbacks-0
Linux ICMP消息的產(chǎn)生與轉(zhuǎn)換
ICMP在IP系統(tǒng)間傳遞差錯和管理報文,是任何IP系統(tǒng)必須實現(xiàn)的組成部分。Linux 2.6.34中ICMP模塊的實現(xiàn)在linux/icmp.h,net/icmp.h和ipv4/icmp.c中,導(dǎo)出了
icmp_err_convert
數(shù)組和
icmp_send
函數(shù),供其它網(wǎng)絡(luò)子系統(tǒng)使用。在其它網(wǎng)絡(luò)子系統(tǒng)中,當(dāng)檢測到錯誤時,調(diào)用icmp_send產(chǎn)生并發(fā)送相應(yīng)的ICMP差錯消息到源主機;當(dāng)源主機收到ICMP不可達差錯消息,傳遞到原始套接字和傳輸層,而它們使用icmp_err_convert把對應(yīng)的消息代碼轉(zhuǎn)換成套接字層比較容易理解的錯誤代碼。在內(nèi)核空間中可發(fā)送的ICMP消息包括查詢應(yīng)答和差錯報文,下面總結(jié)了產(chǎn)生這兩類消息的網(wǎng)絡(luò)子系統(tǒng)(及函數(shù))與錯誤轉(zhuǎn)換。
應(yīng)答消息
應(yīng)答消息由ICMP模塊的內(nèi)部函數(shù)icmp_reply而非icmp_send發(fā)送。根據(jù)
RFC1122 3.2.2.9
規(guī)范, 除非一個主機作為地址掩碼代理,否則不能發(fā)送回復(fù),這對應(yīng)ICMP的icmp_address實現(xiàn)為空,因此上表沒有列出地址掩碼應(yīng)答項(內(nèi)核符號為ICMP_ADDRESSREPLY)。
差錯消息
差錯消息由中間路由器或目的主機產(chǎn)生,當(dāng)數(shù)據(jù)報不能成功提交給目的主機時。從上表可見,在IP層的接收、本地處理、轉(zhuǎn)發(fā)和輸出各過程中,都可能產(chǎn)生差錯消息;在傳輸層如果對應(yīng)的端口沒有打開,那么UDP會產(chǎn)生ICMP端口不可達差錯,而
TCP則會使用自己的差錯處理機制發(fā)送一個RST復(fù)位包,這也是上表沒有列出TCP子系統(tǒng)的原因
。對于重定向差錯,由ICMP模塊的icmp_redirect調(diào)用ip_rt_redirect更新路由;其它差錯則由icmp_unreach處理。
錯誤轉(zhuǎn)換
第2列為icmp_err_convert數(shù)組索引,第4列也就是調(diào)用socket API出錯時返回的errno,最后1列為icmp_err_convert中的fatal成員取值,0表示非致命錯誤,1表示致命錯誤,需要報告給用戶進程。錯誤轉(zhuǎn)換會被RAW的raw_err、TCP的tcp_v4_err和UDP的udp_err用到,對于ICMP_DEST_UNREACH類型的差錯,使用上表轉(zhuǎn)換;ICMP_SOURCE_QUENCH類型的忽略不處理;ICMP_PARAMETERPROB類型的轉(zhuǎn)換成
EPROTO
(協(xié)議錯誤);ICMP_TIME_EXCEEDED類型的轉(zhuǎn)換成
EHOSTUNREACH
。
在這要注意,從ICMP_PORT_UNREACH到ECONNREFUSED的轉(zhuǎn)換,不適用于TCP,原因已在
上節(jié)
說明;而對于UDP的
未連接
套接字,如果主機在線而端口沒打開,調(diào)用sendto得不到ECONNREFUSED錯誤,但recvfrom會阻塞,這是因為雖然內(nèi)核收到了ICMP差錯,但沒上報給應(yīng)用進程。盡管如此,如果想得到ECONNREFUSED錯誤,那么可以寫個ICMP守護進程,應(yīng)用進程先把它的套接字描述符通過unix域套接口傳遞到ICMP守護進程,而守護進程使用raw socket來接收ICMP差錯,再發(fā)給應(yīng)用進程。
發(fā)送限速
不論一般差錯消息還是重定向差錯消息,發(fā)送限速針對的都是特定目標(biāo)主機。
一般限速
在使用icmp_send發(fā)送差錯消息(PMTU消息除外)時,為減少網(wǎng)絡(luò)擁塞而限制了發(fā)送的速率,限速由xrlim_allow函數(shù)實現(xiàn),定義在ipv4/icmp.c中。
1
#define
XRLIM_BURST_FACTOR
6
2
int
xrlim_allow
(
struct
dst_entry
*
dst,
int
timeout)
3
{
4
unsigned
long
now, token
=
dst
->
rate_tokens;
5
int
rc
=
0
;
6
7
now
=
jiffies;
8
token
+=
now
-
dst
->
rate_last;
9
dst
->
rate_last
=
now;
10
if
(token
>
XRLIM_BURST_FACTOR
*
timeout)
11
token
=
XRLIM_BURST_FACTOR
*
timeout;
12
if
(token
>=
timeout)
{
13
token
-=
timeout;
14
rc
=
1
;
15
}
16
dst
->
rate_tokens
=
token;
17
return
rc;
18
}
dst為目標(biāo)路由緩存,timeout為允許發(fā)送的超時(單位為jiffies),dst->rate_tokens記錄令牌的個數(shù),當(dāng)令牌個數(shù)不小于timeout時,則減少timeout并允許發(fā)送一個消息;反之則不能發(fā)送,需等到令牌個數(shù)累積到大于timeout時才能發(fā)送,但是不能無限大,否則就會導(dǎo)致在一個可能很短的timeout內(nèi),發(fā)送遠(yuǎn)多于6個的消息,引起ICMP風(fēng)暴,所以這里限制了令牌的最大值為XRLIM_BURST_FACTOR*timeout即6倍的超時,也就是說在一個timeout內(nèi),最多能發(fā)送6個差錯消息。
重定向限速
路由子系統(tǒng)使用ip_rt_send_redirect來發(fā)送重定向消息,定義在ipv4/route.c中,該函數(shù)內(nèi)部調(diào)用icmp_send實現(xiàn),在它的限速基礎(chǔ)上,使用
指數(shù)回退算法
控制發(fā)送速率。
1
void
ip_rt_send_redirect
(
struct
sk_buff
*
skb)
2
{
3
struct
rtable
*
rt
=
skb_rtable(skb);
4
5
6
/**/
/*
No redirected packets during ip_rt_redirect_silence;
7
* reset the algorithm.
8
*/
9
if
(time_after(jiffies, rt
->
u.dst.rate_last
+
ip_rt_redirect_silence
))
10
rt
->
u.dst.rate_tokens
=
0
;
11
12
/**/
/*
Too many ignored redirects; do not send anything
13
* set u.dst.rate_last to the last seen redirected packet.
14
*/
15
if
(rt
->
u.dst.rate_tokens
>=
ip_rt_redirect_number
)
{
16
rt
->
u.dst.rate_last
=
jiffies;
17
return
;
18
}
19
20
/**/
/*
Check for load limit; set rate_last to the latest sent
21
* redirect.
22
*/
23
if
(rt
->
u.dst.rate_tokens
==
0
||
time_after(jiffies,
(rt
->
u.dst.rate_last
+
(
ip_rt_redirect_load
<<
rt
->
u.dst.rate_tokens))))
{
24
icmp_sen
d
(skb, ICMP_REDIRECT, ICMP_REDIR_HOST, rt
->
rt_gateway);
25
rt
->
u.dst.rate_last
=
jiffies;
26
++
rt
->
u.dst.rate_tokens;
27
28
}
29
}
重定向差錯使用ip_rt_redirect_silence(默認(rèn)為(HZ/50)<<10)、ip_rt_redirect_number(默認(rèn)為9)和ip_rt_redirect_load(默認(rèn)為HZ/50)3個量來控制發(fā)送的速率;rt->u.dst.rate_last記錄上次發(fā)送的時間,rt->u.dst.rate_tokens累計發(fā)送總數(shù),最大值為ip_rt_redirect_number;當(dāng)兩次發(fā)送的時間間隔超過ip_rt_redirect_silence或ip_rt_redirect_load<<rt->u.dst.rate_tokens,并且發(fā)送總數(shù)不超過ip_rt_redirect_number時,才允許發(fā)送一個,這樣一來,在ip_rt_redirect_silence間隔內(nèi),每次發(fā)送的超時呈2的指數(shù)增長,達到了變減速發(fā)送的效果,直到總數(shù)達到ip_rt_redirect_number時停止發(fā)送,這是因為源主機可能忽略了重定向消息所以停止發(fā)送;當(dāng)ip_rt_redirect_silence時間過后,又允許發(fā)送了,這是因為認(rèn)為源主機沒有更新路由所以又需要發(fā)送。
posted on 2015-05-18 19:52
春秋十二月
閱讀(2812)
評論(0)
編輯
收藏
引用
所屬分類:
Network
只有注冊用戶
登錄
后才能發(fā)表評論。
【推薦】100%開源!大型工業(yè)跨平臺軟件C++源碼提供,建模,組態(tài)!
相關(guān)文章:
基于X509證書的身份認(rèn)證思考小結(jié)
使用HiRedis實現(xiàn)自動重連Redis
基于ENet實現(xiàn)可靠UDP通信的同步模型
總結(jié)網(wǎng)絡(luò)路由走向診斷方法
深入理解SSL/TLS技術(shù)內(nèi)幕
一種攔截Linux原始套接字IO的方法
一種P2P代理中TCP連接調(diào)度的方法
TCP分組丟失時的狀態(tài)變遷
Linux ICMP消息的產(chǎn)生與轉(zhuǎn)換
Linux套接字與虛擬文件系統(tǒng)(2):操作和銷毀
網(wǎng)站導(dǎo)航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
本博客所有隨筆均為原創(chuàng),因為不定期維護更新,所以轉(zhuǎn)載請注明出處,如有問題和建議,請留言或評論,發(fā)表您的寶貴意見,藉此平臺以分享交流、共同進步。
聯(lián)系方式:微信math-engineer
<
2024年9月
>
日
一
二
三
四
五
六
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
常用鏈接
我的隨筆
我的評論
我參與的隨筆
留言簿
(79)
給我留言
查看公開留言
查看私人留言
隨筆分類
(161)
Algorithm(49)
C/C++(24)
Compiler(25)
Compute Theory(5)
Database(4)
Network(17)
Opensrc(13)
System(24)
隨筆檔案
(162)
2025年7月 (1)
2025年6月 (2)
2025年4月 (2)
2024年12月 (1)
2024年11月 (1)
2024年9月 (1)
2024年8月 (2)
2024年6月 (1)
2024年5月 (1)
2024年4月 (1)
2024年3月 (2)
2024年2月 (2)
2023年12月 (1)
2023年11月 (2)
2023年10月 (2)
2023年9月 (37)
2021年12月 (1)
2021年10月 (1)
2021年9月 (1)
2021年2月 (1)
2020年5月 (3)
2020年4月 (1)
2019年11月 (4)
2019年7月 (1)
2018年11月 (1)
2017年12月 (1)
2016年12月 (1)
2016年11月 (2)
2016年10月 (1)
2016年9月 (1)
2016年8月 (3)
2016年7月 (4)
2016年5月 (1)
2015年10月 (2)
2015年9月 (1)
2015年6月 (2)
2015年5月 (3)
2015年2月 (1)
2015年1月 (1)
2014年12月 (2)
2014年4月 (2)
2014年3月 (1)
2014年1月 (1)
2013年10月 (1)
2013年9月 (1)
2013年8月 (3)
2013年5月 (1)
2013年3月 (1)
2012年11月 (1)
2012年9月 (3)
2012年8月 (1)
2012年7月 (1)
2012年6月 (5)
2012年5月 (3)
2011年12月 (5)
2011年11月 (1)
2011年10月 (5)
2011年8月 (7)
2011年7月 (6)
2011年6月 (6)
2010年6月 (1)
2009年12月 (1)
2009年8月 (1)
2009年7月 (1)
2009年6月 (1)
2009年4月 (3)
文章分類
(30)
詩詞作品集(30)
關(guān)注的開源項目
LLVM
編譯系統(tǒng)
nginx
高性能Web服務(wù)器
OpenSSL
密碼學(xué)庫
suricata
網(wǎng)絡(luò)IPS引擎
最新隨筆
1.?關(guān)于分圓域的一般結(jié)論
2.?一個歐拉數(shù)整除問題的兩種證法
3.?有限域上的特征與指數(shù)和之?dāng)U展
4.?二元二次型的相似變換、正定性與正交分解
5.?關(guān)于群的一些結(jié)論及應(yīng)用
6.?不定方程的代數(shù)數(shù)論解法
7.?關(guān)于橢圓曲線的驗證計算
8.?不可約多項式判別算法的改正
9.?論證有限域上平方根的求解
10.?求解離散對數(shù)問題的Terr算法
積分與排名
積分 - 420424
排名 - 56
最新評論
1.?re: 一種攔截Linux原始套接字IO的方法[未登錄]
很有前途和很有錢途啊。
--chipset
2.?re: 一種攔截Linux原始套接字IO的方法[未登錄]
@chipset
是的
--春秋十二月
3.?re: 一種攔截Linux原始套接字IO的方法[未登錄]
工作是做網(wǎng)絡(luò)安全?
--chipset
4.?re: 一種使用函數(shù)指針實現(xiàn)狀態(tài)機的方法
函數(shù)指針實現(xiàn)狀態(tài)機
--linda
5.?re: 多標(biāo)簽視圖類CTabView的設(shè)計實現(xiàn)
為啥代碼缺少一些呢,給新手個完整點的啊
--pekingliu
6.?re: 工作線程與消息循環(huán)
從消息隊列取出消息 mark了
--mmocake
7.?re: 一種簡單的跨平臺套接字管道
評論內(nèi)容較長,點擊標(biāo)題查看
--IT搬運工
8.?re: 一種簡單的跨平臺套接字管道
windows僅支持af_init和af_init6地址族有錯別字么?
af_init和af_init6
--IT搬運工
9.?re: Shell應(yīng)用(8):使用awk定位反匯編輸出[未登錄]
厲害
--Chipset
10.?re: TCP分組丟失時的狀態(tài)變遷
不錯
--Binky
閱讀排行榜
1.?基于OpenSSL實現(xiàn)的安全連接(14042)
2.?字符串16進制顯示(12905)
3.?基于boost asio實現(xiàn)的ssl socket框架(12353)
4.?Linux套接字與虛擬文件系統(tǒng)(1):初始化和創(chuàng)建(8709)
5.?關(guān)于數(shù)據(jù)庫的一些學(xué)習(xí)研究心得(8137)
6.?使用CString GetBuffer自適應(yīng)獲取計算機名稱(7999)
7.?使用正則表達式解析URL(7964)
8.?basic_string內(nèi)存泄露問題之分析解決(7772)
9.?Shell應(yīng)用(4): 使用sed刪除行尾的^M字符(7703)
10.?nginx iocp(1):tcp異步連接(7675)
評論排行榜
1.?basic_string內(nèi)存泄露問題之分析解決(19)
2.?求單向鏈表倒序第m個元素(11)
3.?基于順序存儲實現(xiàn)的多叉樹(1):深度優(yōu)先存儲(9)
4.?字符大小寫轉(zhuǎn)換(7)
5.?字符串16進制顯示(6)
6.?面向?qū)ο箧i框架的設(shè)計與實現(xiàn)(6)
7.?Shell應(yīng)用(4): 使用sed刪除行尾的^M字符(5)
8.?使用正則表達式解析URL(5)
9.?工作線程與消息循環(huán)(5)
10.?十進制整數(shù)千位分隔符(4)
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 春秋十二月
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
中文亚洲视频在线
|
欧美色综合网
|
一区二区三区日韩欧美
|
亚洲精品偷拍
|
99这里只有精品
|
久久综合999
|
免费日韩成人
|
亚洲黄色高清
|
亚洲日本在线观看
|
亚洲一区二区黄色
|
久久久精品2019中文字幕神马
|
久久久99国产精品免费
|
美女在线一区二区
|
欧美午夜片在线免费观看
|
国产欧美一区二区白浆黑人
|
黄色成人在线观看
|
一本久久青青
|
久久精品一区二区三区中文字幕
|
欧美大胆成人
|
aⅴ色国产欧美
|
久久久久国产一区二区
|
欧美日产一区二区三区在线观看
|
日韩亚洲综合在线
|
亚洲欧美日韩在线观看a三区
|
久久精品国产清高在天天线
|
亚洲欧洲一区二区三区久久
|
亚洲网站在线看
|
久久这里只精品最新地址
|
欧美视频中文字幕在线
|
亚洲第一级黄色片
|
久久国产精品一区二区三区
|
亚洲精品综合精品自拍
|
久久精品中文字幕免费mv
|
欧美日本乱大交xxxxx
|
国产在线精品一区二区中文
|
亚洲视频999
|
亚洲日本免费
|
免费在线亚洲
|
亚洲国产成人精品久久
|
久久香蕉精品
|
国产精品视频免费观看
|
妖精成人www高清在线观看
|
久久亚洲一区二区三区四区
|
亚洲一区二区三区午夜
|
欧美日韩一区二区在线播放
|
亚洲人线精品午夜
|
欧美激情第一页xxx
|
欧美在线综合视频
|
国产精品综合
|
性欧美超级视频
|
亚洲色图在线视频
|
欧美日韩第一区
|
99riav1国产精品视频
|
欧美福利专区
|
久久亚洲免费
|
亚洲黄页视频免费观看
|
欧美电影免费观看高清完整版
|
欧美日韩国产综合一区二区
|
欧美1区2区3区
|
在线日韩欧美视频
|
欧美成人综合
|
欧美麻豆久久久久久中文
|
一本色道**综合亚洲精品蜜桃冫
|
一区二区三区鲁丝不卡
|
亚洲日本欧美
|
国产精品久久
|
欧美一区亚洲一区
|
欧美一区二区在线播放
|
黑人操亚洲美女惩罚
|
另类av一区二区
|
欧美波霸影院
|
亚洲一级黄色av
|
亚洲欧美综合
|
尤物精品在线
|
亚洲精品国产精品国自产在线
|
欧美日韩一区二
|
香蕉久久夜色精品国产使用方法
|
午夜精品久久久久久久久久久久
|
狠狠色狠狠色综合日日五
|
亚洲国产成人91精品
|
欧美日韩成人一区二区
|
午夜在线精品
|
老色鬼精品视频在线观看播放
|
99av国产精品欲麻豆
|
亚洲视频精品在线
|
激情久久久久久久
|
亚洲美女av黄
|
国产在线麻豆精品观看
|
亚洲欧洲一区二区天堂久久
|
国产精品扒开腿做爽爽爽软件
|
99精品视频一区二区三区
|
国产精品亚洲综合久久
|
欧美18av
|
国产精品一区免费在线观看
|
蜜臀av性久久久久蜜臀aⅴ四虎
|
欧美精品久久一区
|
久久久久88色偷偷免费
|
欧美日韩国产区一
|
久热国产精品
|
国产精品久久久久久久久婷婷
|
久热这里只精品99re8久
|
欧美午夜视频一区二区
|
欧美大尺度在线
|
国产亚洲欧美一区二区三区
|
日韩视频专区
|
亚洲国产精品一区二区第一页
|
亚洲午夜影视影院在线观看
|
亚洲精品123区
|
久久精品123
|
欧美伊人久久久久久久久影院
|
欧美激情1区2区3区
|
久久久在线视频
|
国产精品影院在线观看
|
9l国产精品久久久久麻豆
|
亚洲日本欧美在线
|
久久午夜激情
|
欧美.www
|
亚洲精华国产欧美
|
韩国av一区二区三区四区
|
99在线热播精品免费99热
|
韩日欧美一区
|
久久精品国产久精国产一老狼
|
亚洲午夜激情网页
|
欧美精品在线观看一区二区
|
亚洲大胆av
|
久久蜜桃av一区精品变态类天堂
|
亚洲一二三区视频在线观看
|
欧美精品九九
|
亚洲电影av
|
亚洲精品在线视频观看
|
美女精品在线观看
|
欧美二区在线播放
|
亚洲韩日在线
|
蜜桃视频一区
|
亚洲福利在线看
|
亚洲精品少妇30p
|
欧美激情视频一区二区三区不卡
|
男男成人高潮片免费网站
|
在线观看一区欧美
|
毛片基地黄久久久久久天堂
|
欧美成人黑人xx视频免费观看
|
一区二区三区在线观看国产
|
久久久无码精品亚洲日韩按摩
|
蜜臀久久99精品久久久久久9
|
亚洲国产aⅴ天堂久久
|
欧美高清视频一区
|
亚洲免费观看在线观看
|
亚洲在线视频观看
|
国产亚洲欧美一区二区三区
|
久久精品日韩
|
亚洲国产一区二区三区高清
|
日韩视频国产视频
|
欧美视频导航
|
欧美呦呦网站
|
亚洲高清免费
|
午夜一区在线
|
亚洲人成在线观看
|
国产精品久久久久一区二区三区共
|
午夜精品久久久久久久久久久久
|
久久乐国产精品
|
99re视频这里只有精品
|
国产欧美日韩精品丝袜高跟鞋
|
久久久久免费视频
|
一区二区欧美日韩视频
|
久久夜色精品
|
亚洲午夜伦理
|
一区在线免费观看
|
国产精品v日韩精品
|
久久一区二区精品
|
亚洲天堂黄色
|
欧美激情国产日韩精品一区18
|
亚洲一品av免费观看
|
好吊视频一区二区三区四区
|
欧美激情精品久久久六区热门
|
亚洲一区二区三区成人在线视频精品
|
欧美精品久久久久久久
|
亚洲一区二区三区高清不卡
|
麻豆精品网站
|
欧美一区二区观看视频
|
亚洲精品在线观看视频
|
国产日韩欧美黄色
|
国产精品白丝av嫩草影院
|
久久嫩草精品久久久精品一
|
亚洲视频专区在线
|
亚洲欧洲精品一区二区精品久久久
|
欧美一级专区免费大片
|
亚洲日本免费
|
1024成人网色www
|
亚洲国产影院
|
久久久噜噜噜久久中文字幕色伊伊
|
国产伦精品一区二区三区视频孕妇
|
亚洲精品1区2区
|
国产视频久久
|
国产精品爱啪在线线免费观看
|
免费成人毛片
|
久久午夜影视
|
久久人人97超碰国产公开结果
|
欧美在线网址
|
性欧美1819sex性高清
|
一区二区三区精密机械公司
|