锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲精品欧美专区,欧美无砖砖区免费,欧美精品粉嫩高潮一区二区http://m.shnenglu.com/qinqing1984/category/10072.htmlzh-cnSat, 30 Sep 2023 22:54:13 GMTSat, 30 Sep 2023 22:54:13 GMT60鍩轟簬X509璇佷功鐨勮韓浠借璇佹濊冨皬緇?/title><link>http://m.shnenglu.com/qinqing1984/archive/2023/09/30/230117.html</link><dc:creator>鏄ョ鍗佷簩鏈?/dc:creator><author>鏄ョ鍗佷簩鏈?/author><pubDate>Sat, 30 Sep 2023 00:00:00 GMT</pubDate><guid>http://m.shnenglu.com/qinqing1984/archive/2023/09/30/230117.html</guid><wfw:comment>http://m.shnenglu.com/qinqing1984/comments/230117.html</wfw:comment><comments>http://m.shnenglu.com/qinqing1984/archive/2023/09/30/230117.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/qinqing1984/comments/commentRss/230117.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/qinqing1984/services/trackbacks/230117.html</trackback:ping><description><![CDATA[<div> <div style="text-align: center;"><img src="http://m.shnenglu.com/images/cppblog_com/qinqing1984/x509-three-auths-2.jpg" width="1232" height="638" alt="" /></div>   鏈夊崟鍚戙佸弻鍚戙佷笁鍚?縐嶈璇佹柟寮忥紝鍓嶄袱鑰呭繀欏繪鏌ユ椂闂存埑浠ラ槻閲嶆斁鏀誨嚮錛屽崟鍚戝洜涓哄彧鏈変竴涓秷鎭紶閫掞紝濡傛灉浠呴潬涓嬈℃ч殢鏈烘暟鏄棤娉曞垽鏂秷鎭槸鍚﹂噸鏀俱傚弻鍚戞湁涓や釜娑堟伅浼犻掞紝涓鏉ヤ竴鍥烇紝浠呴潬涓嬈℃ч殢鏈烘暟鍙兘媯嫻嬪埌鍙戝搷搴旈偅鏂圭殑閲嶆斁銆傛渶鍚庤呭垯涓嶅繀錛屽彲浠呴氳繃涓嬈℃ч殢鏈烘暟媯嫻嬭嚜宸辨槸鍚﹂伃閬囬噸鏀炬敾鍑伙紝鍥犱負鎺ユ敹絎簩涓秷鎭殑閭f柟錛岄氳繃鍒ゆ柇絎簩涓秷鎭腑闅忔満鏁版槸鍚︾瓑浜庤嚜宸卞厛鍓嶅凡鍙戦佺涓涓秷鎭腑鐨勯偅涓紝鑻ヤ笉絳変簬鍒欎負閲嶆斁錛岃嫢絳変簬鍒欏彂絎笁涓‘璁ゆ秷鎭粰瀵規柟錛屽鏂規敹鍒板茍鍒ゆ柇紜娑堟伅涓殑闅忔満鏁版槸鍚︾瓑浜庡厛鍓嶅畠宸插彂閫佺浜屼釜娑堟伅涓殑闅忔満鏁幫紝鑻ョ瓑浜庡垯璇存槑絎畠鏀跺埌鐨勭涓涓秷鎭殑紜槸鍙︿竴鏂瑰彂閫佺殑鍗抽潪閲嶆斁錛屽惁鍒欎負閲嶆斁銆傚洜姝や笁鍚戣璇佸彲涓嶅繀鍚屾鍙屾柟鏃墮挓銆備絾姝e洜涓轟笉寮哄埗媯鏌ユ椂闂存埑鑰屽彲鑳藉鑷?span style="color: #ff00ff; font-size: 12pt;">涓棿浜烘敾鍑?/span>錛氬亣璁鵑氫俊鍙屾柟涓篈銆丅錛屼腑闂翠漢涓篊錛屾敾鍑繪楠ゅ涓?/div> <div> <strong>1</strong>. C涓嶣璁よ瘉鏃訛紝鍙戦佸厛鍓嶅凡鎴幏鐨凙鍒癇璇鋒眰娑堟伅緇橞</div> <div> <strong>2</strong>. 鎴幏騫跺瓨鍌˙鍒癆鐨勫搷搴旀秷鎭痻錛屼絾涓嶈漿鍙戯紝寮濮嬩笌A璁よ瘉</div> <div> <strong>3</strong>. 鏀跺埌A鐨勮姹傛秷鎭悗錛岃В瀵唜鍙栧嚭鍏朵腑鐨勯殢鏈烘暟Rb浣滀負鍝嶅簲緇橝娑堟伅涓殑闅忔満鏁幫紝鐢ㄨ嚜宸辯閽ョ緗叉暣涓秷鎭悗鍙戠粰A</div> <div> <strong>4</strong>. 鏀跺埌騫惰漿鍙慉鐨勭‘璁ゆ秷鎭粰B</div> <div>浠ヤ笂瀹屾垚鍚庯紝C灝辮兘鍐掑厖A涓嶣閫氫俊浜嗐?span style="color: #ff6600;">涓縐嶇畝鍗曠殑鏀硅繘鏂規硶</span>鏄厛鐢ㄥ鏂圭殑鍏挜鍔犲瘑娑堟伅涓殑闅忔満鏁幫紝鍐嶇敤鑷繁鐨勭閽ョ緗叉暣涓秷鎭傚叧浜庣綉緇滃崗璁殑瀹夊叏鎬у垎鏋愶紝涓繪祦鏂規硶鏄艦寮忓寲鍒嗘瀽錛屽彲浠ュ熷姪鐩稿叧宸ュ叿鏉ラ獙璇佹壘鍑烘紡媧?/div><img src ="http://m.shnenglu.com/qinqing1984/aggbug/230117.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/qinqing1984/" target="_blank">鏄ョ鍗佷簩鏈?/a> 2023-09-30 08:00 <a href="http://m.shnenglu.com/qinqing1984/archive/2023/09/30/230117.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>浣跨敤HiRedis瀹炵幇鑷姩閲嶈繛Redishttp://m.shnenglu.com/qinqing1984/archive/2021/02/25/217619.html鏄ョ鍗佷簩鏈?/dc:creator>鏄ョ鍗佷簩鏈?/author>Thu, 25 Feb 2021 07:51:00 GMThttp://m.shnenglu.com/qinqing1984/archive/2021/02/25/217619.htmlhttp://m.shnenglu.com/qinqing1984/comments/217619.htmlhttp://m.shnenglu.com/qinqing1984/archive/2021/02/25/217619.html#Feedback0http://m.shnenglu.com/qinqing1984/comments/commentRss/217619.htmlhttp://m.shnenglu.com/qinqing1984/services/trackbacks/217619.html涓昏鎬濊礬
 1. 棣栨榪炴帴鏃惰皟鐢╮edisConnectWithTimeout鎴杛edisConnectUnixWithTimeout榪炴帴Redis鏈嶅姟绔紝鑻ユ垚鍔熷垯淇濆瓨榪斿洖鐨剅edisContext錛屽亣璁句負ctx
 2. 鍙戦佸懡浠ゆ暟鎹悗鑾峰彇鍝嶅簲錛屽鏋滄槸pipeling妯″紡鍒欒皟鐢╮edisGetReply鑾峰彇鍝嶅簲錛屽啀媯鏌edisContext涓殑閿欒鐮侊紝濡傛灉涓虹綉緇滃嚭閿欐垨鍏抽棴錛屽垯涓嶇疆浣峜tx REDIS_CONNECTED鏍囧織
 3. 鍦ㄤ笅嬈″彂閫佹暟鎹椂錛屽厛媯鏌tx鍚︾疆浣嶄簡REDIS_CONNECTED鏍囧織錛岃嫢娌℃湁鍒欒皟鐢╮edisReconnect閲嶈繛Redis鏈嶅姟绔?br />
瀹炵幇浠g爜
 鑷姩榪炴帴
 1 int redis_auto_connect(CBED_REDIS *redis)
 2 {
 3     if(NULL==redis->ctx){
 4         redisContext *ctx;
 5         if(redis->type == CONN_TCP)
 6             ctx = redisConnectWithTimeout(redis->conn.tcp.ip, redis->conn.tcp.port, redis->timeout_conn);
 7         else
 8             ctx = redisConnectUnixWithTimeout(redis->conn.unix.path, redis->timeout_conn);
 9         
10         if(NULL==ctx){
11             zlog_fatal(c_redis, "redis allocate context fail");
12             return -1;
13             
14         }else if(ctx->err){
15             zlog_fatal(c_redis, "redis connection %s:%d error: %s", 
16                         redis->type==CONN_TCP?redis->conn.tcp.ip:redis->conn.unix.path, 
17                         redis->type==CONN_TCP?redis->conn.tcp.port:0, ctx->errstr);
18             redisFree(ctx);
19             return -1;
20         }
21         
22         if(REDIS_ERR==redisSetTimeout(ctx, redis->timeout_rw)){
23             zlog_fatal(c_redis, "redis set rw timeout error: %s", ctx->errstr);
24             redisFree(ctx);
25             return -1;
26         }
27         
28         redis->ctx = ctx;
29         if(redis_auth(redis)){
30             redisFree(ctx);
31             redis->ctx = NULL;
32             return -1;
33         }
34         
35     }    else if(!(redis->ctx->flags & REDIS_CONNECTED)){
36         int retry = redis->reconn_max, n = 0;
37         do {
38             if(REDIS_OK==redisReconnect(redis->ctx)){
39                 return redis_auth(redis);
40             }
41             
42             zlog_warn(c_redis, "redis reconnect %d error: %s", ++n, redis->ctx->errstr);    
43             sleep(redis->reconn_interval); //reconn_interval default is 3 seconds
44             
45         }while(--retry > 0);
46         
47         zlog_error(c_redis, "redis reconnect exceed max num %d", redis->reconn_max);
48         return -1;
49     }
50 
51     return 0;
52 }
 
 鍙戦佹椂媯鏌ラ敊璇爜
 1 static int redis_bulk_get_reply(CBED_REDIS *redis)
 2 {
 3     redisReply *r;
 4     int i = 0;        
 5     int num = redis->cmd_num;
 6     redis->cmd_num = 0;
 7 
 8     for(; i<num; ++i){
 9         if(REDIS_OK==redisGetReply(redis->ctx, (void**)&r)){
10             if(r->type == REDIS_REPLY_ERROR){
11                 zlog_error(c_redis, "redis get reply error: %.*s", r->len, r->str);
12                 freeReplyObject(r);
13                 return -1;
14             }
15             freeReplyObject(r);
16         
17         }else{
18             if(redis->ctx->err==REDIS_ERR_IO||redis->ctx->err==REDIS_ERR_EOF)
19                 redis->ctx->flags &= ~REDIS_CONNECTED;
20             zlog_fatal(c_redis, "redis get reply fail: %s", redis->ctx->errstr);
21             return -1;
22         }
23     }
24 
25     return 0;
26 }
27 
28 int redis_send(CBED_REDIS *redis, unsigned char *data, unsigned int size, int force)
29 {
30     if(redis_auto_connect(redis))
31         return -1;
32 
33     int i;
34     
35     if(redis->max_cmd_num > 1){ //pipelining
36         for(i=0; i<redis->queue_num; ++i){
37             if(REDIS_ERR == redisAppendCommand(redis->ctx, "RPUSH %s %b", redis->queue[i], data, size)) {
38                 zlog_fatal(c_redis, "redis append command rpush %s len %u fail: %s", redis->queue[i], size, redis->ctx->errstr);
39                 return -1;
40             }
41             
42             ++redis->cmd_num;
43             if((!force && redis->cmd_num==redis->max_cmd_num) || force){
44                 if(redis_bulk_get_reply(redis))
45                     return -1;
46             }
47         }
48         
49     }else{
50         for(i=0; i<redis->queue_num; ++i){
51             redisReply *r = redisCommand(redis->ctx, "RPUSH %s %b", redis->queue[i], data, size);
52             if(NULL==r){
53                 if(redis->ctx->err==REDIS_ERR_IO||redis->ctx->err==REDIS_ERR_EOF)
54                     redis->ctx->flags &= ~REDIS_CONNECTED;
55                 zlog_fatal(c_redis, "redis command rpush %s len %u fail: %s", redis->queue[i], size, redis->ctx->errstr);
56                 return -1;
57             }
58             
59             if(r->type == REDIS_REPLY_ERROR){
60                 zlog_error(c_redis, "redis reply rpush %s len %u error: %.*s", redis->queue[i], size, r->len, r->str);
61                 freeReplyObject(r);
62                 return -1;
63             }
64 
65             freeReplyObject(r);
66         }
67     }
68 
69     return 0;
70 }


]]>
鍩轟簬ENet瀹炵幇鍙潬UDP閫氫俊鐨勫悓姝ユā鍨?/title><link>http://m.shnenglu.com/qinqing1984/archive/2020/05/04/217279.html</link><dc:creator>鏄ョ鍗佷簩鏈?/dc:creator><author>鏄ョ鍗佷簩鏈?/author><pubDate>Mon, 04 May 2020 11:08:00 GMT</pubDate><guid>http://m.shnenglu.com/qinqing1984/archive/2020/05/04/217279.html</guid><wfw:comment>http://m.shnenglu.com/qinqing1984/comments/217279.html</wfw:comment><comments>http://m.shnenglu.com/qinqing1984/archive/2020/05/04/217279.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/qinqing1984/comments/commentRss/217279.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/qinqing1984/services/trackbacks/217279.html</trackback:ping><description><![CDATA[<span style="font-size: 13pt;"><strong>鍦烘櫙璇存槑</strong></span><br />    閫夋嫨ENet浠f浛TCP鐢ㄤ簬寮辯綉鐜(閫氬父涓㈠寘鐜囬珮)鐨勬暟鎹紶杈擄紝鎻愰珮鍙潬鎬у強浼犺緭鏁堢巼銆備負浜嗚鏄庢庢牱姝g‘鏈夋晥鍦板簲鐢‥Net錛屾湰鏂囨寜鐓CP C/S鍚屾閫氫俊鐨勬祦紼嬩綔浜嗗搴旂殑鎺ュ彛灝佽瀹炵幇錛屽彇搴撳悕涓?span style="color: #ff0000;"><strong>rudp</strong></span>銆?br /> <br /> <span style="font-size: 13pt;"><strong>鎺ュ彛瀵圭収<br /> </strong></span>   宸﹁竟涓簉udp搴撶殑API錛屽彸杈逛負鏍囧噯鐨凚erkeley濂楁帴瀛桝PI銆俽udp搴撴墍鏈堿PI鍓嶇紑涓簉udp錛宺udp_listen鍜宺udp_accept浠呯敤浜庢湇鍔$錛宺udp_connect鍜宺udp_disconnect浠呯敤浜庡鎴風錛涘叾瀹冩帴鍙e叡鐢ㄤ簬涓ょ錛屽叾涓璻udp_send璋冪敤rudp_sendmsg瀹炵幇錛宺udp_recv璋冪敤rudp_recvmsg瀹炵幇銆?br />                    <img src="http://m.shnenglu.com/images/cppblog_com/qinqing1984/rudp_vs_standard_socket_api.png" alt="" /><br /> <strong style="font-size: 13pt;"><br /> 鍏蜂綋瀹炵幇</strong><br />    鎵鏈夋帴鍙i伒寰狟erkeley濂楁帴瀛楁帴鍙g殑璇箟錛屼負綆鍗曡搗瑙侊紝閿欒鎻忚堪杈撳嚭鍒版爣鍑嗛敊璇祦銆?br />    ◆ <strong style="font-size: 12pt;">鐩戝惉</strong>錛屾垚鍔熻繑鍥?錛屽け璐ヨ繑鍥?1<br /> <div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 14px;padding-top: 4px;width: 98%;word-break:break-all"> <div><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #008080; "> 1</span> <span style="color: #0000FF; ">int</span> <strong style="color: #993366; font-size: 12pt;">rudp_listen</strong>(<span style="color: #0000FF; ">const</span> <span style="color: #0000FF; ">char</span> *ip, <span style="color: #0000FF; ">int</span> port, ENetHost **host)<br /> <span style="color: #008080; "> 2</span> {    <br /> <span style="color: #008080; "> 3</span>     ENetAddress address;    <br /> <span style="color: #008080; "> 4</span> <br /> <span style="color: #008080; "> 5</span>     <span style="color: #0000FF; ">if</span>(!strcmp(ip, "*"))<br /> <span style="color: #008080; "> 6</span>            ip = "0.0.0.0";<br /> <span style="color: #008080; "> 7</span> <br /> <span style="color: #008080; "> 8</span>     <span style="color: #0000FF; ">if</span>(enet_address_set_host_ip(&address, ip)){<br /> <span style="color: #008080; "> 9</span>           fprintf(stderr, "enet_address_set_host_ip %s fail", ip);<br /> <span style="color: #008080; ">10</span>         <span style="color: #0000FF; ">return</span> -1;<br /> <span style="color: #008080; ">11</span>     }<br /> <span style="color: #008080; ">12</span>     <br /> <span style="color: #008080; ">13</span>     address.port = port;<br /> <span style="color: #008080; ">14</span>     <br /> <span style="color: #008080; ">15</span>     assert(host);<br /> <span style="color: #008080; ">16</span>     *host = enet_host_create(&address, 1, 1, 0, 0);<br /> <span style="color: #008080; ">17</span>     <span style="color: #0000FF; ">if</span>(NULL==*host){<br /> <span style="color: #008080; ">18</span>           fprintf(stderr, "enet_host_create %s:%d fail", address.host, address.port);<br /> <span style="color: #008080; ">19</span>         <span style="color: #0000FF; ">return</span> -1;<br /> <span style="color: #008080; ">20</span>     }<br /> <span style="color: #008080; ">21</span> <br /> <span style="color: #008080; ">22</span>     <span style="color: #0000FF; ">int</span> size = 1024*1024*1024;<br /> <span style="color: #008080; ">23</span>     <span style="color: #0000FF; ">if</span>(enet_socket_set_option((*host)->socket, ENET_SOCKOPT_RCVBUF, size)){<br /> <span style="color: #008080; ">24</span>            fprintf(stderr, "enet set server socket rcvbuf %d bytes fail", size);<br /> <span style="color: #008080; ">25</span>     }<br /> <span style="color: #008080; ">26</span> <br /> <span style="color: #008080; ">27</span>     <span style="color: #0000FF; ">return</span> 0;<br /> <span style="color: #008080; ">28</span> }</div> </div> <br />    ◆ <strong style="font-size: 12pt;">鎺ュ彈榪炴帴</strong>錛屾垚鍔熻繑鍥?錛屽け璐ヨ繑鍥?1<br /> <div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 14px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #008080; "> 1</span> <span style="color: #0000FF; ">int</span> <strong style="font-size: 12pt; color: #993366;">rudp_accept</strong>(ENetHost *host, unsigned <span style="color: #0000FF; ">int</span> timeout, ENetPeer **peer)<br /> <span style="color: #008080; "> 2</span> {<br /> <span style="color: #008080; "> 3</span>     <span style="color: #0000FF; ">int</span> ret;<br /> <span style="color: #008080; "> 4</span>     ENetEvent <span style="color: #0000FF; ">event</span>;<br /> <span style="color: #008080; "> 5</span> <br /> <span style="color: #008080; "> 6</span>     ret = enet_host_service(host, &<span style="color: #0000FF; ">event</span>, timeout);<br /> <span style="color: #008080; "> 7</span>     <span style="color: #0000FF; ">if</span>(ret > 0){        <br /> <span style="color: #008080; "> 8</span>         <span style="color: #0000FF; ">if</span>(<span style="color: #0000FF; ">event</span>.type != ENET_EVENT_TYPE_CONNECT){<br /> <span style="color: #008080; "> 9</span>             <span style="color: #0000FF; ">if</span>(<span style="color: #0000FF; ">event</span>.type == ENET_EVENT_TYPE_RECEIVE)<br /> <span style="color: #008080; ">10</span>                 enet_packet_destroy(<span style="color: #0000FF; ">event</span>.packet);<br /> <span style="color: #008080; ">11</span>             fprintf(stderr, "enet_host_service event type %d is not connect", <span style="color: #0000FF; ">event</span>.type);<br /> <span style="color: #008080; ">12</span>             <span style="color: #0000FF; ">return</span> -1;<br /> <span style="color: #008080; ">13</span>         }<br /> <span style="color: #008080; ">14</span>         <br /> <span style="color: #008080; ">15</span>         assert(peer);<br /> <span style="color: #008080; ">16</span>         *peer = <span style="color: #0000FF; ">event</span>.peer;<br /> <span style="color: #008080; ">17</span>         <br /> <span style="color: #008080; ">18</span>     }<span style="color: #0000FF; ">else</span> <span style="color: #0000FF; ">if</span>(0==ret){<br /> <span style="color: #008080; ">19</span>         fprintf(stderr, "enet_host_service timeout %d", timeout);<br /> <span style="color: #008080; ">20</span>         <span style="color: #0000FF; ">return</span> -1;<br /> <span style="color: #008080; ">21</span>         <br /> <span style="color: #008080; ">22</span>     }<span style="color: #0000FF; ">else</span>{<br /> <span style="color: #008080; ">23</span>         fprintf(stderr, "enet_host_service fail");<br /> <span style="color: #008080; ">24</span>         <span style="color: #0000FF; ">return</span> -1;<br /> <span style="color: #008080; ">25</span>     }    <br /> <span style="color: #008080; ">26</span> <br /> <span style="color: #008080; ">27</span>     <span style="color: #0000FF; ">return</span> 0;<br /> <span style="color: #008080; ">28</span> }</div>    <br />    ◆ <strong style="font-size: 12pt;">寤虹珛榪炴帴</strong>錛屾垚鍔熻繑鍥?錛屽け璐ヨ繑鍥?1錛宑onn_timeout鏄繛鎺ヨ秴鏃訛紝rw_timeout鏄敹鍙戣秴鏃訛紝鍗曚綅涓烘縐?br /> <div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 14px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #008080; "> 1</span> <span style="color: #0000FF; ">int</span> <strong style="color: #993366; font-size: 12pt;">rudp_connect</strong><span style="font-size: 12pt;">(</span><span style="color: #0000FF; ">const</span> <span style="color: #0000FF; ">char</span> *srv_ip, <span style="color: #0000FF; ">int</span> srv_port, unsigned <span style="color: #0000FF; ">int</span> conn_timeout, unsigned <span style="color: #0000FF; ">int</span> rw_timeout, ENetHost **host, ENetPeer **peer)<br /> <span style="color: #008080; "> 2</span> {    <br /> <span style="color: #008080; "> 3</span>     assert(host);<br /> <span style="color: #008080; "> 4</span>     *host = enet_host_create(NULL, 1, 1, 0, 0);<br /> <span style="color: #008080; "> 5</span>     <span style="color: #0000FF; ">if</span>(NULL==*host){<br /> <span style="color: #008080; "> 6</span>         fprintf(stderr, "enet_host_create fail");<br /> <span style="color: #008080; "> 7</span>         <span style="color: #0000FF; ">goto</span> fail;<br /> <span style="color: #008080; "> 8</span>     }<br /> <span style="color: #008080; "> 9</span>     <span style="color: #0000FF; ">if</span>(enet_socket_set_option((*host)->socket, ENET_SOCKOPT_RCVBUF, 1024*1024*1024)){<br /> <span style="color: #008080; ">10</span>            fprintf(stderr, "enet set server socket rcvbuf 1M bytes fail");<br /> <span style="color: #008080; ">11</span>     }<br /> <span style="color: #008080; ">12</span>     <br /> <span style="color: #008080; ">13</span>     ENetAddress srv_addr;<br /> <span style="color: #008080; ">14</span>     <span style="color: #0000FF; ">if</span>(enet_address_set_host_ip(&srv_addr, srv_ip)){<br /> <span style="color: #008080; ">15</span>         fprintf(stderr, "enet_address_set_host_ip %s fail", srv_ip);<br /> <span style="color: #008080; ">16</span>         <span style="color: #0000FF; ">goto</span> fail;<br /> <span style="color: #008080; ">17</span>     }<br /> <span style="color: #008080; ">18</span>     srv_addr.port = srv_port;<br /> <span style="color: #008080; ">19</span>     <br /> <span style="color: #008080; ">20</span>     assert(peer);<br /> <span style="color: #008080; ">21</span>     *peer = enet_host_connect(*host, &srv_addr, 1, 0); <br /> <span style="color: #008080; ">22</span>     <span style="color: #0000FF; ">if</span>(*peer==NULL){<br /> <span style="color: #008080; ">23</span>             fprintf(stderr, "enet_host_connect %s:%d fail", srv_ip, srv_port);<br /> <span style="color: #008080; ">24</span>         <span style="color: #0000FF; ">goto</span> fail;<br /> <span style="color: #008080; ">25</span>     }<br /> <span style="color: #008080; ">26</span> <br /> <span style="color: #008080; ">27</span>     enet_peer_timeout(*peer, 0, rw_timeout, rw_timeout);<br /> <span style="color: #008080; ">28</span>     <br /> <span style="color: #008080; ">29</span>     <span style="color: #0000FF; ">int</span> cnt = 0;<br /> <span style="color: #008080; ">30</span>     ENetEvent <span style="color: #0000FF; ">event</span>;<br /> <span style="color: #008080; ">31</span> <br /> <span style="color: #008080; ">32</span>     <span style="color: #0000FF; ">while</span>(1){<br /> <span style="color: #008080; ">33</span>         ret = enet_host_service(*host, &<span style="color: #0000FF; ">event</span>, 1);<br /> <span style="color: #008080; ">34</span>         <span style="color: #0000FF; ">if</span>(ret == 0){    <br /> <span style="color: #008080; ">35</span>             <span style="color: #0000FF; ">if</span>(++cnt >= conn_timeout){ <br /> <span style="color: #008080; ">36</span>                    fprintf(stderr, "enet_host_service timeout %d", conn_timeout);<br /> <span style="color: #008080; ">37</span>                 <span style="color: #0000FF; ">goto</span> fail;<br /> <span style="color: #008080; ">38</span>             }<br /> <span style="color: #008080; ">39</span>         <br /> <span style="color: #008080; ">40</span>         }<span style="color: #0000FF; ">else</span> <span style="color: #0000FF; ">if</span>(ret > 0){<br /> <span style="color: #008080; ">41</span>             <span style="color: #0000FF; ">if</span>(<span style="color: #0000FF; ">event</span>.type != ENET_EVENT_TYPE_CONNECT){     <br /> <span style="color: #008080; ">42</span>                     fprintf(stderr, "enet_host_service event type %d is not connect", <span style="color: #0000FF; ">event</span>.type);<br /> <span style="color: #008080; ">43</span>                     <span style="color: #0000FF; ">goto</span> fail;<br /> <span style="color: #008080; ">44</span>             }<br /> <span style="color: #008080; ">45</span>             <span style="color: #0000FF; ">break</span>; <span style="color: #008000; ">//</span><span style="color: #008000; ">connect successfully</span><span style="color: #008000; "><br /> </span><span style="color: #008080; ">46</span> <span style="color: #008000; "></span><br /> <span style="color: #008080; ">47</span>         }<span style="color: #0000FF; ">else</span>{<br /> <span style="color: #008080; ">48</span>                 fprintf(stderr, "enet_host_service fail");        <br /> <span style="color: #008080; ">49</span>             <span style="color: #0000FF; ">goto</span> fail;<br /> <span style="color: #008080; ">50</span>         }<br /> <span style="color: #008080; ">51</span>     }<br /> <span style="color: #008080; ">52</span> <br /> <span style="color: #008080; ">53</span> #ifdef _DEBUG<br /> <span style="color: #008080; ">54</span>     <span style="color: #0000FF; ">char</span> local_ip[16], foreign_ip[16];<br /> <span style="color: #008080; ">55</span>     ENetAddress local_addr;<br /> <span style="color: #008080; ">56</span> <br /> <span style="color: #008080; ">57</span>     enet_socket_get_address((*host)->socket, &local_addr);<br /> <span style="color: #008080; ">58</span>     enet_address_get_host_ip(&local_addr, local_ip, <span style="color: #0000FF; ">sizeof</span>(local_ip));<br /><font color="#008080">59</font>     enet_address_get_host_ip(&(*peer)->address, foreign_ip, <span style="color: #0000FF; ">sizeof</span>(foreign_ip));<br /> <span style="color: #008080; ">60</span>     <br /> <span style="color: #008080; ">61</span>     printf("%s:%d connected to %s:%d", local_ip, loca_addr.port, foreign_ip, (*peer)->address.port);<br /> <span style="color: #008080; ">62</span> <span style="color: #0000FF; ">#endif</span><br /> <span style="color: #008080; ">63</span> <br /> <span style="color: #008080; ">64</span>     <span style="color: #0000FF; ">return</span> 0;<br /> <span style="color: #008080; ">65</span>     <br /> <span style="color: #008080; ">66</span> fail:<br /> <span style="color: #008080; ">67</span>     <span style="color: #0000FF; ">if</span>(*host) enet_host_destroy(*host); <br /> <span style="color: #008080; ">68</span>     <span style="color: #0000FF; ">return</span> -1;<br /><font color="#008080">69</font> }<br /> </div>    <br />     ◆ <strong style="font-size: 12pt;">鏂紑榪炴帴</strong>錛岃嫢鎴愬姛鍒欒繑鍥?錛岃秴鏃惰繑鍥?錛屽嚭閿欒繑鍥?1銆傚厛榪涜浼橀泤鍏抽棴錛屽澶辮觸鍐嶅己鍒跺叧闂?br /> <div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 14px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #008080; "> 1</span> <span style="color: #0000FF; ">int</span> <strong style="color: #993366; font-size: 12pt;">rudp_disconnect</strong>(ENetHost *host, ENetPeer *peer)<br /> <span style="color: #008080; "> 2</span> {<br /> <span style="color: #008080; "> 3</span>     <span style="color: #0000FF; ">int</span> ret;<br /> <span style="color: #008080; "> 4</span> <br /> <span style="color: #008080; "> 5</span> #ifdef _DEBUG<br /> <span style="color: #008080; "> 6</span>     <span style="color: #0000FF; ">char</span> local_ip[16], foreign_ip[16];<br /> <span style="color: #008080; "> 7</span>     ENetAddress local_addr;<br /> <span style="color: #008080; "> 8</span> <br /> <span style="color: #008080; "> 9</span>     enet_socket_get_address(host->socket, &local_addr);<br /> <span style="color: #008080; ">10</span>     enet_address_get_host_ip(&local_addr, local_ip, <span style="color: #0000FF; ">sizeof</span>(local_ip));<br /> <span style="color: #008080; ">11</span>     enet_address_get_host_ip(&peer->address, foreign_ip, <span style="color: #0000FF; ">sizeof</span>(foreign_ip));<br /> <span style="color: #008080; ">12</span>     <br /> <span style="color: #008080; ">13</span>     printf("%s:%d is disconnected from %s:%d", local_ip, local_addr.port, foreign_ip, peer->address.port);<br /> <span style="color: #008080; ">14</span> <span style="color: #0000FF; ">#endif</span><br /> <span style="color: #008080; ">15</span> <br /> <span style="color: #008080; ">16</span>     ENetEvent <span style="color: #0000FF; ">event</span>;<br /> <span style="color: #008080; ">17</span>     enet_peer_disconnect(peer, 0);<br /> <span style="color: #008080; ">18</span>         <br /> <span style="color: #008080; ">19</span>     <span style="color: #0000FF; ">while</span>((ret = enet_host_service(host, &<span style="color: #0000FF; ">event</span>, peer->roundTripTime)) > 0){<br /> <span style="color: #008080; ">20</span>         <span style="color: #0000FF; ">switch</span> (<span style="color: #0000FF; ">event</span>.type){<br /> <span style="color: #008080; ">21</span>         <span style="color: #0000FF; ">case</span> ENET_EVENT_TYPE_RECEIVE:<br /> <span style="color: #008080; ">22</span>             enet_packet_destroy (<span style="color: #0000FF; ">event</span>.packet);<br /> <span style="color: #008080; ">23</span>             <span style="color: #0000FF; ">break</span>;<br /> <span style="color: #008080; ">24</span>     <br /> <span style="color: #008080; ">25</span>         <span style="color: #0000FF; ">case</span> ENET_EVENT_TYPE_DISCONNECT:<br /> <span style="color: #008080; ">26</span>             ret = 0;<br /> <span style="color: #008080; ">27</span>             <span style="color: #0000FF; ">goto</span> disconn_ok;<br /> <span style="color: #008080; ">28</span>         }<br /> <span style="color: #008080; ">29</span>     }<br /> <span style="color: #008080; ">30</span> <br /> <span style="color: #008080; ">31</span>     ret = 0==ret ? 1 : -1;<br /> <span style="color: #008080; ">32</span> <br /> <span style="color: #008080; ">33</span>     fprintf(stderr, "enet_host_service with timeout %d %s", peer->roundTripTime, 1==ret?"timeout":"failure");<br /> <span style="color: #008080; ">34</span>     <br /> <span style="color: #008080; ">35</span>     enet_peer_reset(conn->peer);<br /> <span style="color: #008080; ">36</span> <br /> <span style="color: #008080; ">37</span> disconn_ok:    <br /> <span style="color: #008080; ">38</span>     enet_host_destroy(host);<br /> <span style="color: #008080; ">39</span>     <span style="color: #0000FF; ">return</span> ret;<br /> <span style="color: #008080; ">40</span> }</div> <br />     ◆ <strong style="font-size: 12pt;">鍙戦佹暟鎹?/strong>錛岃嫢鎴愬姛鍒欒繑鍥炲凡鍙戦佹暟鎹殑闀垮害錛屽惁鍒欒繑鍥?1<br /> <div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 14px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #008080; "> 1</span> <span style="color: #0000FF; ">int</span> <strong style="color: #993366; font-size: 12pt;">rudp_sendmsg</strong>(ENetHost *host, ENetPeer *peer, ENetPacket *packet)<br /> <span style="color: #008080; "> 2</span> {<br /> <span style="color: #008080; "> 3</span>     <span style="color: #0000FF; ">int</span> ret;<br /> <span style="color: #008080; "> 4</span>     <br /> <span style="color: #008080; "> 5</span>     <span style="color: #0000FF; ">if</span>(enet_peer_send(peer, 0, packet)){<br /> <span style="color: #008080; "> 6</span>         fprintf(stderr, "enet send packet %lu bytes to peer fail", packet->dataLength);<br /> <span style="color: #008080; "> 7</span>         <span style="color: #0000FF; ">return</span> -1;<br /> <span style="color: #008080; "> 8</span>     }<br /> <span style="color: #008080; "> 9</span> <br /> <span style="color: #008080; ">10</span>     ret = enet_host_service(host, NULL, peer->roundTripTime);<br /> <span style="color: #008080; ">11</span>     <span style="color: #0000FF; ">if</span>(ret >= 0){<br /> <span style="color: #008080; ">12</span>         <span style="color: #0000FF; ">if</span>(peer->state == <span style="color: #ff00ff;">ENET_PEER_STATE_ZOMBIE</span>){<br /> <span style="color: #008080; ">13</span>             fprintf(stderr, "enet peer state is zombie");<br /> <span style="color: #008080; ">14</span>             <span style="color: #0000FF; ">return</span> -1;<br /> <span style="color: #008080; ">15</span>         }<br /> <span style="color: #008080; ">16</span>         <span style="color: #0000FF; ">return</span> packet->dataLength;<br /> <span style="color: #008080; ">17</span>         <br /> <span style="color: #008080; ">18</span>     }<span style="color: #0000FF; ">else</span>{<br /> <span style="color: #008080; ">19</span>         fprintf(stderr, "enet host service %u millsecond failure", peer->roundTripTime);<br /> <span style="color: #008080; ">20</span>         <span style="color: #0000FF; ">return</span> -1;<br /> <span style="color: #008080; ">21</span>     }<br /> <span style="color: #008080; ">22</span> }<br /> <span style="color: #008080; ">23</span> <br /> <span style="color: #008080; ">24</span> <span style="color: #0000FF; ">int</span> <strong style="color: #993366; font-size: 12pt;">rudp_send</strong>(ENetHost *host, ENetPeer *peer, <span style="color: #0000FF; ">const</span> <span style="color: #0000FF; ">void</span> *buf, size_t len)<br /> <span style="color: #008080; ">25</span> {<br /> <span style="color: #008080; ">26</span>     <span style="color: #0000FF; ">int</span> ret;<br /> <span style="color: #008080; ">27</span> <br /> <span style="color: #008080; ">28</span>     ENetPacket *packet = enet_packet_create(buf, len, <span style="color: #ff00ff;">ENET_PACKET_FLAG_RELIABLE</span>);<br /> <span style="color: #008080; ">29</span>     <span style="color: #0000FF; ">if</span>(NULL==packet){        <br /> <span style="color: #008080; ">30</span>         fprintf(stderr, "enet create packet %lu bytes fail", <span style="color: #0000FF; ">sizeof</span>(<span style="color: #0000FF; ">int</span>)+len);<br /> <span style="color: #008080; ">31</span>         <span style="color: #0000FF; ">return</span> -1;<br /> <span style="color: #008080; ">32</span>     }<br /> <span style="color: #008080; ">33</span> <br /> <span style="color: #008080; ">34</span>     <span style="color: #0000FF; ">return</span> <span style="color: #993366;">rudp_sendmsg</span>(host, peer, packet);<br /> <span style="color: #008080; ">35</span> }</div>    鍙戦佹暟鎹椂闇鏍規嵁瀵圭鐘舵佸垽鏂槸鍚︽柇綰匡紝騫朵笖packet鏍囧織璁句負鍙潬<br /> <br />    ◆ <strong style="font-size: 12pt;">鎺ユ敹鏁版嵁</strong>錛岃嫢鎴愬姛鍒欒繑鍥炲凡鎺ユ敹鏁版嵁鐨勯暱搴︼紝鍚﹀垯榪斿洖-1<br /> <div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 14px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #008080; "> 1</span> <span style="color: #0000FF; ">int</span> <strong style="font-size: 12pt; color: #993366;">rudp_recvmsg</strong>(ENetHost *host, ENetPeer *peer, ENetPacket **packet, unsigned <span style="color: #0000FF; ">int</span> timeout)<br /> <span style="color: #008080; "> 2</span> {<br /> <span style="color: #008080; "> 3</span>     <span style="color: #0000FF; ">int</span> ret;<br /> <span style="color: #008080; "> 4</span>     ENetEvent <span style="color: #0000FF; ">event</span>;<br /> <span style="color: #008080; "> 5</span> <br /> <span style="color: #008080; "> 6</span>     ret = enet_host_service(host, &<span style="color: #0000FF; ">event</span>, timeout);<br /> <span style="color: #008080; "> 7</span>     <span style="color: #0000FF; ">if</span>(ret > 0){<br /> <span style="color: #008080; "> 8</span>         <span style="color: #0000FF; ">if</span>(<span style="color: #0000FF; ">event</span>.peer != peer){<br /> <span style="color: #008080; "> 9</span>             fprintf(stderr, "enet receive peer is not matched");<br /> <span style="color: #008080; ">10</span>             <span style="color: #0000FF; ">goto</span> fail;<br /> <span style="color: #008080; ">11</span>         }<br /> <span style="color: #008080; ">12</span>         <span style="color: #0000FF; ">if</span>(<span style="color: #0000FF; ">event</span>.type != ENET_EVENT_TYPE_RECEIVE){<br /> <span style="color: #008080; ">13</span>             fprintf(stderr, "enet receive event type %d is not ENET_EVENT_TYPE_RECEIVE", <span style="color: #0000FF; ">event</span>.type);<br /> <span style="color: #008080; ">14</span>             <span style="color: #0000FF; ">goto</span> fail;<br /> <span style="color: #008080; ">15</span>         }<br /> <span style="color: #008080; ">16</span>         <br /> <span style="color: #008080; ">17</span>         *packet = <span style="color: #0000FF; ">event</span>.packet;<br /> <span style="color: #008080; ">18</span>         <span style="color: #0000FF; ">return</span> 錛?packet)->dataLength;<br /> <span style="color: #008080; ">19</span>         <br /> <span style="color: #008080; ">20</span> fail:<br /> <span style="color: #008080; ">21</span>         enet_packet_destroy(<span style="color: #0000FF; ">event</span>.packet);<br /> <span style="color: #008080; ">22</span>         <span style="color: #0000FF; ">return</span> -1;<br /> <span style="color: #008080; ">23</span>         <br /> <span style="color: #008080; ">24</span>     }<span style="color: #0000FF; ">else</span> {<br /> <span style="color: #008080; ">25</span>         fprintf(stderr, "enet receive %u millsecond %s", timeout, ret?"failure":"timeout");<br /> <span style="color: #008080; ">26</span>         <span style="color: #0000FF; ">return</span> -1;        <br /> <span style="color: #008080; ">27</span>     }<br /> <span style="color: #008080; ">28</span> }<br /> <span style="color: #008080; ">29</span> <br /> <span style="color: #008080; ">30</span> <span style="color: #0000FF; ">int</span> <span style="color: #993366; font-size: 12pt;"><strong>rudp_recv</strong></span>(ENetHost *host, ENetPeer *peer, <span style="color: #0000FF; ">void</span> *buf, size_t maxlen, unsigned <span style="color: #0000FF; ">int</span> timeout) <br /> <span style="color: #008080; ">31</span> {<br /> <span style="color: #008080; ">32</span>     ENetPacket *packet;<br /> <span style="color: #008080; ">33</span> <br /> <span style="color: #008080; ">34</span>     <span style="color: #0000FF; ">if</span>(-1==<span style="color: #993366;">rudp_recvmsg</span>(host, peer, &packet, timeout))<br /> <span style="color: #008080; ">35</span>         <span style="color: #0000FF; ">return</span> -1;<br /> <span style="color: #008080; ">36</span> <br /> <span style="color: #008080; ">37</span>     <span style="color: #0000FF; ">if</span>(packet->dataLength > maxlen) {<br /> <span style="color: #008080; ">38</span>         fprintf(stderr, "enet packet data length %d is greater than maxlen %lu", packet->dataLength, maxlen);<br /> <span style="color: #008080; ">39</span>         <span style="color: #0000FF; ">return</span> -1;<br /> <span style="color: #008080; ">40</span>     }<br /> <span style="color: #008080; ">41</span> <br /> <span style="color: #008080; ">42</span>     memcpy(buf, packet->data, packet->dataLength);<br /> <span style="color: #008080; ">43</span>     enet_packet_destroy(packet);<br /> <span style="color: #008080; ">44</span>     <br /> <span style="color: #008080; ">45</span>     <span style="color: #0000FF; ">return</span> packet->dataLength;<br /> <span style="color: #008080; ">46</span> }</div>    <br />    ◆ <strong style="font-size: 12pt;">絳夊緟鎵鏈夌‘璁?/strong>錛岃嫢鎴愬姛榪斿洖0錛岃秴鏃惰繑鍥?錛屽け璐ヨ繑鍥?1<br /> <div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 14px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #008080; "> 1</span> <span style="color: #0000FF; ">int</span> <strong style="color: #993366; font-size: 12pt;">rudp_wait_allack</strong>(ENetHost *host, ENetPeer *peer, unsigned <span style="color: #0000FF; ">int</span> timeout)<br /> <span style="color: #008080; "> 2</span> {<br /> <span style="color: #008080; "> 3</span>     <span style="color: #0000FF; ">int</span> ret, cnt = 0;<br /> <span style="color: #008080; "> 4</span>     <br /> <span style="color: #008080; "> 5</span>     <span style="color: #0000FF; ">while</span>((ret = enet_host_service(host, NULL, 1)) >= 0){        <br /> <span style="color: #008080; "> 6</span>         <span style="color: #0000FF; ">if</span>(enet_peer_is_empty_sent_reliable_commands(peer, 0, <br /> <span style="color: #008080; "> 7</span>             ENET_PROTOCOL_COMMAND_SEND_RELIABLE|ENET_PROTOCOL_COMMAND_SEND_FRAGMENT))<br /> <span style="color: #008080; "> 8</span>             <span style="color: #0000FF; ">return</span> 0;<br /> <span style="color: #008080; "> 9</span> <br /> <span style="color: #008080; ">10</span>         <span style="color: #0000FF; ">if</span>(peer->state == <span style="color: #ff00ff;">ENET_PEER_STATE_ZOMBIE</span>){<br /> <span style="color: #008080; ">11</span>             fprintf(stderr, "enet peer state is zombie");<br /> <span style="color: #008080; ">12</span>             <span style="color: #0000FF; ">return</span> -1;<br /> <span style="color: #008080; ">13</span>         }<br /> <span style="color: #008080; ">14</span>     <br /> <span style="color: #008080; ">15</span>         <span style="color: #0000FF; ">if</span>(0==ret && ++cnt>=timeout){<br /> <span style="color: #008080; ">16</span>             <span style="color: #0000FF; ">return</span> 1;<br /> <span style="color: #008080; ">17</span>         }<br /> <span style="color: #008080; ">18</span>     }<br /> <span style="color: #008080; ">19</span>     <br /> <span style="color: #008080; ">20</span>     fprintf(stderr, "enet host service fail");<br /> <span style="color: #008080; ">21</span>     <span style="color: #0000FF; ">return</span> -1;<br /> <span style="color: #008080; ">22</span> }</div>     絳夊緟宸插彂閫佹暟鎹殑鎵鏈夌‘璁ゆ椂錛岄渶鏍規嵁瀵圭鐘舵佸垽鏂槸鍚︽柇綰?br /> <br /> <strong style="font-size: 13pt;">紺轟緥嫻佺▼</strong>   <br />    宸﹁竟涓哄鎴風錛屽帇緙╁茍浼犺緭鏂囦歡錛涘彸杈逛負鏈嶅姟绔紝鎺ユ敹騫惰В鍘嬪瓨鍌ㄦ枃浠躲?br />    <br /><img src="http://m.shnenglu.com/images/cppblog_com/qinqing1984/rudp_trans_file_flow.png" alt="" /><br />   瀹㈡埛绔愯鏂囦歡鍧楀茍鍘嬬緝銆戣繖涓幆鑺傦紝闇瑕佹樉寮忓垱寤哄彲闈爌acket錛屽茍灝嗗帇緙╁悗鐨勫潡鎷瘋礉鍒板叾涓?img src ="http://m.shnenglu.com/qinqing1984/aggbug/217279.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/qinqing1984/" target="_blank">鏄ョ鍗佷簩鏈?/a> 2020-05-04 19:08 <a href="http://m.shnenglu.com/qinqing1984/archive/2020/05/04/217279.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鎬葷粨緗戠粶璺敱璧板悜璇婃柇鏂規硶http://m.shnenglu.com/qinqing1984/archive/2017/12/29/215452.html鏄ョ鍗佷簩鏈?/dc:creator>鏄ョ鍗佷簩鏈?/author>Fri, 29 Dec 2017 09:24:00 GMThttp://m.shnenglu.com/qinqing1984/archive/2017/12/29/215452.htmlhttp://m.shnenglu.com/qinqing1984/comments/215452.htmlhttp://m.shnenglu.com/qinqing1984/archive/2017/12/29/215452.html#Feedback0http://m.shnenglu.com/qinqing1984/comments/commentRss/215452.htmlhttp://m.shnenglu.com/qinqing1984/services/trackbacks/215452.html鐢變簬traceroute鍙兘璇婃柇UDP閫氫俊鐨勫寘璺敱錛屼笉鑳界‘瀹歍CP閫氫俊鐨勫疄闄呰礬鐢憋紙鍙兘鍙樻崲錛夛紝鍥犳緙栧啓浜嗘湰鏂囥備負鏂逛究鎻忚堪錛屼笅闈㈢殑IP銆丮AC鍜岀鍙e潎涓虹ず渚嬶紝瀹為檯璇婃柇涓彲鏇存崲涓哄叿浣撶殑鍊?/div>

1. 濡備綍鍒ゆ柇瀹㈡埛绔埌鏈嶅姟鍣ㄧ殑TCP鍖咃紝鏄惁緇忚繃浜嗙綉鍏?/strong>
     鍦ㄥ鎴風鎵ц tcpdump -i eno16777728 ether dst b0:b9:8a:69:65:3e and host 192.168.0.26 and tcp port 80  鎶撳彇緇忚繃緗戝叧涓斿線榪旀湇鍔″櫒鐨凾CP绔彛涓?0鐨勫寘
     eno16777728 鎺ュ彛鍚嶇О錛沞ther 浠ュお緗戦摼璺紝dst 鐩爣錛坰rc琛ㄧず婧愶級錛沚0:b9:8a:69:65:3e 緗戝叧MAC鍦板潃錛?92.168.0.26 鏈嶅姟鍣↖P鍦板潃錛?0 鐩戝惉绔彛

     杈撳嚭緇撴灉鍒嗘瀽
       ● 鏈夎緭鍑猴紝鍒欒〃紺虹粡榪囦簡緗戝叧
       ● 鏈夐儴鍒嗚緭鍑鴻孴CP閫氫俊榪樺湪榪涜錛屽垯琛ㄧず鍏堝墠鐨勫寘緇忚繃浜嗙綉鍏籌紝鍚庢潵璺敱琛ㄩ」緙撳瓨琚噸瀹氬悜鏇存柊錛屾病緇忚繃緗戝叧浜?/div>
       ● 涓嶆柇杈撳嚭錛屽垯琛ㄧず涓鐩寸粡榪囩綉鍏?/div>

2. 濡備綍鍒ゆ柇璺敱琛ㄩ」緙撳瓨琚噸瀹氬悜鏇存柊
     鍦ㄥ鎴風鎵ц tcpdump -i eno16777728 src 192.168.1.1 and dst 192.168.1.45 and icmp  鎶撳彇鏉ヨ嚜緗戝叧鍜屽埌杈懼鎴風鐨勬墍鏈塱cmp鍖?/div>
     192.168.1.1 緗戝叧IP錛?92.168.1.45 瀹㈡埛绔紙鍑哄彛錛塈P

     杈撳嚭緇撴灉鍒嗘瀽
       ● 娌℃湁杈撳嚭錛屽垯琛ㄧず娌℃湁鏀跺埌rerdirect鍖咃紝璺敱琛ㄩ」緙撳瓨涓嶅彉
       ● 鏈夎緭鍑虹被浼?span style="color: #ff0000;">ICMP redirect 192.168.0.26 to host 192.168.0.26錛堝墠闈竴涓狪P琛ㄧず鍒拌揪鏈嶅姟鍣ㄧ殑鐩存帴璺敱IP錛屽悗涓涓〃紺烘湇鍔″櫒IP錛?/div>
       ● 鍒欒〃紺烘敹鍒頒簡ICMP閲嶅畾鍚戝寘錛屽唴鏍鎬細鏇存柊璺敱琛ㄩ」鍙婄紦瀛樼綉鍏充負192.168.0.26錛屼笅嬈¢氫俊鏃跺氨鐩存帴鍙戝線192.168.0.26浜?/div>

3. 濡備綍鎺у埗鎺ユ敹ICMP閲嶅畾鍚?/strong>
      ● echo 0 | tee /proc/sys/net/ipv4/conf/*/accept_redirects    紱佹鎵鏈夌綉鍗℃帴鏀訛紝鍙伩鍏嶈礬鐢辮〃欏圭紦瀛樿淇敼
      ● echo 1 | tee /proc/sys/net/ipv4/conf/*/accept_redirects    鍚敤鎵鏈夌綉鍗℃帴鏀禝CMP閲嶅畾鍚戞秷鎭?/div>

4. 鏌ョ湅銆佸埛鏂拌礬鐢辮〃欏圭紦瀛?/strong>
      ● ip route get 192.168.0.26    鍙互浠庤緭鍑轟腑鐪嬪埌閫氫綇鐩爣IP鐨勫疄闄呰礬鐢?/div>
      ● ip route flush cache             娓呯┖璺敱琛ㄩ」緙撳瓨錛屼笅嬈¢氫俊鏃跺唴鏍鎬細鏌ain琛紙鍗沖懡浠oute杈撳嚭鐨勮〃錛変互紜畾璺敱


]]>娣卞叆鐞嗚ВSSL/TLS鎶鏈唴騫?/title><link>http://m.shnenglu.com/qinqing1984/archive/2016/12/15/214491.html</link><dc:creator>鏄ョ鍗佷簩鏈?/dc:creator><author>鏄ョ鍗佷簩鏈?/author><pubDate>Thu, 15 Dec 2016 09:16:00 GMT</pubDate><guid>http://m.shnenglu.com/qinqing1984/archive/2016/12/15/214491.html</guid><wfw:comment>http://m.shnenglu.com/qinqing1984/comments/214491.html</wfw:comment><comments>http://m.shnenglu.com/qinqing1984/archive/2016/12/15/214491.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/qinqing1984/comments/commentRss/214491.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/qinqing1984/services/trackbacks/214491.html</trackback:ping><description><![CDATA[<strong style="font-size: 12pt">鍓嶈█</strong><br />    榪戞湡鏈夋満浼氾紝娣卞叆浜哠SL/TLS鍗忚鍘熺悊涓庣粏鑺傦紝騫跺垎鏋愪簡鐩稿叧瀵嗙爜瀛﹀唴瀹癸紝蹇冨緱棰囧錛屽巻緇忓崐鏈堬紝緇堜簬鍐欐垚浜嗚繖浠芥枃妗c?br />    鏈漢姘村鉤灝氭湁闄愶紝閿欒闅懼厤錛屾榪庢寚姝o紝涓嶈儨鎰熸縺銆?br /> <br /> <strong style="font-size: 12pt">鐩綍</strong><br />          <img border="0" alt="" src="http://m.shnenglu.com/images/cppblog_com/qinqing1984/deep-ssl-tls-catalogue.png" /><strong><br /> <br /> </strong><strong style="font-size: 12pt">閮ㄥ垎绔犺妭棰勮</strong><br /> <strong>   絎?绔?/strong><br /> <div align="center"><img border="0" alt="" src="http://m.shnenglu.com/images/cppblog_com/qinqing1984/ssl-tls-protocol-stack.png" /></div> <br /> <br />    <strong>絎?绔犵4鑺?/strong><br /> <div align="center"><img border="0" alt="" src="http://m.shnenglu.com/images/cppblog_com/qinqing1984/ssl-tls-block-cipher.png" /></div> <br /> <br />    <strong>絎?1绔犵3鑺?br /> </strong> <div align="center"><img border="0" alt="" src="http://m.shnenglu.com/images/cppblog_com/qinqing1984/ssl-tls-freak-attack.png" /></div> <br /> <strong style="font-size: 12pt">鍏ㄦ枃</strong><br />    涓嬭澆鍦板潃錛?a href="/Files/qinqing1984/娣卞叆鐞嗚ВSSL-TLS鎶鏈唴騫?zip">娣卞叆鐞嗚ВSSL/TLS鎶鏈唴騫?/a> <img src ="http://m.shnenglu.com/qinqing1984/aggbug/214491.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/qinqing1984/" target="_blank">鏄ョ鍗佷簩鏈?/a> 2016-12-15 17:16 <a href="http://m.shnenglu.com/qinqing1984/archive/2016/12/15/214491.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>涓縐嶆嫤鎴狶inux鍘熷濂楁帴瀛桰O鐨勬柟娉?/title><link>http://m.shnenglu.com/qinqing1984/archive/2016/07/14/213936.html</link><dc:creator>鏄ョ鍗佷簩鏈?/dc:creator><author>鏄ョ鍗佷簩鏈?/author><pubDate>Thu, 14 Jul 2016 02:27:00 GMT</pubDate><guid>http://m.shnenglu.com/qinqing1984/archive/2016/07/14/213936.html</guid><wfw:comment>http://m.shnenglu.com/qinqing1984/comments/213936.html</wfw:comment><comments>http://m.shnenglu.com/qinqing1984/archive/2016/07/14/213936.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://m.shnenglu.com/qinqing1984/comments/commentRss/213936.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/qinqing1984/services/trackbacks/213936.html</trackback:ping><description><![CDATA[<strong style="font-size: 14pt;">鎻忚堪</strong><br />    鍘熷濂楁帴瀛楀叿鏈夊箍娉涚殑鐢ㄩ旓紝鐗瑰埆鏄敤浜庤嚜瀹氫箟鍗忚錛堟爣鍑嗗崗璁甌CP銆乁DP鍜孖CMP絳夊錛夌殑鏁版嵁鏀跺彂銆傚湪Linux涓嬫嫤鎴鎺ュ瓧IO鐨勪竴鑸柟娉曟槸鎷︽埅瀵瑰簲鐨勫鎺ュ瓧緋葷粺璋冪敤錛屽浜庡彂閫佷負sendmsg鍜宻endto錛屽浜庢帴鏀朵負recvmsg鍜宺ecvfrom銆傝繖縐嶆柟娉曡櫧鐒朵篃鑳芥嫤鎴師濮嬪鎺ュ瓧IO錛屼絾瑕佸厛鍒ゆ柇濂楁帴瀛楃殑綾誨瀷錛屽鏋滀負SOCK_RAW錛堝師濮嬪鎺ュ瓧綾誨瀷錛夛紝閭d箞榪涜鎷︽埅澶勭悊錛岃繖鏍蜂竴鏉ョ敱浜庢瘡嬈O閮借鍒ゆ柇濂楁帴瀛楃被鍨嬶紝鎬ц兘灝辨瘮杈冧綆浜嗐傚洜姝や負浜嗙洿鎺ラ拡瀵瑰師濮嬪鎺ュ瓧鏉ユ嫤鎴紝鎻愰珮鎬ц兘錛屽彂鏄庝簡鏈柟娉曘?br />    鏈柟娉曞彲鐢ㄤ簬闃茬伀澧欐垨涓繪満闃叉姢緋葷粺涓紝涓㈠純鎺ユ敹鍜屽彂閫佺殑鏀誨嚮鎴栫梾姣掓暟鎹寘銆?br /> <br /> <strong style="font-size: 14pt"> 鐗圭偣</strong><br />    榪愯鍦ㄥ唴鏍告侊紝鐩存帴鎷︽埅鎵鏈夎繘紼嬬殑鍘熷濂楁帴瀛桰O錛屾敮鎸両Pv4鍜孖Pv6銆?br /> <br /> <p><strong style="font-size: 14pt"> </strong></p> <hr /> <strong style="font-size: 14pt"> 瀹炵幇</strong><br />    <strong style="font-size: 12pt">鍘熺悊</strong><br />       鍦↙inux鍐呮牳緗戠粶瀛愮郴緇熶腑錛宻truct proto_ops緇撴瀯鎻愪緵浜嗗崗璁棤鍏崇殑濂楁帴瀛楀眰鍒板崗璁浉鍏崇殑浼犺緭灞傜殑杞帴錛岃孖Pv4鍗忚鏃忎腑鍐呯疆鐨刬net_sockraw_ops涓哄畠鐨勪竴涓疄渚嬶紝瀵瑰簲鐫鍘熷濂楁帴瀛椼傚洜姝ゅ厛鎵懼埌inet_sockraw_ops錛屽啀鏇挎崲瀹冪殑鎴愬憳鍑芥暟鎸囬拡recvmsg鍜宻endmsg錛屽氨鍙互瀹炵幇鎷︽埅浜嗐備笅闈互IPv4涓轟緥錛圛Pv6鍚岀悊錛夛紝璇存槑鍑犱釜嫻佺▼銆?br /> <br />    <strong style="font-size: 12pt">鎼滅儲inet_sockraw_ops</strong><br />       璇ユ祦紼嬪湪鎸傞挬IO鍓嶈繘琛屻傜敱浜巌net_sockraw_ops涓篖inux鍐呮牳鏈鍑虹殑鍐呴儴絎﹀彿錛屽洜姝ら渶瑕侀氳繃鐗瑰埆鐨勬柟娉曟壘鍒板畠錛岃鐗瑰埆鐨勬柟娉曞熀浜庤繖鏍風殑涓涓簨瀹烇細<br />       <span style="font-size: 1pt">◆</span> 鎵鏈夊師濮嬪鎺ュ瓧鎺ュ彛鍧囧瓨鏀懼湪浠OCK_RAW涓虹儲寮曠殑鍙屽悜寰幆閾捐〃涓紝鑰宨net_sockraw_ops灝卞湪璇ラ摼琛ㄧ殑鏈熬銆?br />       <span style="font-size: 1pt">◆</span> 鍐呮牳鎻愪緵浜嗘敞鍐屽鎺ュ瓧鎺ュ彛鐨凙PI inet_register_protosw錛屽浜庡師濮嬪鎺ュ瓧綾誨瀷錛岃API灝嗚緭鍏ョ殑濂楁帴瀛楁帴鍙f彃鍏ュ埌閾捐〃澶村悗闈€?br />       綆楁硶濡備笅<br /> <div align="center"><img border="0" alt="" src="http://m.shnenglu.com/images/cppblog_com/qinqing1984/search_inet_sockraw_ops.png" width="198" height="420" /></div>       <br />       娉ㄥ唽p鍓嶆垨娉ㄩ攢p鍚庯紝閾捐〃濡備笅<br /> <div align="center"><img border="0" alt="" src="http://m.shnenglu.com/images/cppblog_com/qinqing1984/reg_before_rawsock_list.png" width="450" height="83" /></div>       娉ㄥ唽p鍚庯紝閾捐〃濡備笅<br /> <div align="center"><img border="0" alt="" src="http://m.shnenglu.com/images/cppblog_com/qinqing1984/reg_after_rawsock_list.png" width="673" height="82" /></div> <br /> <strong style="font-size: 12pt">   鎸傞挬IO</strong><br />       璇ユ祦紼嬪湪鍐呮牳妯″潡鍚姩鏃惰繘琛屻?br /> <div align="center"><img border="0" alt="" src="http://m.shnenglu.com/images/cppblog_com/qinqing1984/hook_rawsock_io.png" width="196" height="458" /></div> <br />    <strong style="font-size: 12pt">鍗擱挬IO</strong><br />       璇ユ祦紼嬪湪鍐呮牳妯″潡閫鍑烘椂榪涜銆?br /> <div align="center"><img border="0" alt="" src="http://m.shnenglu.com/images/cppblog_com/qinqing1984/unhook_rawsock_io.png" width="191" height="460" /></div> <br /> <strong style="font-size: 14pt"> <hr /> 榪愯閮ㄧ講</strong><br />    璇ユ柟娉曞疄鐜板湪Linux鍐呮牳妯″潡涓紝涓轟簡闃叉鍏跺畠鍐呮牳妯″潡鍙兘涔熸敞鍐屼簡鍘熷濂楁帴瀛楁帴鍙o紝鍥犳闇瑕佸湪鎿嶄綔緋葷粺鍚姩鏃朵紭鍏堝姞杞姐?nbsp; <img src ="http://m.shnenglu.com/qinqing1984/aggbug/213936.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/qinqing1984/" target="_blank">鏄ョ鍗佷簩鏈?/a> 2016-07-14 10:27 <a href="http://m.shnenglu.com/qinqing1984/archive/2016/07/14/213936.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>涓縐峆2P浠g悊涓璗CP榪炴帴璋冨害鐨勬柟娉?/title><link>http://m.shnenglu.com/qinqing1984/archive/2016/07/12/213924.html</link><dc:creator>鏄ョ鍗佷簩鏈?/dc:creator><author>鏄ョ鍗佷簩鏈?/author><pubDate>Tue, 12 Jul 2016 08:59:00 GMT</pubDate><guid>http://m.shnenglu.com/qinqing1984/archive/2016/07/12/213924.html</guid><wfw:comment>http://m.shnenglu.com/qinqing1984/comments/213924.html</wfw:comment><comments>http://m.shnenglu.com/qinqing1984/archive/2016/07/12/213924.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/qinqing1984/comments/commentRss/213924.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/qinqing1984/services/trackbacks/213924.html</trackback:ping><description><![CDATA[<strong style="font-size: 14pt;">鎻忚堪</strong><br />    鍦≒2P搴旂敤緋葷粺涓紝褰撻渶瑕佷笌澶勪簬涓嶅悓縐佺綉鐨勫鏂瑰彲闈犻氫俊鏃訛紝鍏堝皾璇昑CP鎵撴礊絀塊忥紝鑻ョ┛閫忓け璐ワ紝鍐嶉氳繃澶勪簬鍏綉涓婄殑浠g悊鏈嶅姟鍣紙涓嬫枃綆縐皃roxy錛夎漿鍙戜笌瀵規柟閫氫俊錛屽涓嬪浘鎵紺?nbsp;  <div align="center"><img border="0" alt="" src="http://m.shnenglu.com/images/cppblog_com/qinqing1984/p2p_comm_arch.png" width="557" height="311" /></div>    緇堢A鍏堣繛鎺ュ茍鍙戞秷鎭痬sg1鍒皃roxy錛堣繛鎺ヤ負c1錛夛紱proxy鍐嶅彂娑堟伅msg2緇橮2P鏈嶅姟鍣紝P2P鏈嶅姟鍣ㄦ敹鍒版秷鎭悗閫氳繃宸叉湁鐨勮繛鎺ュ彂娑堟伅msg3緇欑粓绔疊錛孊鏀跺埌msg3鍚庯紝榪炴帴騫跺彂娑堟伅msg4鍒皃roxy錛堣繛鎺ヤ負c2錛夈傝繖4涓秷鎭牸寮忕敱搴旂敤灞傚崗璁喅瀹氾紝浣嗗繀欏婚伒瀹堢殑瑙勮寖濡備笅錛?br />    <span style="font-size: 6pt">◆</span> msg1鑷沖皯鍖呭惈B鐨勮澶嘔D銆?br />    <span style="font-size: 6pt">◆</span> msg2鑷沖皯鍖呭惈B鐨勮澶嘔D鍜宑1鐨勮繛鎺D銆?br />    <span style="font-size: 6pt">◆</span> msg3鑷沖皯鍖呭惈c1鐨勮繛鎺D鍜岃繛鎺ヤ唬鐞嗘寚紺恒?br />    <span style="font-size: 6pt">◆</span> msg4鑷沖皯鍖呭惈B鐨勮澶嘔D鍜宑1鐨勮繛鎺D銆?br />    proxy涓哄綰跨▼鏋舵瀯錛屽綋鎺ュ彈鍒拌嫢騫茶繛鎺ユ椂錛屽鏋滄暟鎹浉浜掕漿鍙戠殑涓や釜榪炴帴錛堟瘮濡備笂鍥句腑鐨刢1鍜宑2錛変笉鍦ㄥ悓涓綰跨▼錛岀敱浜庝竴涓繛鎺ュ啓鏁版嵁鍒板彟涓榪炴帴鐨勫彂閫侀槦鍒楋紝鑰屽彟涓榪炴帴浠庡彂閫侀槦鍒楄鏁版嵁浠ュ彂閫侊紝閭d箞灝辮瀵瑰彟涓榪炴帴鐨勫彂閫侀槦鍒楋紙鎴栫紦鍐插尯錛夊姞閿侊紝榪欐牱涓鏉ョ敱浜庨綣佺殑緗戠粶IO鑰岄綣佸湴鍔犺В閿侊紝闄嶄綆浜嗚漿鍙戞晥鐜囷紝鍥犳涓轟簡瑙e喅榪欎竴闂錛屽氨闇瑕佽皟搴CP榪炴帴鍒板悓涓綰跨▼銆?<br /> <br /> <hr /> <strong style="font-size: 14pt">鐗圭偣</strong><br />    鏈柟娉曡兘灝嗘暟鎹漿鍙戠殑涓よ竟榪炴帴鏀懼湪鍚屼竴綰跨▼錛屼粠鑰岄伩鍏嶄簡鏁版嵁杞彂鏃剁殑鍔犻攣錛岀敱浜庢槸涓瀵逛竴鐨勮繛鎺ュ尮閰嶏紝鍥犳涔熷仛鍒頒簡姣忎釜綰跨▼涓繛鎺ユ暟鐨勫潎琛°?br /> <br /> <hr /> <strong style="font-size: 14pt">瀹炵幇</strong><br />    <strong style="font-size: 12pt">宸ヤ綔鍘熺悊</strong><br />       proxy鐨勪富綰跨▼璐熻矗緇戝畾鐭ュ悕绔彛騫剁洃鍚繛鎺ワ紝宸ヤ綔綰跨▼璐熻矗鏁版嵁杞彂銆傚綋鎺ュ彈鍒頒竴涓繛鎺ユ椂錛屾寜杞漿娉曡皟搴﹀畠鍒版煇涓伐浣滅嚎紼嬶紝鍦ㄩ偅涓嚎紼嬪唴鎺ユ敹鍒嗘瀽搴旂敤灞傚崗璁暟鎹紝浠ヨ瘑鍒繛鎺ョ被鍨嬶紝鍗沖垽鏂繛鎺ユ槸鏉ヨ嚜鏁版嵁璇鋒眰鏂硅繕鏄暟鎹搷搴旀柟錛屼負緇熶竴鎻忚堪錛岃繖閲屾妸鍓嶈呯壒縐頒負瀹㈡埛榪炴帴錛屽悗鑰呬負鏈嶅姟榪炴帴錛岃繛鎺ユ墍鍦ㄧ殑綰跨▼涓哄涓葷嚎紼嬨傚鏋滄槸瀹㈡埛榪炴帴錛岄偅涔堝厛閫氱煡P2P鏈嶅姟鍣ㄨ姹傚搴旂殑瀹㈡埛绔潵榪炴帴浠g悊錛屽茍絳夊緟鍖歸厤錛涘鏋滄槸鏈嶅姟榪炴帴錛岄偅涔堝氨鍘誨尮閰嶅鎴瘋繛鎺ワ紝鍦ㄥ尮閰嶈繃紼嬩腑錛屽鏋滄湇鍔¤繛鎺ュ拰瀹㈡埛榪炴帴涓嶅湪鍚屼竴綰跨▼鍐咃紝閭d箞灝變細璋冨害鍒板鎴瘋繛鎺ョ殑瀹夸富綰跨▼錛屽尮閰嶆垚鍔熷悗錛屽氨寮濮嬭漿鍙戞暟鎹?br />       涓轟簡鍔犲揩鏌ユ壘錛屽垎2涓猦ash琛ㄥ瓨鏀捐繛鎺ワ紝瀹㈡埛榪炴帴鏀懼湪瀹㈡埛榪炴帴hash琛ㄤ腑錛屼互榪炴帴ID涓洪敭鍊鹼紱鏈嶅姟榪炴帴鏀懼湪鏈嶅姟榪炴帴hash琛ㄤ腑錛屼互璁懼ID涓洪敭鍊箋?br /> <br />    <strong style="font-size: 12pt">TCP榪炴帴璋冨害<br /> </strong>      鍖呮嫭鏂拌繛鎺ョ殑杞漿銆佽瘑鍒繛鎺ョ被鍨嬨佸尮閰嶅鎴瘋繛鎺?銆佸尮閰嶅鎴瘋繛鎺?鍜屽叧闂繛鎺ュ叡5涓祦紼嬶紝濡備笅涓涓鎵榪般?br />       <strong>鏂拌繛鎺ョ殑杞漿</strong><br />          璇ユ祦紼嬪伐浣滃湪涓葷嚎紼嬶紝濡備笅鍥炬墍紺?br /> <div align="center"><img border="0" alt="" src="http://m.shnenglu.com/images/cppblog_com/qinqing1984/new_conn_round_robin.png" /></div>       绱㈠紩i鍒濆涓?錛屽浜庢柊鏉ョ殑榪炴帴錛岀敱浜庤繕涓嶆槑紜繛鎺ョ被鍨嬶紝鎵浠ュ厛鏀懼叆瀹㈡埛榪炴帴琛ㄤ腑銆?br /> <br />       <strong>璇嗗埆榪炴帴綾誨瀷</strong><br />          璇ユ祦紼嬪伐浣滃湪宸ヤ綔綰跨▼錛屽綋鎺ュ彈鍒頒竴涓繛鎺ユ椂寮濮嬫墽琛岋紝濡備笅鍥炬墍紺? <div align="center"><img border="0" alt="" src="http://m.shnenglu.com/images/cppblog_com/qinqing1984/recognition_conn.png" /></div>       褰撹繛鎺ョ被鍨嬩負鏈嶅姟榪炴帴鏃訛紝浠庡鎴瘋繛鎺ヨ〃杞Щ鍒版湇鍔¤繛鎺ヨ〃銆?br /> <br />       <strong>鍖歸厤瀹㈡埛榪炴帴1</strong><br />          璇ユ祦紼嬪伐浣滃湪宸ヤ綔綰跨▼錛屽綋鎺ュ彈鍒頒竴涓湇鍔¤繛鎺ユ椂寮濮嬫墽琛岋紝濡備笅鍥炬墍紺?br /> <div align="center"><img border="0" alt="" src="http://m.shnenglu.com/images/cppblog_com/qinqing1984/match_client_conn_1.png" /></div> <br />       <strong>鍖歸厤瀹㈡埛榪炴帴2</strong><br />          璇ユ祦紼嬪伐浣滃湪宸ヤ綔綰跨▼錛屽綋鏈嶅姟榪炴帴縐誨埌瀹㈡埛榪炴帴鐨勫涓葷嚎紼嬫椂寮濮嬫墽琛岋紝濡備笅鍥炬墍紺?br /> <div align="center"><img border="0" alt="" src="http://m.shnenglu.com/images/cppblog_com/qinqing1984/match_client_conn_2.png" /></div>       榪欓噷鐨勬祦紼嬪拰鍖歸厤瀹㈡埛榪炴帴嫻佺▼1鏈変簺綾諱技錛岀湅璧鋒潵濂藉儚鍋氫簡閲嶅鐨勫垽鏂搷浣滐紝浣嗚繖鏄繀瑕佺殑錛屽洜涓哄湪鏈嶅姟榪炴帴杞Щ鍒板彟涓綰跨▼榪欎釜鐬棿鍐咃紝瀹㈡埛榪炴帴鏈夊彲鑳芥柇寮浜嗭紝涔熸湁鍙兘鏂紑鍚庡張鏉ヤ簡涓涓浉鍚岃繛鎺D鐨勫叾瀹冨鎴瘋繛鎺ワ紝鎵浠ヨ閲嶆柊鍘誨鎴瘋繛鎺ヨ〃鏌ユ壘涓嬈★紝鐒跺悗榪涜4涓垎鏀垽鏂?nbsp;<br />    <br />       <strong>鍏抽棴榪炴帴</strong><br />          璇ユ祦紼嬪伐浣滃湪宸ヤ綔綰跨▼鍐咃紝褰撹繛鎺ユ柇寮鎴栫┖闂叉椂鎵ц銆傚綋涓杈硅鏁版嵁鍑洪敊鏃訛紝涓嶈兘椹笂鍏抽棴鍙︿竴杈硅繛鎺ワ紝寰楀湪鍙︿竴杈圭紦鍐插尯鏁版嵁鍙戦佸畬鍚庢墠鑳藉叧闂紱褰撲竴杈硅繛鎺ュ啓鏁版嵁鍑洪敊鏃訛紝鍙互椹笂鍏抽棴鍙︿竴杈硅繛鎺ワ紝濡備笅鍥炬墍紺?br /> <div align="center"><img border="0" alt="" src="http://m.shnenglu.com/images/cppblog_com/qinqing1984/p2p_close_conn.png" /></div><img src ="http://m.shnenglu.com/qinqing1984/aggbug/213924.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/qinqing1984/" target="_blank">鏄ョ鍗佷簩鏈?/a> 2016-07-12 16:59 <a href="http://m.shnenglu.com/qinqing1984/archive/2016/07/12/213924.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>TCP鍒嗙粍涓㈠け鏃剁殑鐘舵佸彉榪?/title><link>http://m.shnenglu.com/qinqing1984/archive/2015/10/05/211950.html</link><dc:creator>鏄ョ鍗佷簩鏈?/dc:creator><author>鏄ョ鍗佷簩鏈?/author><pubDate>Sun, 04 Oct 2015 16:44:00 GMT</pubDate><guid>http://m.shnenglu.com/qinqing1984/archive/2015/10/05/211950.html</guid><wfw:comment>http://m.shnenglu.com/qinqing1984/comments/211950.html</wfw:comment><comments>http://m.shnenglu.com/qinqing1984/archive/2015/10/05/211950.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://m.shnenglu.com/qinqing1984/comments/commentRss/211950.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/qinqing1984/services/trackbacks/211950.html</trackback:ping><description><![CDATA[   鏈枃鏍規嵁RFC793鍗忚瑙勮寖鍜孊SD 4.4鐨勫疄鐜幫紝鎬葷粨浜?span style="color: red;">TCP鍒嗙粍涓㈠け鏃?/span>鐨勭姸鎬佸彉榪侊紝濡備笅鍥炬墍紺猴細瀹炵嚎綆ご琛ㄧず瀹㈡埛绔殑鐘舵佸彉榪侊紝綰挎铏氱嚎綆ご琛ㄧず鏈嶅姟绔殑鐘舵佸彉榪侊紝鍦嗙偣铏氱嚎綆ご琛ㄧず瀹㈡埛绔垨鏈嶅姟绔殑鐘舵佸彉榪侊紱榛戣壊鏂囧瓧琛ㄧず姝e父鏃剁殑琛屼負錛岀孩鑹叉枃瀛楄〃紺哄垎緇勪涪澶辨椂鐨勮涓恒? <div align="center"><img border="0" alt="" src="http://m.shnenglu.com/images/cppblog_com/qinqing1984/tcp_lose_packet_state.PNG" /></div> <br />    榪欓噷鍋囪閲嶄紶鏃跺垎緇勪緷鐒朵細涓㈠け錛屽綋鍦ㄤ笉鍚岀姸鎬侊紙CLOSED闄ゅ錛夊垎緇勪涪澶卞悗錛屾渶緇堜細鍏抽棴濂楁帴瀛楄屽洖鍒癈LOSED鐘舵併備笅闈㈤愪釜鍒嗘瀽鍚勭姸鎬佹椂鐨勬儏鏅?br /> <br /> <strong>SYN_SENT</strong><br />    榪炴帴闃舵絎?嬈℃彙鎵嬶紝瀹㈡埛绔彂閫佺殑SYN鍒嗙粍涓㈠け錛屽洜姝よ秴鏃舵敹涓嶅埌鏈嶅姟绔殑SYN+ACK鑰岄噸浼燬YN錛屽皾璇曞嚑嬈″悗鏀懼純錛屽叧闂鎺ュ瓧銆?br /> <br /> <strong>SYN_RCVD</strong><br />    1錛夎繛鎺ラ樁孌電2嬈℃彙鎵嬶紝鏈嶅姟绔搷搴旂殑SYN+ACK鍒嗙粍涓㈠け錛屽洜姝よ秴鏃舵敹涓嶅埌瀹㈡埛绔殑ACK鑰岄噸浼燬YN+ACK錛屽皾璇曞嚑嬈″悗鏀懼純錛屽彂閫丷ST騫跺叧闂鎺ュ瓧銆?br />    2錛夎繛鎺ラ樁孌電3嬈℃彙鎵嬶紝瀹㈡埛绔彂閫佺殑ACK鍒嗙粍涓㈠け錛屽洜姝ゆ湇鍔$瓚呮椂鏀朵笉鍒癆CK鑰岄噸浼燬YN+ACK錛屽皾璇曞嚑嬈″悗鏀懼純錛屽彂閫丷ST騫跺叧闂鎺ュ瓧銆?br />    3錛夊悓鏃舵墦寮絎?嬈℃彙鎵嬶紝鏈鍝嶅簲鐨凷YN+ACK鍒嗙粍涓㈠け錛屽洜姝ゅ绔秴鏃舵敹涓嶅埌SYN+ACK鑰岄噸浼燬YN銆佸皾璇曞嚑嬈″悗鏀懼純銆佸彂閫丷ST騫跺叧闂鎺ュ瓧錛岃屾鏃舵湰绔敹鍒癛ST銆?br /> <br /> <strong>ESTABLISHED</strong><br />    1錛夎繛鎺ラ樁孌電3嬈℃彙鎵嬶紝瀹㈡埛绔彂閫丄CK鍒嗙粍鍚庯紝铏界劧涓㈠け浣嗕細榪涘叆璇ョ姸鎬侊紙鍥犱負ACK涓嶉渶瑕佺‘璁わ級錛屼絾姝ゆ椂鏈嶅姟绔繕澶勪簬SYN_RCVD鐘舵侊紝鍥犱負瓚呮椂鏀朵笉鍒板鎴風鐨凙CK鑰岄噸浼燬YN+ACK銆佸皾璇曞嚑嬈″悗鏀懼純銆佸彂閫丷ST騫跺叧闂鎺ュ瓧錛岃屾鏃跺鎴風鏀跺埌RST銆?br />    2錛夋暟鎹紶杈撻樁孌碉紝鏈鍙戦佺殑Data鍒嗙粍涓㈠け錛屽洜姝よ秴鏃舵敹涓嶅埌瀵規暟鎹殑紜鑰岄噸浼犮佸皾璇曞嚑嬈″悗鏀懼純銆佸彂閫丷ST騫跺叧闂鎺ュ瓧錛岃屾鏃跺绔敹鍒癛ST銆?br /> <br /> <strong>FIN_WAIT_1</strong><br />    1錛夊叧闂樁孌電1嬈℃彙鎵嬶紝瀹㈡埛绔彂閫佺殑FIN鍒嗙粍涓㈠け錛屽洜姝よ秴鏃舵敹涓嶅埌鏈嶅姟绔殑ACK鑰岄噸浼燜IN錛屽皾璇曞嚑嬈″悗鏀懼純錛屽彂閫丷ST騫跺叧闂鎺ュ瓧銆?br />    2錛夊叧闂樁孌電2嬈℃彙鎵嬶紝鏈嶅姟绔搷搴旂殑ACK鍒嗙粍涓㈠け錛屽洜姝ゅ鎴風瓚呮椂鏀朵笉鍒癆CK鑰岄噸浼燜IN錛屽皾璇曞嚑嬈″悗鏀懼純錛屽彂閫丷ST騫跺叧闂鎺ュ瓧銆?br />  <br /> <strong>FIN_WAIT_2</strong><br />    鍏抽棴闃舵絎?嬈℃彙鎵嬶紝鏈嶅姟绔彂閫佺殑FIN鍒嗙粍涓㈠け錛屽洜姝よ秴鏃舵敹涓嶅埌瀹㈡埛绔殑ACK鑰岄噸浼燜IN銆佸皾璇曞嚑嬈″悗鏀懼純銆佸彂閫丷ST騫跺叧闂鎺ュ瓧錛岃屾鏃跺鎴風鏀跺埌RST銆?br />  <br /> <strong>CLOSING</strong><br />    鍚屾椂鍏抽棴絎?嬈℃彙鎵嬶紝鏈鍙戦佺殑ACK鍒嗙粍涓㈠け錛屽鑷村绔秴鏃舵敹涓嶅埌ACK鑰岄噸浼燜IN銆佸皾璇曞嚑嬈″悗鏀懼純銆佸彂閫丷ST騫跺叧闂鎺ュ瓧錛岃屾鏃舵湰绔敹鍒癛ST銆?<br /> <br /> <strong>TIME_WAIT</strong><br />    鍏抽棴闃舵絎?嬈℃彙鎵嬶紝瀹㈡埛绔搷搴旂殑ACK鍒嗙粍涓㈠け錛屽鑷存湇鍔$瓚呮椂鏀朵笉鍒癆CK鑰岄噸浼燜IN銆佸皾璇曞嚑嬈″悗鏀懼純銆佸彂閫丷ST騫跺叧闂鎺ュ瓧錛岃屾鏃跺鎴風鏀跺埌RST銆?<br /> <br /> <strong>CLOSE_WAIT</strong><br />    鍏抽棴闃舵絎?嬈℃彙鎵嬶紝鏈嶅姟绔搷搴旂殑ACK鍒嗙粍涓㈠け錛屽鑷村鎴風瓚呮椂鏀朵笉鍒癆CK鑰岄噸浼燜IN銆佸皾璇曞嚑嬈″悗鏀懼純銆佸彂閫丷ST騫跺叧闂鎺ュ瓧錛岃屾鏃舵湇鍔$鏀跺埌RST銆?br /> <br /> <strong>LAST_ACK</strong><br />    鍏抽棴闃舵絎?嬈℃彙鎵嬶紝鏈嶅姟绔彂閫佺殑FIN鍒嗙粍涓㈠け錛屽鑷磋秴鏃舵敹涓嶅埌瀹㈡埛绔殑ACK鑰岄噸浼燜IN銆佸皾璇曞嚑嬈″悗鏀懼純銆佸彂閫丷ST騫跺叧闂鎺ュ瓧銆? <img src ="http://m.shnenglu.com/qinqing1984/aggbug/211950.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/qinqing1984/" target="_blank">鏄ョ鍗佷簩鏈?/a> 2015-10-05 00:44 <a href="http://m.shnenglu.com/qinqing1984/archive/2015/10/05/211950.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Linux ICMP娑堟伅鐨勪駭鐢熶笌杞崲http://m.shnenglu.com/qinqing1984/archive/2015/05/18/210684.html鏄ョ鍗佷簩鏈?/dc:creator>鏄ョ鍗佷簩鏈?/author>Mon, 18 May 2015 11:52:00 GMThttp://m.shnenglu.com/qinqing1984/archive/2015/05/18/210684.htmlhttp://m.shnenglu.com/qinqing1984/comments/210684.htmlhttp://m.shnenglu.com/qinqing1984/archive/2015/05/18/210684.html#Feedback0http://m.shnenglu.com/qinqing1984/comments/commentRss/210684.htmlhttp://m.shnenglu.com/qinqing1984/services/trackbacks/210684.htmlicmp_err_convert鏁扮粍鍜?span style="color: red">icmp_send鍑芥暟錛屼緵鍏跺畠緗戠粶瀛愮郴緇熶嬌鐢ㄣ傚湪鍏跺畠緗戠粶瀛愮郴緇熶腑錛屽綋媯嫻嬪埌閿欒鏃訛紝璋冪敤icmp_send浜х敓騫跺彂閫佺浉搴旂殑ICMP宸敊娑堟伅鍒版簮涓繪満錛涘綋婧愪富鏈烘敹鍒癐CMP涓嶅彲杈懼樊閿欐秷鎭紝浼犻掑埌鍘熷濂楁帴瀛楀拰浼犺緭灞傦紝鑰屽畠浠嬌鐢╥cmp_err_convert鎶婂搴旂殑娑堟伅浠g爜杞崲鎴愬鎺ュ瓧灞傛瘮杈冨鏄撶悊瑙g殑閿欒浠g爜銆傚湪鍐呮牳絀洪棿涓彲鍙戦佺殑ICMP娑堟伅鍖呮嫭鏌ヨ搴旂瓟鍜屽樊閿欐姤鏂囷紝涓嬮潰鎬葷粨浜嗕駭鐢熻繖涓ょ被娑堟伅鐨勭綉緇滃瓙緋葷粺錛堝強鍑芥暟錛変笌閿欒杞崲銆?br />

搴旂瓟娑堟伅
   搴旂瓟娑堟伅鐢盜CMP妯″潡鐨勫唴閮ㄥ嚱鏁癷cmp_reply鑰岄潪icmp_send鍙戦併傛牴鎹?a target="_blank">RFC1122 3.2.2.9瑙勮寖錛?nbsp;闄ら潪涓涓富鏈轟綔涓哄湴鍧鎺╃爜浠g悊錛屽惁鍒欎笉鑳藉彂閫佸洖澶嶏紝榪欏搴擨CMP鐨刬cmp_address瀹炵幇涓虹┖錛屽洜姝や笂琛ㄦ病鏈夊垪鍑哄湴鍧鎺╃爜搴旂瓟欏癸紙鍐呮牳絎﹀彿涓篒CMP_ADDRESSREPLY錛夈?br />
宸敊娑堟伅
   宸敊娑堟伅鐢變腑闂磋礬鐢卞櫒鎴栫洰鐨勪富鏈轟駭鐢燂紝褰撴暟鎹姤涓嶈兘鎴愬姛鎻愪氦緇欑洰鐨勪富鏈烘椂銆備粠涓婅〃鍙錛屽湪IP灞傜殑鎺ユ敹銆佹湰鍦板鐞嗐佽漿鍙戝拰杈撳嚭鍚勮繃紼嬩腑錛岄兘鍙兘浜х敓宸敊娑堟伅錛涘湪浼犺緭灞傚鏋滃搴旂殑绔彛娌℃湁鎵撳紑錛岄偅涔圲DP浼氫駭鐢烮CMP绔彛涓嶅彲杈懼樊閿欙紝鑰?span style="color: red;">TCP鍒欎細浣跨敤鑷繁鐨勫樊閿欏鐞嗘満鍒跺彂閫佷竴涓猂ST澶嶄綅鍖咃紝榪欎篃鏄笂琛ㄦ病鏈夊垪鍑篢CP瀛愮郴緇熺殑鍘熷洜銆傚浜庨噸瀹氬悜宸敊錛岀敱ICMP妯″潡鐨刬cmp_redirect璋冪敤ip_rt_redirect鏇存柊璺敱錛涘叾瀹冨樊閿欏垯鐢眎cmp_unreach澶勭悊銆?br />

閿欒杞崲
   絎?鍒椾負icmp_err_convert鏁扮粍绱㈠紩錛岀4鍒椾篃灝辨槸璋冪敤socket API鍑洪敊鏃惰繑鍥炵殑errno錛屾渶鍚?鍒椾負icmp_err_convert涓殑fatal鎴愬憳鍙栧鹼紝0琛ㄧず闈炶嚧鍛介敊璇紝1琛ㄧず鑷村懡閿欒錛岄渶瑕佹姤鍛婄粰鐢ㄦ埛榪涚▼銆傞敊璇漿鎹細琚玆AW鐨剅aw_err銆乀CP鐨則cp_v4_err鍜孶DP鐨剈dp_err鐢ㄥ埌錛屽浜嶪CMP_DEST_UNREACH綾誨瀷鐨勫樊閿欙紝浣跨敤涓婅〃杞崲錛汭CMP_SOURCE_QUENCH綾誨瀷鐨勫拷鐣ヤ笉澶勭悊錛汭CMP_PARAMETERPROB綾誨瀷鐨勮漿鎹㈡垚EPROTO錛堝崗璁敊璇級錛汭CMP_TIME_EXCEEDED綾誨瀷鐨勮漿鎹㈡垚EHOSTUNREACH銆?br />    鍦ㄨ繖瑕佹敞鎰忥紝浠嶪CMP_PORT_UNREACH鍒癊CONNREFUSED鐨勮漿鎹紝涓嶉傜敤浜嶵CP錛屽師鍥犲凡鍦?a href="#icmp_error_msg">涓婅妭璇存槑錛涜屽浜嶶DP鐨?span style="color: red">鏈繛鎺?/span>濂楁帴瀛楋紝濡傛灉涓繪満鍦ㄧ嚎鑰岀鍙f病鎵撳紑錛岃皟鐢╯endto寰椾笉鍒癊CONNREFUSED閿欒錛屼絾recvfrom浼氶樆濉烇紝榪欐槸鍥犱負铏界劧鍐呮牳鏀跺埌浜咺CMP宸敊錛屼絾娌′笂鎶ョ粰搴旂敤榪涚▼銆傚敖綆″姝わ紝濡傛灉鎯沖緱鍒癊CONNREFUSED閿欒錛岄偅涔堝彲浠ュ啓涓狪CMP瀹堟姢榪涚▼錛屽簲鐢ㄨ繘紼嬪厛鎶婂畠鐨勫鎺ュ瓧鎻忚堪絎﹂氳繃unix鍩熷鎺ュ彛浼犻掑埌ICMP瀹堟姢榪涚▼錛岃屽畧鎶よ繘紼嬩嬌鐢╮aw socket鏉ユ帴鏀禝CMP宸敊錛屽啀鍙戠粰搴旂敤榪涚▼銆?span style="color: red">


鍙戦侀檺閫?/strong>
   涓嶈涓鑸樊閿欐秷鎭繕鏄噸瀹氬悜宸敊娑堟伅錛屽彂閫侀檺閫熼拡瀵圭殑閮芥槸鐗瑰畾鐩爣涓繪満銆?br />    涓鑸檺閫?/strong>
   鍦ㄤ嬌鐢╥cmp_send鍙戦佸樊閿欐秷鎭紙PMTU娑堟伅闄ゅ錛夋椂錛屼負鍑忓皯緗戠粶鎷ュ鑰岄檺鍒朵簡鍙戦佺殑閫熺巼錛岄檺閫熺敱xrlim_allow鍑芥暟瀹炵幇錛屽畾涔夊湪ipv4/icmp.c涓?br />
 1#define XRLIM_BURST_FACTOR 6
 2int 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涓虹洰鏍囪礬鐢辯紦瀛橈紝timeout涓哄厑璁稿彂閫佺殑瓚呮椂錛堝崟浣嶄負jiffies錛夛紝dst->rate_tokens璁板綍浠ょ墝鐨勪釜鏁幫紝褰撲護鐗屼釜鏁頒笉灝忎簬timeout鏃訛紝鍒欏噺灝憈imeout騫跺厑璁稿彂閫佷竴涓秷鎭紱鍙嶄箣鍒欎笉鑳藉彂閫侊紝闇絳夊埌浠ょ墝涓暟绱Н鍒板ぇ浜巘imeout鏃舵墠鑳藉彂閫侊紝浣嗘槸涓嶈兘鏃犻檺澶э紝鍚﹀垯灝變細瀵艱嚧鍦ㄤ竴涓彲鑳藉緢鐭殑timeout鍐咃紝鍙戦佽繙澶氫簬6涓殑娑堟伅錛屽紩璧稩CMP椋庢毚錛屾墍浠ヨ繖閲岄檺鍒朵簡浠ょ墝鐨勬渶澶у間負XRLIM_BURST_FACTOR*timeout鍗?鍊嶇殑瓚呮椂錛屼篃灝辨槸璇村湪涓涓猼imeout鍐咃紝鏈澶氳兘鍙戦?涓樊閿欐秷鎭?nbsp;
  
   閲嶅畾鍚戦檺閫?/strong>
   璺敱瀛愮郴緇熶嬌鐢╥p_rt_send_redirect鏉ュ彂閫侀噸瀹氬悜娑堟伅錛屽畾涔夊湪ipv4/route.c涓紝璇ュ嚱鏁板唴閮ㄨ皟鐢╥cmp_send瀹炵幇錛屽湪瀹冪殑闄愰熷熀紜涓婏紝浣跨敤鎸囨暟鍥為綆楁硶鎺у埗鍙戦侀熺巼銆?br />
 1void 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_send(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}
   閲嶅畾鍚戝樊閿欎嬌鐢╥p_rt_redirect_silence錛堥粯璁や負(HZ/50)<<10錛夈乮p_rt_redirect_number錛堥粯璁や負9錛夊拰ip_rt_redirect_load錛堥粯璁や負HZ/50錛?涓噺鏉ユ帶鍒跺彂閫佺殑閫熺巼錛況t->u.dst.rate_last璁板綍涓婃鍙戦佺殑鏃墮棿錛宺t->u.dst.rate_tokens绱鍙戦佹繪暟錛屾渶澶у間負ip_rt_redirect_number錛涘綋涓ゆ鍙戦佺殑鏃墮棿闂撮殧瓚呰繃ip_rt_redirect_silence鎴杋p_rt_redirect_load<<rt->u.dst.rate_tokens錛屽茍涓斿彂閫佹繪暟涓嶈秴榪噄p_rt_redirect_number鏃訛紝鎵嶅厑璁稿彂閫佷竴涓紝榪欐牱涓鏉ワ紝鍦╥p_rt_redirect_silence闂撮殧鍐咃紝姣忔鍙戦佺殑瓚呮椂鍛?鐨勬寚鏁板闀匡紝杈懼埌浜嗗彉鍑忛熷彂閫佺殑鏁堟灉錛岀洿鍒版繪暟杈懼埌ip_rt_redirect_number鏃跺仠姝㈠彂閫侊紝榪欐槸鍥犱負婧愪富鏈哄彲鑳藉拷鐣ヤ簡閲嶅畾鍚戞秷鎭墍浠ュ仠姝㈠彂閫侊紱褰搃p_rt_redirect_silence鏃墮棿榪囧悗錛屽張鍏佽鍙戦佷簡錛岃繖鏄洜涓鴻涓烘簮涓繪満娌℃湁鏇存柊璺敱鎵浠ュ張闇瑕佸彂閫併?img src ="http://m.shnenglu.com/qinqing1984/aggbug/210684.html" width = "1" height = "1" />

]]>
Linux濂楁帴瀛椾笌铏氭嫙鏂囦歡緋葷粺錛?錛夛細鎿嶄綔鍜岄攢姣?/title><link>http://m.shnenglu.com/qinqing1984/archive/2015/05/03/210522.html</link><dc:creator>鏄ョ鍗佷簩鏈?/dc:creator><author>鏄ョ鍗佷簩鏈?/author><pubDate>Sun, 03 May 2015 08:55:00 GMT</pubDate><guid>http://m.shnenglu.com/qinqing1984/archive/2015/05/03/210522.html</guid><wfw:comment>http://m.shnenglu.com/qinqing1984/comments/210522.html</wfw:comment><comments>http://m.shnenglu.com/qinqing1984/archive/2015/05/03/210522.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/qinqing1984/comments/commentRss/210522.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/qinqing1984/services/trackbacks/210522.html</trackback:ping><description><![CDATA[     鎽樿:    鎺ヤ笂綃囧垵濮嬪寲涓庡垱寤猴紝鏈瘒闃愯堪Socket鎿嶄綔鍜岄攢姣佷袱閮ㄥ垎鐨勫疄鐜般? Socket鎿嶄綔    緋葷粺璋冪敤read(v)銆亀rite(v)鏄敤鎴風┖闂磋鍐檚ocket鐨勪竴縐嶆柟娉曪紝涓轟簡寮勬竻妤氬畠浠槸鎬庝箞閫氳繃VFS灝嗚姹傝漿鍙戝埌鐗瑰畾鍗忚鐨勫疄鐜幫紝涓嬮潰浠ead涓轟緥錛坵rite鍚岀悊錛夛紝騫跺亣瀹氭枃浠舵弿榪扮瀵瑰簲鐨勬槸IPv4 TCP綾誨瀷鐨剆ocket...  <a href='http://m.shnenglu.com/qinqing1984/archive/2015/05/03/210522.html'>闃呰鍏ㄦ枃</a><img src ="http://m.shnenglu.com/qinqing1984/aggbug/210522.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/qinqing1984/" target="_blank">鏄ョ鍗佷簩鏈?/a> 2015-05-03 16:55 <a href="http://m.shnenglu.com/qinqing1984/archive/2015/05/03/210522.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Linux濂楁帴瀛椾笌铏氭嫙鏂囦歡緋葷粺錛?錛夛細鍒濆鍖栧拰鍒涘緩http://m.shnenglu.com/qinqing1984/archive/2015/05/03/210521.html鏄ョ鍗佷簩鏈?/dc:creator>鏄ョ鍗佷簩鏈?/author>Sun, 03 May 2015 08:31:00 GMThttp://m.shnenglu.com/qinqing1984/archive/2015/05/03/210521.htmlhttp://m.shnenglu.com/qinqing1984/comments/210521.htmlhttp://m.shnenglu.com/qinqing1984/archive/2015/05/03/210521.html#Feedback0http://m.shnenglu.com/qinqing1984/comments/commentRss/210521.htmlhttp://m.shnenglu.com/qinqing1984/services/trackbacks/210521.html闃呰鍏ㄦ枃

]]>
HTTP URI緙栬В鐮?/title><link>http://m.shnenglu.com/qinqing1984/archive/2015/02/10/191972.html</link><dc:creator>鏄ョ鍗佷簩鏈?/dc:creator><author>鏄ョ鍗佷簩鏈?/author><pubDate>Tue, 10 Feb 2015 10:40:00 GMT</pubDate><guid>http://m.shnenglu.com/qinqing1984/archive/2015/02/10/191972.html</guid><wfw:comment>http://m.shnenglu.com/qinqing1984/comments/191972.html</wfw:comment><comments>http://m.shnenglu.com/qinqing1984/archive/2015/02/10/191972.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://m.shnenglu.com/qinqing1984/comments/commentRss/191972.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/qinqing1984/services/trackbacks/191972.html</trackback:ping><description><![CDATA[     鎽樿: 瀛楃闆嗗悎     渚濇嵁RFC3986 2瑙勮寖錛孒TTP URI涓厑璁稿嚭鐜扮殑US-ASCII瀛楃鐨勫瓙闆嗭紝鍙互鍒嗘垚淇濈暀銆佹湭淇濈暀鍙婅漿涔夎繖鍑犵被錛屾瘡綾葷殑鍏ㄩ儴瀛楃鍒楄〃濡備笅       ● 淇濈暀:  : / ? # [ ] @ ! $ & '( ) * + ,; =鍏?8涓紝涓鑸?..  <a href='http://m.shnenglu.com/qinqing1984/archive/2015/02/10/191972.html'>闃呰鍏ㄦ枃</a><img src ="http://m.shnenglu.com/qinqing1984/aggbug/191972.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/qinqing1984/" target="_blank">鏄ョ鍗佷簩鏈?/a> 2015-02-10 18:40 <a href="http://m.shnenglu.com/qinqing1984/archive/2015/02/10/191972.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鍩轟簬OpenSSL瀹炵幇鐨勫畨鍏ㄨ繛鎺?/title><link>http://m.shnenglu.com/qinqing1984/archive/2014/04/11/206536.html</link><dc:creator>鏄ョ鍗佷簩鏈?/dc:creator><author>鏄ョ鍗佷簩鏈?/author><pubDate>Fri, 11 Apr 2014 09:26:00 GMT</pubDate><guid>http://m.shnenglu.com/qinqing1984/archive/2014/04/11/206536.html</guid><wfw:comment>http://m.shnenglu.com/qinqing1984/comments/206536.html</wfw:comment><comments>http://m.shnenglu.com/qinqing1984/archive/2014/04/11/206536.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/qinqing1984/comments/commentRss/206536.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/qinqing1984/services/trackbacks/206536.html</trackback:ping><description><![CDATA[     鎽樿:    Web鏈嶅姟鍣ㄤ負浜嗘敮鎸乭ttps璁塊棶錛岄氬父浼氫嬌鐢ㄧ涓夋柟搴搊penssl瀹炵幇錛岃屼笖涓轟簡楂樻ц兘閲囩敤寮傛浜嬩歡椹卞姩妯″瀷錛屽洜姝よ繛鎺ュ鎺ュ瓧琚涓洪潪闃誨綾誨瀷錛屾湰鏂囧湪nginx ssl妯″潡鐨勫熀紜涓婏紝綆鍖栨彁鍙栧畠鐨勬牳蹇冩鏋訛紝浣跨敤闈㈠悜瀵硅薄鐨勬柟寮忔弿榪幫紝浠庢彙鎵嬨佽鍐欏拰鍏抽棴3涓柟闈㈣繘琛屼簡鍒嗘瀽錛岀敱浜庤繖3涓搷浣滈兘鏄紓姝ョ殑錛屽洜姝ゆ搷浣滃け璐ュ悗瑕佽皟鐢⊿SL_get_error鏉ヨ幏鍙栭敊璇爜錛屾湁濡備笅4縐嶆儏鍐點?&n...  <a href='http://m.shnenglu.com/qinqing1984/archive/2014/04/11/206536.html'>闃呰鍏ㄦ枃</a><img src ="http://m.shnenglu.com/qinqing1984/aggbug/206536.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/qinqing1984/" target="_blank">鏄ョ鍗佷簩鏈?/a> 2014-04-11 17:26 <a href="http://m.shnenglu.com/qinqing1984/archive/2014/04/11/206536.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>TCP/IP FAQ 錛?錛夛細鎻掑彛灞傚拰搴旂敤灞?/title><link>http://m.shnenglu.com/qinqing1984/archive/2013/09/03/202876.html</link><dc:creator>鏄ョ鍗佷簩鏈?/dc:creator><author>鏄ョ鍗佷簩鏈?/author><pubDate>Tue, 03 Sep 2013 07:52:00 GMT</pubDate><guid>http://m.shnenglu.com/qinqing1984/archive/2013/09/03/202876.html</guid><wfw:comment>http://m.shnenglu.com/qinqing1984/comments/202876.html</wfw:comment><comments>http://m.shnenglu.com/qinqing1984/archive/2013/09/03/202876.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://m.shnenglu.com/qinqing1984/comments/commentRss/202876.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/qinqing1984/services/trackbacks/202876.html</trackback:ping><description><![CDATA[   緇т笂綃?a href="http://m.shnenglu.com/qinqing1984/archive/2013/08/25/202734.html" target="_blank">TCP/IP FAQ錛?錛?/a>錛屾湰綃囨兜鐩栦簡鍩熷拰鍗忚銆両P緙栧潃銆佹彃鍙c佸師濮婭P銆乽nix鍩熸柟闈㈢殑闂涓庤В絳斻?br /> <span style="color: #ff6600; font-size: 12pt"><br /> 銆怐omain & Protocol銆?/span><br /> <span style="color: #008000"><strong>1. 浠涔堟槸鍩燂紝瀹冨拰鍗忚鏈変粈涔堝叧緋?</strong></span><br />    鍩熷彲浠ョ悊瑙d負涓縐嶅綰沖崗璁殑絀洪棿錛屽畠鐨勫瓨鍦ㄤ究浜庝簡鍗忚鐨勫垎綾伙紱鍩熷拰鍗忚鏄泦鍚堜笌鍏冪礌鐨勫叧緋伙紝涓涓煙涓殑姣忎釜鍗忚浣跨敤鍚岀被鍦板潃錛屽茍涓旀瘡縐嶅湴鍧鍙涓涓煙浣跨敤錛屼竴涓煙鑳界敱鍗忚鏃忔垨鍦板潃鏃忓父閲忓敮涓鏍囪瘑銆?br /> <span style="color: #008000"><strong>2. TCP/IP涓湁鍝簺鍩熷強鍏跺崗璁紵</strong></span><br />    internet銆乮so銆乺oute銆乧citt銆乮mp銆乶etwork systems鍜寀nix錛屽叾涓璱nternet鍩熷惈鏈塱p,icmp,igmp,tcp鍜寀dp浜旂鍗忚錛寀nix鍩熺敤浜巌pc閫氫俊銆?br /> <span style="color: #008000"><strong>3. 鍝簺鍦版柟浼氱敤鍒板煙錛?/strong></span><br />    涓涓綉緇滃眰鍗忚蹇呴』鍒嗙敤杈撳叆鏁版嵁鎶ワ紝騫朵氦緇欑浉搴旂殑浼犺緭灞傚崗璁紝鐢變簬鍩熷寘鍚簡鍗忚鏃忥紝鍥犳蹇呴』浠庡搴旂殑鍩熶腑鎵懼埌鍚堥傜殑鍗忚鍘誨鐞嗐備緥濡侷P瀵瑰簲鐨勫煙涓篿nternet錛岃繖涓煙瀵瑰簲鐨勫崗璁棌涓篿netsw錛屽綋鏀跺埌IP鏁版嵁鎶ユ椂錛屽氨浠巌netsw涓壘鍒板搴旂殑浼犺緭灞傚崗璁幓杈撳叆澶勭悊銆?br /> <br /> <span style="color: #ff6600; font-size: 12pt">銆怚P Addressing銆?/span><br /> <span style="color: #008000"><strong>1. IP鍦板潃鏈夊摢鍑犵被錛?/strong></span><br />    鍒嗕負5綾伙紝A銆丅鍜孋綾葷敤浜庡崟鎾紱D綾葷敤浜庡鎾紱E綾葷敤浜庡疄楠屻?br /> <span style="color: #008000"><strong>2. sockaddr鍜宻ockaddr_in鏈変粈涔堝尯鍒仈緋伙紵</strong></span><br />    sockaddr鏄竴縐嶉氱敤鐨勭敤浜庢帴鍙g紪鍧淇℃伅鐨勭粨鏋勶紝瀹冨皢紜歡涓庡崗璁殑鍦板潃緇嗚妭鐩稿浜庢帴鍙e眰闅愯棌璧鋒潵錛屾垚鍛樹緷嬈′負sa_len銆乻a_family鍜宻a_data錛岃宻ockaddr_in鎴愬憳渚濇涓簊in_len銆乻in_family銆乻in_port銆乻in_addr鍜宻in_zero銆傚畠浠殑鍓嶄袱涓垚鍛樺叾瀹炴槸涓鏍風殑錛屽彧鏄懡鍚嶄笉鍚岋紝鑰宻ockaddr_in涓殑sin_port鏍囪瘑浼犺緭灞傜殑绔彛錛宻in_addr鏍囪瘑IP灞傜殑鍦板潃錛屾墍浠ュ畠鏄疘nternet鍗忚鐨勪笓鐢ㄦ帴鍙g紪鍧緇撴瀯錛宻in_zero浠呬負濉厖鐢紝鍥犱負sockaddr_in闀垮害涓嶅簲灝忎簬sockaddr銆?br /> <span style="color: #008000"><strong>3. 鎻掑彛緙栧潃緇撴瀯鍏佽鐨勬渶澶ч暱搴︽槸澶氬皯錛?/strong></span><br />    sockaddr鏈鍚庝竴涓垚鍛樻槸鍙墿灞曠殑錛岃繖鏄疌璇█鐨勯氱敤鎶鏈紝鍥犱負鍏剁涓涓垚鍛樹負u_char綾誨瀷錛屾墍浠ユ渶澶ч暱搴︽槸255銆?br /> <span style="color: #008000"><strong>4. 涓涓帴鍙e彲浠ラ厤緗涓狪P鍦板潃錛屾槸鎬庝箞瀹炵幇鐨勶紵</strong></span><br />    ifaddr琛ㄧず閫氱敤鐨勬帴鍙e湴鍧錛宨fnet琛ㄧず鎺ュ彛錛屽畠鏈変釜綾誨瀷涓篿faddr*鐨刬f_addrlist鎴愬憳錛岃〃紺哄綋鍓嶆帴鍙d笂鐨勫湴鍧閾捐〃銆俰n_ifaddr琛ㄧずInternet鍗忚涓撶敤鐨勬帴鍙e湴鍧錛岃孖P灞炰簬Internet鍗忚錛屽洜姝ょ敤in_ifaddr琛ㄧず錛屾墍鏈夌殑IP鍦板潃緇勬垚涓涓被鍨嬩負in_ifaddr*鐨勯摼琛ㄣ傚綋澧炲姞涓涓狪P鍦板潃鏃訛紝灝遍渶瑕佹彃鍏ヨ繖涓や釜閾捐〃涓紱褰撳垹闄や竴涓狪P鍦板潃鏃訛紝灝遍渶瑕佷粠瀹冧滑褰撲腑縐婚櫎銆?br /> <span style="color: #008000"><strong>5. 涓轟粈涔堥厤緗甀P涓繪満鍦板潃鍜岀綉緇滄帺鐮佸彲浠ユ槸鐙珛鐨勶紵</strong></span><br />    鍥犱負瀹冧滑浣跨敤涓嶅悓鐨勫懡浠ゅ疄鐜幫紝鍓嶈呯敤SIOCSIFADDR錛屽悗鑰呯敤SIOCSIFNETMASK銆傚綋閰嶇疆IP涓繪満鍦板潃鏃訛紝濡傛灉娌℃湁鎸囨槑緗戠粶鎺╃爜錛岄偅涔堢綉緇滄帺鐮佽璁劇疆鎴愰粯璁ょ殑銆?br /> <span style="color: #008000"><strong>6. 涓轟粈涔堣闂甀P鎺ュ彛鍦板潃浣跨敤鐨勬槸UDP鎻掑彛鑰屼笉鏄師濮婭P鎻掑彛錛?/strong></span><br />    鍙湁瓚呯駭鐢ㄦ埛鐢ㄧ▼鎵嶈兘鍒涘緩鍘熷IP鎻掑彛錛岃岄氳繃UDP鎻掑彛錛屼換浣曠敤鎴瘋繘紼嬮兘鑳芥煡鐪嬫帴鍙i厤緗?br /> <br /> <span style="color: #ff6600; font-size: 12pt">銆怱ocket銆?/span><br /> <span style="color: #008000"><strong>1. 涓轟粈涔堜細瀛樺湪鎻掑彛灞傦紵</strong></span><br />    浠庢蹇典笂璁詫紝tcp/ip鍗忚鏍堝垝鍒嗕負閾捐礬銆佺綉緇溿佷紶杈撳拰搴旂敤4灞傦紱浣嗕粠瀹炵幇涓婅錛屽湪搴旂敤灞傚拰鍏朵笅灞備腑闂達紝寮曞叆浜嗕竴涓彃鍙e眰錛屼綔涓鴻繘紼嬪拰鍐呮牳閫氫俊鐨勬ˉ姊侊紝涓昏鍔熻兘鏄皢榪涚▼鍙戦佺殑涓庡崗璁湁鍏崇殑璇鋒眰鏄犲皠鍒頒駭鐢熸彃鍙f椂鎸囧畾鐨勪笌鍗忚鏈夊叧鐨勫疄鐜幫紝浠庤屽睆钄戒簡涓嶅悓鍗忚澶勭悊鐨勭粏鑺傘?br /> <span style="color: #008000"><strong>2. 涓轟粈涔堟湇鍔″櫒榪涚▼鎬繪槸瑕佽皟鐢╞ind錛屽鎴瘋繘紼嬭兘璋冪敤瀹冨悧錛?/strong></span><br />    bind灝嗕竴涓湰鍦板湴鍧鍚屼竴涓彃鍙g浉鍏寵仈錛屽鎴瘋繘紼嬮渶瑕佸悓涓涓凡鐭ュ湴鍧寤虹珛榪炴帴鎴栧彂閫佹暟鎹姤鍒板凡鐭ュ湴鍧錛屽鏋滀笉璋冪敤bind錛屾湇鍔″櫒榪涚▼灝辨棤娉曞湪鏌愪釜宸茬煡鍦板潃涓婃帴鍙桾CP榪炴帴鎴栨帴鏀禪DP鏁版嵁鎶ャ傚鎴瘋繘紼嬩篃鑳借皟鐢╞ind錛岃繖鏍蜂究鍙互鐢卞簲鐢ㄧ▼搴忚岄潪鍐呮牳鏉ラ夋嫨涓涓湰鍦板湴鍧錛屽叾緇撴灉鏄彧鑳芥帴鏀剁洰鐨勫湴鍧涓鴻緇戝畾鍦板潃鐨勬暟鎹寘錛屼絾閫氬父涓嶅繀璋冪敤bind錛屽洜涓哄唴鏍鎬細鑷姩鍐沖畾澶栧嚭鍦板潃鍜屼復鏃剁鍙c?br /> <span style="color: #008000"><strong>3. 瀵逛簬tcp鍜寀dp鍗忚鐨勬彃鍙o紝璋冪敤connect鏈変粈涔堝尯鍒仈緋伙紵</strong></span><br />    鍏卞悓鐐規槸璁懼畾鎻掑彛鐨勫閮ㄥ湴鍧(鎻掑彛鐨勫湴鍧瀛樺偍鍦ㄧ浉鍏崇殑鍗忚鎺у埗鍧椾腑)錛屼笉鍚岀偣濡備笅<br />    1錛塼cp錛氫笌榪滅緋葷粺榪涜3嬈℃彙鎵嬩氦浜掞紝濡傛灉鎻掑彛鏄潪闃誨鐨勪笖榪炴帴姝e湪榪涜涓紝閭d箞榪斿洖EINPROGRESS錛屼笅嬈″啀璋冪敤鍒欒繑鍥濫ALREADY錛涘鏋滆繛鎺ユ垚鍔燂紝鏃犺鏄惁闃誨錛岄偅涔堜笅嬈″啀璋冪敤浼氳繑鍥濫ISCONN錛涘鏋滆繛鎺ュけ璐ワ紝閭d箞涓嬫鍐嶈皟鐢紝鍒欓噸鏂板紑濮嬩笁嬈℃彙鎵嬨?br />    2錛塽dp錛氭病鏈?嬈℃彙鎵嬩氦浜掞紝鐩存帴璁懼畾澶栭儴鍦板潃錛屾棤璁烘彃鍙f槸鍚﹂樆濉烇紝璋冪敤浼氱珛鍗寵繑鍥烇紝澶氭璋冪敤鍒欎細鏇挎崲鑰佺殑澶栭儴鍦板潃銆傚彂閫佹暟鎹繀欏諱嬌鐢╳rite鎴栫洰鐨勫湴鍧涓虹┖鐨剆endto錛岃嫢sendto鐩殑鍦板潃闈炵┖錛屽垯榪斿洖EISCONN銆傚鏋滄病鏈変簨鍏堣皟鐢╟onnect錛岄偅涔堣皟鐢ㄧ洰鐨勫湴鍧涓虹┖鐨剆endto鍒欎細榪斿洖ENOTCONN銆?br /> <span style="color: #008000"><strong>4. 浠涔堟儏鍐典笅璋冪敤close浼氶樆濉烇紵</strong></span><br />    榪炴帴宸插緩绔嬩笖璁劇疆浜哠O_LINGER閫夐」騫跺歡鏃跺奸潪闆剁殑闃誨鎻掑彛銆?br /> <span style="color: #008000"><strong>5. 鎻掑彛IO鏈夊摢浜涚郴緇熻皟鐢紵</strong></span><br />    鍙戦佹湁write銆亀ritev銆乻endto鍜宻endmsg錛屾帴鏀舵湁read銆乺eadv銆乺ecvfrom鍜宺ecvmsg銆傛敞鎰忥紝send鍜宺ecv鏄簱鍑芥暟鑰岄潪緋葷粺璋冪敤錛屽墠鑰呰皟鐢╯endto瀹炵幇錛屽悗鑰呰皟鐢╮ecvfrom瀹炵幇銆?br /> <span style="color: #008000"><strong>6. write銆亀ritev銆乺ead銆乺eadv涓巗endto銆乻endmsg銆乺ecvfrom銆乺ecvmsg鏈変粈涔堜笉鍚岋紵</strong></span><br />    1錛夊墠闈?涓傚悎浜庝換浣曟弿榪扮錛岃屽悗闈?涓彧鑳界敤浜庢彃鍙c?br />    2錛夊墠闈?涓笉鏀寔鏍囧織錛岃屽悗闈?涓敮鎸併?br />    3錛夊墠闈㈠墠2涓笉鏀寔鐩殑鍦板潃銆佸悗2涓笉鏀寔婧愬湴鍧錛岃屽悗闈㈠墠2涓敮鎸佺洰鐨勫湴鍧銆佸悗2涓敮鎸佹簮鍦板潃銆?br />    4錛夊墠闈?涓笉鏀寔鎺у埗淇℃伅錛岃屽悗闈㈢2涓拰絎?涓敮鎸併?br /> <span style="color: #008000"><strong>7. 濡備綍鏂紑宸茶繛鎺ョ殑udp鎻掑彛錛屽厑璁歌皟鐢╯endto鍚戝叾瀹冧富鏈哄彂閫佹暟鎹紵</strong></span><br />     鐢變簬緋葷粺騫舵病鏈夋彁渚涘艦濡俤isconnect鐨勬柇榪濧PI錛屼絾connect鍐呴儴瀹炵幇鏄厛鏂繛錛屽啀璋冪敤瀵瑰簲鍗忚鐨凱RU_CONNECT璇鋒眰澶勭悊錛屽洜姝ゅ悜connect浼犻掓棤鏁堢殑澶栭儴鍦板潃緇撴瀯(濡侷P=0.0.0.0錛孭ort=0)錛岃櫧鐒惰繖鏍蜂細瀵艱嚧緇撴灉澶辮觸錛屼絾鍏堝墠鐨勬柇榪炴垚鍔燂紝瀵瑰簲pcb鐨勫閮ㄥ湴鍧琚涓篒NADDR_ANY錛屾墍浠ヨ皟鐢╯endto灝變笉浼氳繑鍥濫ISCONN銆?br /> <br /> <span style="color: #ff6600; font-size: 12pt">銆怰aw IP銆?/span><br /> <span style="color: #008000"><strong>1. 鎬庝箞浣跨敤鍘熷IP錛屽畠鏈夊摢浜涚敤閫斿強搴旂敤錛?/strong></span><br />    鍒涘緩SOCK_RAW綾誨瀷鐨勫師濮嬫彃鍙o紝灝辮兘浣跨敤鍘熷IP鏈哄埗錛屽畠鏈変笅鍒楃敤閫旓細<br />    1錛夊彂閫佸拰鎺ユ敹ICMP鍜孖GMP鎶ユ枃錛屽ping紼嬪簭鍜屽鎾礬鐢卞畧鎶ょ▼搴忋?br />    2錛夋瀯閫犺嚜宸辯殑IP棣栭儴錛屽璺敱璺熻釜紼嬪簭銆?br />    3錛夎璁″熀浜嶪P鐨勬柊鐨勪紶杈撳眰鍗忚錛屽gated紼嬪簭銆?br /> <span style="color: #008000"><strong>2. 鍗忚鍊間負PROTOCOL_RAW(255)鐨勫師濮嬫彃鍙h兘鏀跺埌浠涔堢被鍨嬬殑IP鏁版嵁鎶ワ紵</strong></span><br />    鐢變簬255鏄潪闆剁殑淇濈暀鍊鹼紝榪欐牱鐨処P鏁版嵁鎶ュ湪緗戠粶涓笉浼氬瓨鍦紝鍘熷IP杈撳叆澶勭悊鍗忚姣旇緝嫻嬭瘯澶辮觸錛屽洜姝ゆ敹涓嶅埌浠諱綍綾誨瀷鐨処P鏁版嵁鎶ャ?br /> <span style="color: #008000"><strong>3. 鍗忚鍊間負0鐨勫師濮嬫彃鍙h兘鏀跺埌浠涔堢被鍨嬬殑IP鏁版嵁鎶ワ紵</strong></span><br />    鐢變簬鍗忚鍊間負0錛屽師濮婭P杈撳叆澶勭悊蹇界暐浜嗗崗璁瘮杈冩祴璇曪紝鍥犳鑳芥敹鍒頒換浣曠被鍨嬬殑IP鏁版嵁鎶ャ?br /> <span style="color: #008000"><strong>4. 濡備綍澶勭悊鏀跺埌鐨処P鏁版嵁鎶ワ紵</strong></span><br />    閬嶅巻Internet PCB琛紝渚濇浠庡崗璁箋佹湰鍦板湴鍧鍜屽閮ㄥ湴鍧涓夐」鏉ユ瘮杈僆P鏁版嵁鎶ュ拰姣忎釜PCB錛屽皢IP鏁版嵁鎶ュ鍒惰拷鍔犲埌鎵鏈夊尮閰嶇殑PCB瀵瑰簲鐨勬彃鍙g紦瀛樹腑錛屽茍鍞ら啋絳夊緟鐨勮繘紼嬨?br /> <span style="color: #008000"><strong>5. 濡備綍鍙戦佹暟鎹紵</strong></span><br />    鍏堝~鍏匢P棣栭儴錛屽鏋滄湭璁劇疆IP_HDRINCL閫夐」錛岄偅涔堢敱鍐呮牳濉厖錛屽惁鍒欑敱搴旂敤紼嬪簭鍦ㄥ彂閫佸墠濉厖錛屽啀浜ょ粰IP鍗忚杈撳嚭澶勭悊銆?br /> <span style="color: #008000"><strong>6. 鍐呮牳浣曟椂浼氳皟鐢ㄥ師濮嬭緭鍏ワ紵</strong></span><br />    褰撴敹鍒扮殑鍗忚綾誨瀷涓洪櫎IPPROTO_TCP銆両PPROTO_UDP銆両PPROTO_ICMP鍜孖PPROTO_IGMP澶栫殑IP鏁版嵁鎶ユ椂璋冪敤銆?br /> <br /> <span style="color: #ff6600; font-size: 12pt">銆怳nix domain銆?/span><br /> <span style="color: #008000"><strong>1. 浣跨敤unix鍩熺殑鍘熷洜鏈夊摢浜涳紵</strong></span><br />    1錛夊綋閫氫俊鍙屾柟鍦ㄥ悓涓涓繪満涓婃椂錛屼嬌鐢╱nix鍩熸彃鍙g殑閫熷害姣攖cp鍜寀dp鎻掑彛瑕佸揩寰堝銆?br />    2錛夋敮鎸佸悓涓涓繪満榪涚▼闂翠紶閫掓弿榪扮銆?br /> <span style="color: #008000"><strong>2. unix鍩熷拰internet鍩熸湁浠涔堜笉鍚岋紵</strong></span><br />    1錛夌紪鍧緇撴瀯涓嶅悓錛氬墠鑰呮槸sockaddr_un錛屼笌鏂囦歡緋葷粺璺緞鍚嶅叧鑱旓紝鑰屽悗鑰呮槸sockaddr_in錛屼笌IP鍦板潃鍜岀鍙e叧鑱斻?br />    2錛夊崗璁帶鍒跺潡涓嶅悓錛氬墠鑰呮槸unpcb錛屾病鏈夊叏灞鐨刾cb閾捐〃錛岃屽悗鑰呮槸inpcb錛屾湁鍏ㄥ眬鐨刾cb鍙屽悜寰幆閾捐〃銆?br /> <span style="color: #008000"><strong>3. 濡傛灉涓涓猽nix鍩熸湇鍔″櫒鍦╞ind鍚巙nlink浜嗚緇戝畾鐨勮礬寰勫悕錛屼細鍙戠敓浠涔堟儏鍐碉紵</strong></span><br /> <div>   鍥犱負connect鍐呴儴瀹炵幇鏌ユ壘璺緞鍚嶅け璐ワ紝鎵浠ヨ繛鎺ュけ璐ワ紝浣唋isten浼氭垚鍔燂紝鍥犱負bind浼氬垱寤烘柊鐨剉node鍜宲cb鍏寵仈錛屼笖PRU_LISTEN璇鋒眰瀹炵幇鍙鏌node鏄惁涓虹┖銆?br /> <span style="color: #008000"><strong>4. 濡傛灉涓涓猽nix鍩熸湇鍔″櫒鍦ㄧ粓姝㈡椂娌℃湁unlink琚粦瀹氱殑璺緞鍚嶏紝浼氬彂鐢熶粈涔堟儏鍐碉紵</strong></span><br />    鍥犱負connect鍐呴儴瀹炵幇铏借兘鎵懼埌璺緞鍚嶄絾鎵句笉鍒扮浉鍏崇殑鎻掑彛錛屾墍浠ヨ繛鎺ヨ鎷掔粷銆?br /> <span style="color: #008000"><strong>5. 緋葷粺璋冪敤socketpair鍜宲ipe鏈変粈涔堝尯鍒仈緋伙紵</strong></span><br />    鍏卞悓鐐規槸浣跨敤unix鍩燂紝鍗硈ocket璋冪敤絎?鍙傛暟涓篈F_UNIX錛屼笉鍚岀偣濡備笅<br />    1錛夊墠鑰呮槸鍙屽伐鐨勶紝鍥犱負涓や釜鎻掑彛鏍囧織閮戒負璇誨啓錛屼笖瀹冧滑鐨刾cb鐩鎬簰鎸囧悜瀵規柟錛涘悗鑰呮槸鍗曞伐鐨勶紝鍥犱負涓涓彃鍙f爣蹇椾負鍙錛屽彟涓涓負鍙啓錛屽啓鎻掑彛鐨刾cb鎸囧悜璇繪彃鍙g殑pcb銆?br />    2錛夊墠鑰呮敮鎸佹暟鎹姤鍜屾祦寮忔彃鍙o紝鍚庤呬粎鏀寔嫻佸紡鎻掑彛銆?br /> <span style="color: #008000"><strong>6. unix鍩熸槸鎬庝箞瀹炵幇浼犻掓弿榪扮鐨勶紵</strong></span><br />    鎻忚堪絎﹀瓨鍌ㄥ湪鎺у埗淇℃伅cmsghdr鍐咃紝cms_level=SOL_SOCKET涓攃ms_type=SCM_RIGHTS錛寀nix鍩熺殑鍙戦佽姹傚疄鐜板皢鎻忚堪絎﹁漿鎹負file鎸囬拡錛岃繖涓繃紼嬪彨鍐呴儴鍖栵紝鎺ユ敹璇鋒眰瀹炵幇鎶奻ile鎸囬拡杞崲涓烘渶灝忕殑娌℃湁浣跨敤鐨勬弿榪扮錛岃繖涓繃紼嬪彨澶栭儴鍖栥?</div><img src ="http://m.shnenglu.com/qinqing1984/aggbug/202876.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/qinqing1984/" target="_blank">鏄ョ鍗佷簩鏈?/a> 2013-09-03 15:52 <a href="http://m.shnenglu.com/qinqing1984/archive/2013/09/03/202876.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>TCP/IP FAQ 錛?錛夛細閾捐礬灞傘佺綉緇滃眰鍜屼紶杈撳眰http://m.shnenglu.com/qinqing1984/archive/2013/08/25/202734.html鏄ョ鍗佷簩鏈?/dc:creator>鏄ョ鍗佷簩鏈?/author>Sun, 25 Aug 2013 02:50:00 GMThttp://m.shnenglu.com/qinqing1984/archive/2013/08/25/202734.htmlhttp://m.shnenglu.com/qinqing1984/comments/202734.htmlhttp://m.shnenglu.com/qinqing1984/archive/2013/08/25/202734.html#Feedback1http://m.shnenglu.com/qinqing1984/comments/commentRss/202734.htmlhttp://m.shnenglu.com/qinqing1984/services/trackbacks/202734.html
銆怐ata Link銆?/span>
1. 鐜洖鎺ュ彛鍦板潃蹇呴』鏄?27.0.0.1鍚楋紵
   褰㈠127.x.x.x鐨凙綾籌P閮藉彲浣滀負鐜洖鎺ュ彛鐨勫湴鍧錛屼絾甯哥敤鐨勬槸127.0.0.1銆?br /> 2. 鐜洖鎺ュ彛涓轟粈涔堟病鏈夎緭鍏ュ鐞嗭紵
   鍙戦佸埌鐜洖鎺ュ彛鐨勬暟鎹姤瀹炶川涓婅閫佸埌緗戠粶灞傜殑杈撳叆闃熷垪涓紝鍥犳鏁版嵁鎶ユ病鏈夌寮緗戠粶錛屼篃灝變笉鍙兘浠庨摼璺笂鎺ユ敹鍒扮洰鏍囧湴鍧涓虹幆鍥炴帴鍙e湴鍧鐨勬暟鎹撫錛屾墍浠ヤ笉瀛樺湪杈撳叆澶勭悊銆?br /> 3. SLIP銆佺幆鍥炲拰浠ュお緗戞帴鍙o紝涓夎呮湁浣曚笉鍚岋紵
   SLIP鍜岀幆鍥炴帴鍙f病鏈夐摼璺眰棣栭儴鍜岀‖浠跺湴鍧錛岀幆鍥炴帴鍙f病鏈夎緭鍏ュ鐞嗭紝鑰屼互澶綉鎺ュ彛閮芥湁銆?br /> 4. SLIP鍜屼互澶綉鎺ュ彛濡備綍鍒嗙敤杈撳叆甯э紝鐜洖鎺ュ彛濡備綍鍒嗙敤杈撳嚭鍒嗙粍錛?/strong>
   SLIP灝嗗撫鐩存帴鏀捐繘IP杈撳叆闃熷垪涓紝浠ュお緗戞帴鍙e垯鏍規嵁甯х被鍨嬪瓧孌墊斁鍒板搴旂殑鍗忚杈撳叆闃熷垪涓紝鐜洖鎺ュ彛鍒欐寜鐩殑鍦板潃鏃忔斁鍒板搴旂殑杈撳叆闃熷垪涓?br /> 5. 鎺ュ彛鍜屽湴鍧鏈変粈涔堝叧鑱旓紵
   涓涓帴鍙g殑緙栧潃淇℃伅鍖呮嫭涓繪満鍦板潃銆佸箍鎾湴鍧鍜岀綉緇滄帺鐮侊紝褰撳唴鏍稿垵濮嬪寲鏃訛紝姣忎釜鎺ュ彛鍒嗛厤涓涓摼璺眰鍦板潃錛屽彲浠ラ厤緗湁澶氫釜鐩稿悓鎴栦笉鍚岀殑緗戠粶灞傚湴鍧錛屼緥濡?涓狪P鍦板潃錛屾垨鑰?涓狪P鍦板潃銆?涓狾SI鍦板潃銆?br />
銆怉RP & RARP銆?br /> 1. 浣曟椂鍙戦丄RP璇鋒眰錛屼綍鏃跺簲絳擜RP璇鋒眰錛?/strong>
   褰撳崟鎾彂閫両P鏁版嵁騫朵笖鏌ヨARP楂橀熺紦瀛樺け璐ユ椂錛屽氨浼氬箍鎾竴涓闂洰鐨勪富鏈虹‖浠跺湴鍧鐨凙RP璇鋒眰錛涘綋鎺ユ敹鍒癆RP璇鋒眰鐨勪富鏈哄氨鏄璇鋒眰鎵瑕佹煡鎵劇殑鐩殑涓繪満鎴栫洰鐨勪富鏈虹殑ARP浠g悊鏈嶅姟鍣ㄦ椂錛屽氨浼氬崟鎾竴涓狝RP搴旂瓟銆?br /> 2. 涓轟粈涔堜袱鑰呯殑浠ュお緗戝撫綾誨瀷涓嶅悓錛?/strong>
   ARP鍊間負0x0806錛孯ARP涓?x8035錛屽叾瀹炲浜庡彂閫佹柟鏉ヨ錛屽埄鐢ˋRP鐨刼p瀛楁鍙互鍖哄垎RARP錛屼絾瀵逛簬鎺ユ敹鏂癸紝鐢變簬ARP瀹炵幇鍦ㄥ唴鏍鎬腑錛岃孯ARP涓鑸疄鐜頒負鏈嶅姟鍣紝鎵浠ヤ負浜嗘洿鏄撳尯鍒嗭紝灝卞崟鐙敤鍙︿竴涓兼爣璇嗐?br /> 3. 璁捐RARP鏈嶅姟鍣ㄦ湁鍝簺闂錛?/strong>
   涓鏄庝箞鍙戦佷互澶綉甯т互鍝嶅簲璇鋒眰錛岃繖涓庣郴緇熺浉鍏熾備簩鏄綋瀛樺湪澶氫釜鏈嶅姟鍣ㄦ椂錛屽悓鏃跺彂閫佸搷搴斿撫浼氶犳垚浠ュお緗戝啿紿侊紝榪欏彲浠ラ氳繃鍒嗕富浠庢湇鍔″櫒鍜岄殢鏈哄歡鏃舵潵浼樺寲閬垮厤銆?br /> 4. ARP鍦ㄧ瓑寰呭簲絳旀椂錛屽畠浼氬浣曞鐞嗗彂寰緇欏畾鐩殑鐨勫涓姤鏂囷紵
   鍦ㄥぇ澶氭暟鐨勫疄鐜頒腑錛屽湪絳夊緟涓涓狝RP搴旂瓟鏃訛紝鍙皢鏈鍚庝竴涓姤鏂囧彂緇欑壒瀹氱洰鐨勪富鏈恒侶ost Requirements RFC瑕佹眰瀹炵幇涓繀欏婚槻姝㈣繖縐嶇被鍨嬬殑ARP媧硾錛屽緩璁渶楂橀熺巼鏄瘡縐掍竴嬈°?br /> 5. 鍏嶈垂ARP鏈変粈涔堜綔鐢紵
   涓鑸殑ARP璇鋒眰鐢ㄤ簬鏌ヨ鐩爣紜歡鍦板潃錛屽茍絳夊緟搴旂瓟銆傝屽厤璐圭殑ARP鍙戝嚭璇鋒眰騫朵笉涓瀹氭湡鏈涘簲絳旓紝榪欏彲浠ユ湁涓ゆ柟闈㈢殑浣滅敤錛?br />    1錛変竴涓富鏈哄彲浠ョ‘瀹氭槸鍚﹀瓨鍦ㄧ浉鍚孖P鍦板潃鐨勫彟涓涓繪満
   2錛夊綋鏈満紜歡鍦板潃鏀瑰彉鏃訛紝閫氱煡鍏跺畠涓繪満鏇存柊ARP楂橀熺紦瀛樸?br /> 6. ARP濡備綍鏄犲皠涓涓狪P澶氭挱鍦板潃錛?/strong>
   鍏堣幏鍙朓P澶氭挱鍦板潃鐨勪綆23浣嶏紝鍐嶄笌甯擱噺0x01005e7f0000鎸変綅鎴栵紝緇撴灉灝辨槸瀵瑰簲鐨勫鎾‖浠跺湴鍧銆?br />
銆怚P銆?/span>
1. 浣曟椂浣曞湴鍒嗙墖錛?/strong>
   褰撴暟鎹姤闀垮害澶т簬閾捐礬鎺ュ彛MTU涓擠F=0鏃訛紝寮濮嬪垎鐗囷紝鍒嗙墖鍙彂鐢熷湪婧愪富鏈猴紝涔熷彲鍙戠敓鍦ㄤ腑閫旇礬鐢卞櫒銆傝嫢闇瑕佸垎鐗囦絾DF=1錛屽垯鍚戞簮涓繪満鍙戦両CMP涓嶅彲杈懼樊閿欍?br /> 2. 濡備綍鍒嗙墖錛?/strong>
   1錛?/span>璁$畻姣忎釜鍒嗙墖鐨勬暟鎹暱搴?涓嶅惈IP棣栭儴)錛岄櫎鍚庝竴涓垎鐗囧錛屽叾瀹冨垎鐗囨暟鎹暱搴︿負8瀛楄妭鐨勫嶆暟銆?/span>
   2錛夐櫎澶嶅埗瀵瑰簲鏁版嵁澶栵紝榪樺鍒跺師濮嬪垎緇勭殑棣栭儴鍙?閮ㄥ垎)閫夐」鍒版柊鐨勬瘡涓垎鐗囦腑錛屾洿鏂版柊鍒嗙墖棣栭儴鐨勫ご閮ㄩ暱搴︺佹婚暱搴︺丮F鏍囧織鍜屽亸縐婚噺銆傚鏋滃師濮嬪垎緇勫凡緇忔槸鍒嗙墖錛岄偅涔圡F=1錛屽惁鍒欐渶鍚庝竴涓垎鐗嘙F=0錛屽叾浣橫F=1銆?br /> 3. 浣曟椂浣曞湴閲嶈錛?/strong>
   鐢變簬鍒嗙墖鍙互鏈変笉鍚岀殑璺敱錛岃屼笖涓旇礬鐢卞櫒鍙兘鍐嶆鍒嗙墖錛屽洜姝ゅ彧鏈夌洰鏍囦富鏈烘墠鑳介噸瑁呮墍鏈夊垎鐗囥傚綋鎺ユ敹绔涓嬈℃敹鍒頒竴涓狹F鎴栧亸縐婚噺闈為浂鐨勫垎緇勬椂錛屽垯璇ュ垎緇勫氨鏄竴涓繀欏昏閲嶈鐨勫垎鐗囷紝浜庢槸寮濮嬮噸瑁呫?/div> 4. 濡備綍閲嶈錛?/strong>
   1錛変嬌鐢?鍏冪粍{婧愬湴鍧錛岀洰鏍囧湴鍧錛屽崗璁紝16浣嶆爣璇唥涓哄敮涓鏍囪瘑鏌ユ壘褰撳墠鍒嗙墖鎵灞炵殑鏁版嵁鎶?鍒嗙墖琛?錛屽鏋滄病鏈夋壘鍒幫紝鍒欏垱寤哄垎鐗囪〃錛屾寜鍋忕Щ閲忓皢褰撳墠鍒嗙墖鎻掑叆鍒板垎鐗囪〃錛屽茍鍚姩閲嶈瀹氭椂鍣ㄣ?br />    2錛夊鏋滈噸瑁呭畾鏃跺櫒瓚呮椂鍚庯紝榪樻病鏈夌粍瑁呭ソ涓涓畬鏁寸殑IP鏁版嵁鎶ワ紝姝ゆ椂濡傛灉宸茬粡鏀跺埌絎竴涓垎鐗囷紝鍒欏悜婧愪富鏈鴻繑鍥濱CMP瓚呮椂宸敊錛屾渶鍚庝涪寮冩敹鍒扮殑鎵鏈夊垎鐗囷紱鍚﹀垯錛屾彁浜ゆ暟鎹粰閫傚綋鐨勪紶杈撳眰澶勭悊銆?br /> 5. 鍝簺鍒嗙粍鑳借杞彂錛屼綍鏃惰漿鍙戯紵
   鍒拌揪闈炴渶緇堢洰鐨勫湴緋葷粺鐨勫垎緇勶紝涓斿綋緋葷粺閰嶇疆涓哄彲杞彂鎴栧垎緇勫寘鍚簮璺敱鏃訛紝鎵嶈兘琚漿鍙戯紝浣嗕笅鍒楃被鍨嬬殑鍒嗙粍闄ゅ錛?錛夐摼璺眰騫挎挱 2錛夌幆鍥炲垎緇?3錛夌綉緇?鍜孍綾葷洰鏍囧湴鍧 4錛塂綾葷洰鏍囧湴鍧銆?br />
銆怚CMP銆?/span>
1. ICMP鎶ユ枃鏈夊摢浜涚被鍨嬶紝浣曟椂浣曞湴鐢熸垚榪欎簺鎶ユ枃錛?/strong>
   鍖呮嫭璇鋒眰銆佸簲絳斻佸樊閿欏拰閲嶅畾鍚?縐嶏紝鍏朵腑鍓嶄袱鑰呭彲緇熶竴涓烘煡璇㈢被銆傝姹傚綋闇瑕佹煡璇㈢殑鏃跺欑敱榪涚▼鐢熸垚錛屽簲絳旂敱褰撳唴鏍告敹鍒拌姹傛姤鏂囨椂鐢熸垚錛屽綋涓繪満鍙戝嚭鐨勬暟鎹姤鏃犳硶鎴愬姛鍦版彁浜ょ粰鐩殑涓繪満鏃訛紝鐩殑涓繪満鎴栦腑闂磋礬鐢卞櫒鐨処P鎴栦紶杈撳崗璁敓鎴愬樊閿欐姤鏂囷紝騫惰繑鍥炵粰鍘熸潵鐨勭郴緇熴?br /> 2. 鍐呮牳鎬庝箞澶勭悊鏀跺埌鐨処CMP鎶ユ枃錛?/strong>
   ICMP鏄竴縐嶄紶杈撳眰鍗忚錛屽叾鍗忚鍙蜂負1錛屽綋IP灞傛敹鍒頒竴涓狪CMP鎶ユ枃鏃訛紝鍒嗙敤浜ょ粰ICMP鍗忚杈撳叆澶勭悊錛孖CMP鍗忚杈撳叆鏍規嵁鍏剁被鍨嬪垎鍒鐞嗭細1錛夎姹?--鐢熸垚閫傚綋鐨勫簲絳旀姤鏂?2錛夊樊閿?--鎻愪氦緇欓傚綋鐨勪紶杈撳眰鍗忚澶勭悊 3錛夊簲絳?--鎻愪氦緇欑瓑寰匢CMP鎶ユ枃鐨勮繘紼?4錛夐噸瀹氬悜---鏇存柊璺敱琛紝騫舵彁浜ょ粰絳夊緟鐨勮繘紼嬨?br /> 3. 鎬庝箞鍙戦両CMP鎶ユ枃錛?/strong>
   鏋勯營CMP鎶ユ枃-->璁$畻ICMP媯楠屽拰-->灝佽鍒癐P鏁版嵁鎶ヤ腑-->鎻愪氦緇橧P鍗忚杈撳嚭澶勭悊錛屽浜庣敤鎴瘋繘紼嬶紝欏諱嬌鐢ㄥ師濮婭P鏈哄埗鎵嶈兘鍙戦併?br /> 4. 鍝簺鎯呭喌涓嶄細浜х敓ICMP宸敊鎶ユ枃錛屼負浠涔堬紵
   1錛塈CMP宸敊鎶ユ枃錛氳繚鍙嶆鏉″彲鑳藉鑷村樊閿欏紩璧峰樊閿欙紝鏃犱紤姝㈠驚鐜笅鍘匯?br />    2錛夋簮鍦板潃涓嶆槸鍗曟挱鍦板潃鐨処P鏁版嵁鎶ワ細榪濆弽姝ゆ潯瀵艱嚧宸敊鍙兘鍚屾椂鍙戝埌澶氫釜涓繪満銆?br />    3錛夌洰鐨勫湴鍧鏄箍鎾垨澶氭挱鍦板潃鐨処P鏁版嵁鎶ワ細榪濆弽姝ゆ潯瀵艱嚧澶氫釜涓繪満鍙兘鍚屾椂鍝嶅簲銆?br />    4錛変綔涓洪摼璺眰騫挎挱鐨勬暟鎹姤錛氳繚鍙嶆鏉″鑷村涓富鏈哄彲鑳藉悓鏃跺搷搴斻?br />    5錛変笉鏄疘P鍒嗙墖鐨勭涓鐗囷細榪濆弽姝ゆ潯鍙兘瀵艱嚧浜х敓澶氫釜ICMP宸敊錛屾瘡涓垎鐗囦竴涓?br />    鐢辨鍙錛岃繚鍙嶄互涓婂嚑鏉¢兘浼氬紩璧風綉緇滈鏆淬?br />
銆怲CP & UDP銆?/span>
1. 涓轟粈涔圱CP棣栭儴瀛樺湪棣栭儴闀垮害瀛楁錛岃孶DP鍗存病鏈夛紵
   TCP棣栭儴瀛樺湪閫夐」錛屽mss,timestame,nop鍜寃scale絳夈?br /> 2. 涓轟粈涔堣繖涓ょ鍗忚棣栭儴鍓嶉潰閮芥槸婧愬拰鐩殑绔彛錛?/strong>
   褰揟CP鏀跺埌涓涓狪CMP宸敊鏃訛紝蹇呴』媯鏌ヤ袱涓鍙e彿浠ュ喅瀹氬樊閿欏搴斾簬鍝釜榪炴帴錛涘彧鏈夊綋UDP濂楁帴鍙h繛鎺ュ埌瀵圭鏃訛紝鐢ㄦ埛榪涚▼鎵嶄細鏀跺埌ICMP宸敊錛屼緥濡傚綋鏈嶅姟鍣ㄦ湭榪愯鏃訛紝榪斿洖鐨処CMP绔彛涓嶅彲杈炬秷鎭?br /> 3. 褰撴敹鍒癟CP鎴朥DP鏁版嵁鍖呮椂錛屾庝箞鎻愪氦緇欏簲鐢ㄥ眰錛?/strong>
   鎻掑彛鐢辮繘紼嬭皟鐢╯ocket鎴朼ccept鍒涘緩錛屽叧鑱斿埌瀵瑰簲鐨凱CB(鍗忚鎺у埗鍧?涓婏紝閫氶厤鍖歸厤鏁扮敱鏈湴鍜屽閮↖P鍦板潃紜畾錛屾湁3縐嶅彇鍊鹼細0--鏈湴鍜屽閮↖P閮戒笉涓?銆?--鏈湴鎴栧閮↖P鏈変竴涓負*鍜?--鏈湴鍜屽閮↖P閮戒負*銆備笌UDP涓嶅悓鐨勬槸錛孴CP榪樻湁鑷繁鐨凱CB銆?br />    1錛塗CP錛氬厛鎵弿Internet PCB錛屾煡鎵炬渶灝忛氶厤鍖歸厤鏁扮殑鎻掑彛錛屽鏋滄病鎵懼埌錛岄偅涔堝搷搴擱ST鍖咃紱鍐嶆煡鐪嬪搴旂殑TCP PCB錛岃嫢涓嶅瓨鍦ㄥ垯鍝嶅簲RST鍖咃紝鍚﹀垯鑻CP 鐘舵佷負鍏抽棴錛屽垯涓㈠純錛涙渶鍚庝氦浠樼粰鎵懼埌鐨勫搴旀彃鍙c?br />    2錛塙DP錛氳繖閲岃鍒?縐嶆儏鍐碉紝瀵逛簬鐩殑鍦頒負騫挎挱鎴栧鎾湴鍧鐨処P鏁版嵁鎶ワ紝浜や粯緇欐墍鏈夊尮閰嶇殑鎻掑彛錛涘浜庣洰鐨勫湴涓哄崟鎾殑IP鏁版嵁鎶ワ紝鎵弿Internet PCB錛屾煡鎵懼叿鏈夋渶灝忛氶厤鍖歸厤鏁扮殑鎻掑彛錛屽鏋滄病鏈夋壘鍒幫紝鍒欏悜婧愪富鏈哄彂閫両CMP绔彛涓嶅彲杈懼樊閿欍傚鏋滄湁澶氫釜鎻掑彛鏈夌浉鍚岀殑鏈灝忛氶厤鍖歸厤鏁幫紝閭d箞鍏蜂綋鐢卞摢涓彃鍙f帴鏀朵緷璧栦簬涓嶅悓鐨勫疄鐜般?br /> 4. 璁$畻棣栭儴媯楠屽拰鏃訛紝涓轟粈涔堣寮曞叆浼閮紵
   榪欐槸鍥犱負鑰冭檻鍒癐P灞傜殑鍙兘宸敊錛孴CP鍜孶DP闇瑕侀獙璇佹暟鎹寘鏄惁琚掗佸埌姝g‘鐨勫崗璁拰鐩殑涓繪満銆?br /> 5. UDP浣曟椂浼氳綆楁楠屽拰錛屽浣曞尯鍒嗘槸鍚︿嬌鐢ㄤ簡媯楠屽拰錛?/strong>
   UDP鐨勬楠屽拰鏄彲閫夌殑錛屽綋緋葷粺娌℃湁紱佹(udpcksum闈為浂)鏃訛紝鍙戦佹柟浼氳綆楁楠屽拰錛屾帴鏀舵柟榪橀』杈撳叆鍒嗙粍媯楠屽拰闈為浂鏃舵墠浼氳綆楁楠屽拰銆傚鏋滄楠屽拰瀛楁闈為浂錛岄偅涔堝氨浣跨敤浜嗭紝鍙嶄箣娌℃湁銆?br /> 6. 鍦═CP鐘舵佽縼縐諱腑錛屽摢浜涚姸鎬佸湪浠涔堟儏鍐典笅鍙洿鎺ヨ漿鍒癈LOSED鐘舵侊紵
   SYN_SENT鍦ㄨ繛鎺ュ畾鏃跺櫒瓚呮椂鍚庯紝FIN_WAIT_2鍦‵IN_WAIT_2瀹氭椂鍣ㄨ秴鏃跺悗銆?br /> 7. 涓轟粈涔圱CP闇瑕佹寔緇?persist)瀹氭椂鍣ㄣ丗IN_WAIT_2瀹氭椂鍣ㄥ拰2MSL瀹氭椂鍣紵
   1錛夊洜涓鴻繛鎺ュ绔彂閫佺殑紿楀彛閫氬憡涓篈CK鎶ユ枃錛岃孉CK鏄笉浼氱‘璁ょ殑錛屽厑璁窽CP緇х畫鍙戦佹暟鎹殑紿楀彛鏇存柊鍙兘浼氫涪澶憋紝鎵浠ラ渶瑕佽瀹歱ersist瀹氭椂鍣紝鍦ㄨ秴鏃跺悗鍙戦?瀛楄妭鐨勬暟鎹紝鍒ゅ畾瀵圭鎺ユ敹紿楀彛鏄惁宸叉墦寮銆?br />    2錛夊洜涓哄湪姝e父鎯呭喌涓嬶紝褰撹繛鎺ヤ富鍔ㄥ叧闂椂錛屼細鐢盕IN_WAIT_1鐘舵佽繘鍏IN_WAIT_2鐘舵佺瓑寰呮帴鏀跺绔殑FIN鎶ユ枃錛屼絾瀵規柟鍙兘涓鐩翠笉鍙戦丗IN錛屾墍浠ラ渶瑕丗IN_WAIT_2瀹氭椂鍣ㄩ伩鍏嶈繛鎺ユ案榪滄粸鐣欏湪FIN_WAI_2鐘舵併?br />    3錛夊洜涓哄綋榪炴帴涓誨姩鍏抽棴榪涘叆TIME_WAIT鐘舵佸悗錛屽皢絳夊緟2涓狹SL鏃墮棿錛屽湪榪欐鏃墮棿鍐咃紝TCP鍙互閲嶅彂涓㈠け鐨凙CK錛屼涪寮冩潵鑷柊榪炴帴鏇胯韓鐨勮繜鍒扮殑鎶ユ枃孌典互闃叉琚洸瑙o紝鎵浠ラ渶瑕?MSL瀹氭椂鍣紝瓚呮椂鍚庡叧闂繛鎺ャ?br /> 8. 褰揟CP鍙戦佹暟鎹紝璋冪敤ip_output榪斿洖ENOBUFS宸敊鏃訛紝鍙兘浼氬彂鐢熶粈涔堟儏鍐碉紵
   褰撴彁浜ょ粰緗戠粶灞傚洜涓哄唴瀛樹笉瓚沖彂閫佸け璐ユ椂錛屾暟鎹寘琚涪寮冦傚鏋滀涪寮冪殑鏄暟鎹姤鏂囷紝閲嶄紶瀹氭椂鍣ㄨ秴鏃跺悗鏁版嵁灝嗚閲嶄紶錛涘鏋滀涪寮冪殑鏄函ACK鎶ユ枃錛屽绔敹涓嶅埌ACK鏃朵細閲嶄紶瀵瑰簲鐨勬暟鎹姤鏂囷紱濡傛灉涓㈠純鐨勬槸RST鎶ユ枃錛屽綋瀵圭閲嶄紶瀵艱嚧鍙戦丷ST鎶ユ枃鐨勬暟鎹姤鏂囨椂錛屽皢鍐嶆鐢熸垚RST鎶ユ枃銆?br /> 9. TCP浣曟椂鍙戦丄CK鎶ユ枃錛?/strong>
   瀵逛簬鏁版嵁銆丼YN鍜孎IN鎶ユ枃錛屽彂閫丄CK錛屼絾瀵逛簬綰疉CK鍜孯ST鎶ユ枃錛屼笉浼氬彂閫侊紱鍙﹀褰撻亣浠ヤ笅鎯呭喌鏃訛紝鍒欑珛鍗沖彂閫併?br />    1錛?00ms寤舵椂ACK瀹氭椂鍣ㄨ秴鏃訛紱2錛夋敹鍒板け搴忕殑鎶ユ枃孌碉紱3錛変笁嬈℃彙鎵嬫敹鍒頒簡SYN錛?錛夋敹鍒頒簡FIN銆?br /> 10. TCP浣曟椂鍙戦丷ST鎶ユ枃錛?/strong>
   1錛夊綋鏀跺埌鎶ユ枃孌碉紝浣嗘病鏈夋壘鍒板搴旂殑internet pcb鎴杢cp pcb銆?br />    2錛夊綋榪炴帴澶勪簬LISTEN鐘舵佹椂錛屾敹鍒頒簡ACK鎶ユ枃孌點?br />    3錛夊綋榪炴帴澶勪簬SYS_SENT鐘舵佹椂錛屾敹鍒頒簡閿欒鐨凙CK鎶ユ枃孌?ack灝忎簬絳変簬iss鎴栧ぇ浜巗nd_max)銆?br />    4錛夊綋榪炴帴琚姩鍏抽棴鏃?鐘舵佸ぇ浜嶤LOSE_WAIT)錛屾敹鍒頒簡鏁版嵁銆?br />    5錛夊綋榪炴帴澶勪簬SYN_RCVD鐘舵佹椂錛屾敹鍒頒簡閿欒鐨凙CK鎶ユ枃孌?ack灝忎簬snd_una鎴栧ぇ浜巗nd_max)銆?img src ="http://m.shnenglu.com/qinqing1984/aggbug/202734.html" width = "1" height = "1" />

]]>榪愮敤鐘舵佹満寮傛鎺ユ敹鍙橀暱鍖?/title><link>http://m.shnenglu.com/qinqing1984/archive/2012/09/20/191396.html</link><dc:creator>鏄ョ鍗佷簩鏈?/dc:creator><author>鏄ョ鍗佷簩鏈?/author><pubDate>Thu, 20 Sep 2012 07:48:00 GMT</pubDate><guid>http://m.shnenglu.com/qinqing1984/archive/2012/09/20/191396.html</guid><wfw:comment>http://m.shnenglu.com/qinqing1984/comments/191396.html</wfw:comment><comments>http://m.shnenglu.com/qinqing1984/archive/2012/09/20/191396.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://m.shnenglu.com/qinqing1984/comments/commentRss/191396.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/qinqing1984/services/trackbacks/191396.html</trackback:ping><description><![CDATA[     鎽樿: 鎯呮櫙鍒嗘瀽    鍦ㄧ綉緇滅紪紼嬩腑錛岄氬父寮傛姣斿悓姝ュ鐞嗘洿涓哄鏉傦紝浣嗙敱浜庡紓姝ョ殑浜嬩歡閫氱煡鏈哄埗錛岄伩鍏嶄簡鍚屾鏂瑰紡涓殑蹇欑瓑寰咃紝鎻愰珮浜嗗悶鍚愰噺錛屽洜姝ゆ晥鐜囪緝楂橈紝鍦ㄩ珮鎬ц兘搴旂敤寮鍙戜腑錛岀粡甯歌鐢ㄥ埌銆傝屽湪澶勭悊寮傛鐩稿叧鐨勯棶棰樻椂錛岀姸鎬佹満妯″紡鏄竴縐嶅吀鍨嬬殑鏈夋晥鏂規硶錛岃繖鍦╨ibevent銆乵emcached銆乶ginx絳夊紑婧愯蔣浠?搴?涓嬈¤浣跨敤鑰屽緱鍒拌璇併傛嵁姝わ紝涓烘姏鐮栧紩鐜夛紝鏈枃灞曠ず浜嗕嬌鐢ㄦ鏂規硶寮傛鎺ユ敹鍙?..  <a href='http://m.shnenglu.com/qinqing1984/archive/2012/09/20/191396.html'>闃呰鍏ㄦ枃</a><img src ="http://m.shnenglu.com/qinqing1984/aggbug/191396.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/qinqing1984/" target="_blank">鏄ョ鍗佷簩鏈?/a> 2012-09-20 15:48 <a href="http://m.shnenglu.com/qinqing1984/archive/2012/09/20/191396.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>涓縐嶇畝鍗曠殑璺ㄥ鉤鍙板鎺ュ瓧綆¢亾http://m.shnenglu.com/qinqing1984/archive/2012/06/17/179103.html鏄ョ鍗佷簩鏈?/dc:creator>鏄ョ鍗佷簩鏈?/author>Sat, 16 Jun 2012 19:02:00 GMThttp://m.shnenglu.com/qinqing1984/archive/2012/06/17/179103.htmlhttp://m.shnenglu.com/qinqing1984/comments/179103.htmlhttp://m.shnenglu.com/qinqing1984/archive/2012/06/17/179103.html#Feedback3http://m.shnenglu.com/qinqing1984/comments/commentRss/179103.htmlhttp://m.shnenglu.com/qinqing1984/services/trackbacks/179103.html闃呰鍏ㄦ枃

]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              欧美aaaaaaaa牛牛影院| 久久精品国产一区二区三区| 欧美国产日韩一区| 午夜久久久久| 99在线观看免费视频精品观看| 久久躁日日躁aaaaxxxx| 久久久精品视频成人| 欧美一级欧美一级在线播放| 在线视频欧美日韩| 国产综合亚洲精品一区二| 欧美激情国产日韩精品一区18| 久久久久久久久伊人| 久久九九热免费视频| 久久福利一区| 久久久xxx| 免费在线观看成人av| 欧美黄色视屏| 久久久久久久一区| 国产女人水真多18毛片18精品视频| 欧美日韩国产在线| 欧美不卡视频一区| 麻豆精品视频在线观看| 欧美一区二区三区四区在线 | 亚洲自拍偷拍色片视频| 亚洲黄色有码视频| 欧美成人免费网| 亚欧美中日韩视频| 亚洲免费黄色| 亚洲欧美日韩另类| 久久亚洲综合色一区二区三区| 欧美 日韩 国产精品免费观看| 欧美成人69| 日韩视频免费观看高清在线视频 | 欧美精品一区二区三区蜜臀| 国产精品ⅴa在线观看h| 国产亚洲欧美日韩日本| 亚洲国产激情| 亚洲一区在线播放| 久久婷婷色综合| 亚洲韩国一区二区三区| 妖精成人www高清在线观看| 亚洲综合视频网| 久久人人爽爽爽人久久久| 欧美精品久久久久久久| 久久亚洲精品伦理| 国产精品jizz在线观看美国| 好看的亚洲午夜视频在线| 日韩视频在线观看免费| 欧美资源在线| 亚洲级视频在线观看免费1级| 在线亚洲高清视频| 久久综合给合久久狠狠色| 欧美日韩综合网| 一区二区视频欧美| 99re成人精品视频| 欧美在线影院| 欧美性一二三区| 亚洲国产欧美另类丝袜| 性欧美精品高清| 亚洲激情另类| 欧美一区高清| 国产精品欧美日韩一区二区| 日韩视频二区| 欧美黄色aa电影| 久久久久久久久久久久久久一区| 欧美午夜免费| 欧美高清影院| 久久av红桃一区二区小说| 欧美激情精品久久久久久蜜臀| 国产在线视频欧美| 午夜精品国产精品大乳美女| 亚洲国产合集| 欧美va亚洲va国产综合| 国内成人在线| 欧美资源在线| 亚洲一区在线直播| 欧美涩涩视频| 亚洲一区美女视频在线观看免费| 亚洲欧美国产高清va在线播| 亚洲人成人99网站| 欧美成人午夜激情在线| 亚洲国产精品嫩草影院| 欧美va天堂在线| 久久久亚洲国产美女国产盗摄| 国产亚洲视频在线| 久久精品一区二区| 久久超碰97中文字幕| 国产三级精品三级| 久久精品网址| 久久久噜久噜久久综合| 国产一区二区精品在线观看| 亚洲国产一区二区三区在线播 | 韩国成人理伦片免费播放| 久久成人这里只有精品| 亚洲成人资源| 欧美一区精品| 亚洲一级在线观看| 国产精品一二| 久久综合伊人77777蜜臀| 久久夜色精品一区| 亚洲看片网站| 亚洲手机在线| 国产午夜精品一区二区三区欧美| 新狼窝色av性久久久久久| 亚洲欧美久久久| 国产区亚洲区欧美区| 久久综合狠狠综合久久综青草 | 国产精品videosex极品| 欧美一级视频精品观看| 夜夜嗨av一区二区三区中文字幕| 欧美吻胸吃奶大尺度电影| 欧美一区二区三区免费在线看| 午夜视频一区| 亚洲国产精品日韩| 亚洲在线电影| 91久久国产自产拍夜夜嗨| 一本色道精品久久一区二区三区 | 久久久久网站| 亚洲一卡二卡三卡四卡五卡| 国产精品99久久99久久久二8| 影音先锋亚洲一区| 亚洲欧美激情一区二区| 欧美一区二区性| 一区二区三区视频在线| 亚洲欧美国产高清va在线播| 亚洲高清视频一区二区| 一区二区三区福利| 亚洲福利视频网| 亚洲综合精品一区二区| 亚洲精品视频在线| 欧美在线观看网址综合| 国产精品99久久99久久久二8| 久久久九九九九| 亚洲欧洲一区二区三区久久| 性欧美精品高清| 亚洲天堂av电影| 老牛国产精品一区的观看方式| 欧美一级二区| 国产精品毛片| 亚洲视屏一区| 亚洲视频在线观看免费| 亚洲宅男天堂在线观看无病毒| aaa亚洲精品一二三区| 一本到高清视频免费精品| 亚洲免费激情| 欧美成人官网二区| 久热国产精品| 国产欧美一区二区三区另类精品 | 久久久久国产一区二区三区| 欧美一站二站| 国产午夜精品一区二区三区视频| 亚洲欧美国产va在线影院| 久久精品亚洲一区| 在线成人免费视频| 欧美激情视频一区二区三区免费 | 亚洲国产精品美女| 欧美精品色综合| 亚洲一区二区高清视频| 久久久久综合一区二区三区| **欧美日韩vr在线| 欧美区高清在线| 午夜精品久久久久久久久久久| 麻豆9191精品国产| 日韩午夜精品| 国产精品欧美日韩一区二区| 久久爱www久久做| 亚洲电影免费观看高清完整版| 制服丝袜激情欧洲亚洲| 国产一区二区成人| 欧美国产一区二区| 亚洲欧美日韩精品| 亚洲第一在线视频| 欧美在线一级va免费观看| 亚洲全部视频| 国产欧美一区二区三区视频| 欧美成人性网| 香蕉国产精品偷在线观看不卡| 一区二区三区.www| 亚洲人成网在线播放| 欧美一级欧美一级在线播放| 亚洲成人在线免费| 国产精品美女诱惑| 欧美福利在线观看| 久久av在线| 亚洲一区在线观看免费观看电影高清| 免费中文字幕日韩欧美| 亚洲女爱视频在线| 亚洲精品日韩精品| 狠狠色综合网| 国产精品亚洲综合一区在线观看| 欧美va亚洲va香蕉在线| 香蕉尹人综合在线观看| 夜夜嗨av一区二区三区四区| 欧美激情一区二区久久久| 欧美在线在线| 亚洲女人天堂av| 在线一区二区日韩| 亚洲九九九在线观看| 尤物精品国产第一福利三区| 国产欧美一区二区三区久久 |