??xml version="1.0" encoding="utf-8" standalone="yes"?>久久91精品国产91,久久综合视频网,久久综合色老色http://www.shnenglu.com/prayer/category/9100.html在一般中L卓越zh-cnThu, 21 Mar 2019 07:39:44 GMTThu, 21 Mar 2019 07:39:44 GMT60使用telnet发送带附g的邮?/title><link>http://www.shnenglu.com/prayer/archive/2011/12/13/162027.html</link><dc:creator>Prayer</dc:creator><author>Prayer</author><pubDate>Tue, 13 Dec 2011 06:21:00 GMT</pubDate><guid>http://www.shnenglu.com/prayer/archive/2011/12/13/162027.html</guid><wfw:comment>http://www.shnenglu.com/prayer/comments/162027.html</wfw:comment><comments>http://www.shnenglu.com/prayer/archive/2011/12/13/162027.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/prayer/comments/commentRss/162027.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/prayer/services/trackbacks/162027.html</trackback:ping><description><![CDATA[<div id="zzrtnpt" class="cnt" id="blog_text"> <p>[root@localhost ~]# telnet smtp.126.com 25<br />Trying 202.108.5.141...<br />Connected to smtp.126.com (202.108.5.141).<br />Escape character is '^]'.<br />220 126.com Anti-spam GT for Coremail System (126com[071018])<br />ehlo <font face="宋体">###</font><a href="mailto:###@126.com">@126.com</a> //###代表你的126邮箱用户?br />250-mail<br />250-AUTH LOGIN PLAIN<br />250-AUTH=LOGIN PLAIN<br />250 8BITMIME<br />auth login<br />334 dXNlcm5hbWU6<br />###                     //###代表你的126邮箱用户名的base64~码<br />334 UGFzc3dvcmQ6<br />###                    //###代表你的126邮箱密码的base64~码<br />235 Authentication successful<br />mail from:<<a href="mailto:###@126.com">###@126.com</a>> <a>//###@126.com</a>代表你的126邮箱地址<br />250 Mail OK<br />rcpt to:<<a href="mailto:###@mail.psychcn.com">###@mail.psychcn.com</a>> <a>//###@mail.psychcn.com</a><br />250 Mail OK<br />data<br />354 End data with <CR><LF>.<CR><LF><br />subject: How to use telnet to send mail<br />Content-Type: multipart/mixed; boundary=a<br />--a<br />Content-Disposition: attachment; filename="1.txt"   //附g<br />--a<br />.<br />250 Mail OK queued as smtp4,jdKowLB7CjgufrJIgl6YIA==.63330S2 1219657375<br />quit<br />221 Bye<br />Connection closed by foreign host.</p></div><br /><img src ="http://www.shnenglu.com/prayer/aggbug/162027.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/prayer/" target="_blank">Prayer</a> 2011-12-13 14:21 <a href="http://www.shnenglu.com/prayer/archive/2011/12/13/162027.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>利用telnetq行SMTP的验?/title><link>http://www.shnenglu.com/prayer/archive/2011/12/13/162021.html</link><dc:creator>Prayer</dc:creator><author>Prayer</author><pubDate>Tue, 13 Dec 2011 05:52:00 GMT</pubDate><guid>http://www.shnenglu.com/prayer/archive/2011/12/13/162021.html</guid><wfw:comment>http://www.shnenglu.com/prayer/comments/162021.html</wfw:comment><comments>http://www.shnenglu.com/prayer/archive/2011/12/13/162021.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/prayer/comments/commentRss/162021.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/prayer/services/trackbacks/162021.html</trackback:ping><description><![CDATA[<div class="v9n7jnr" id="cnblogs_post_body"> <div id="7nnlzdb" class="code">=========先计BASE64~码的用户名密码Q认证登录需要用?========== <br />[crazywill@localhost crazywill]$ perl -MMIME::Base64 -e 'print encode_base64("crazywill");'<br />Y3Jhenl3aWxs<br /><br />[crazywill@localhost crazywill]$ perl -MMIME::Base64 -e 'print encode_base64("mypassword");'<br />bXlwYXNzd29yZA==<br /></div> <div id="x9thzzt" class="code">======================开始SMTP发信操作==========================<br />[crazywill@localhost crazywill]$ telnet smtp.163.com 25 #telnetd25端口<br />Trying 202.108.5.81... <br />Connected to smtp.163.com. <br />Escape character is '^]'. <br />220 163.com Coremail SMTP(Anti Spam) System <br />EHLO smtp.163.com # 握手 :) <br />250-mail <br />250-PIPELINING <br />250-AUTH LOGIN PLAIN <br />250-AUTH=LOGIN PLAIN <br />250 8BITMIME <br />AUTH LOGIN # 开始认证登?<br />334 dXNlcm5hbWU6 <br />crazywill <br />334 UGFzc3dvcmQ6 <br />mypassword <br />535 Error: authentication failed # 直接用户名密码不能登?<br />AUTH LOGIN <br />334 dXNlcm5hbWU6 <br />Y3Jhenl3aWxs <br />334 UGFzc3dvcmQ6 <br />bXlwYXNzd29yZA== <br />235 Authentication successful # 使用Base64~码则成功登?<br />MAIL FROM:<test@163.com> # 邮g发送方 <br />553 You are not authorized to send mail, authentication is required # 不可伪造发送邮?<br />MAIL FROM:<crazywill@163.com> # 邮g发送方 <br />250 Mail OK <br />RCPT TO:<crazywill@163.com> # 邮g的接收方Q若有多个收件hQ则重复q一语句多次?<br />250 Mail OK <br />DATA # 邮g体内?<br />354 Please start mail input. <br />TO: crazywill@163.com # 此处的TOQFROMQ等内容Q可以随侉K假 :) 可以骗h但骗不了懂得查看邮g源码的?<br />FROM: cccc@163.com <br />SUBJECT: test by telnet/smtp <br /><br />test, just a test. # 邮g正文内容Q与Header部分IZ行开始写 <br />. # 邮g写完Q以一个句点加回Rl果?<br />250 Mail OK queued as smtp10,wKjADQ2ApxRnnqBE0CWaEw==.38326S3 # q回250 表示发送成功?<br />NOOP # I句,不执行Q何操作,一般用来保持和服务器连接,不要掉线 <br />250 OK <br />QUIT # 退?<br />221 Closing connection. Good bye. <br />Connection closed by foreign host. <br />[crazywill@localhost crazywill]$ <br /><br /><br />======================开始POP3收信操作========================== <br /><br />[crazywill@localhost crazywill]$ telnet pop.163.com 110 #telnetd110端口 <br />Trying 202.108.5.104... <br />Connected to pop.163.com. <br />Escape character is '^]'. <br />+OK Welcome to coremail Mail Pop3 Server (163com[20050206]) <br />USER crazywill # 用户?<br />+OK core mail <br />PASS mypassword # d密码 <br />+OK 254 message(s) [27676669 byte(s)] <br />STAT # 查看邮箱状?<br />+OK 254 27676669 <br />LIST # 邮g列表 <br />+OK 254 27676669 <br />1 2468 <br />2 21945 <br />3 33136 <br />4 2071 <br />5 3364 <br />6 18906 <br />7 3136 <br />8 24764 <br />................. <br /><br />TOP 254 0 # 查看指定邮g的邮件头Q?表示查看整个邮g_其它正整数表C限制返回多行?<br />+OK core mail <br />Received: from smtp.63.com (unknown [58.252.70.158]) <br />by smtp5 (Coremail) with SMTP id wKjREDrA9gIfFqlEjCnRAg==.29062S4; <br />Mon, 03 Jul 2006 21:07:18 +0800 (CST) <br />TO: crazywill@163.com <br />FROM : cccc@163.com # q里卛_面发信时伪造的一个假发送h信息Q^时正常操作只昄q个?<br />SUBJECT: test by telnet/smtp # 邮g主题 <br />Message-Id: <44A91687.0E6F6C.07562> <br />Date: Mon, 3 Jul 2006 21:07:19 +0800 (CST) <br />Sender: crazywill@163.com # q里是真正的发送hQ不可伪造?<br /><br /><br />. <br />RETR 254 # 获取指定邮g <br />+OK 354 octets <br />Received: from smtp.63.com (unknown [58.252.70.158]) <br />by smtp5 (Coremail) with SMTP id wKjREDrA9gIfFqlEjCnRAg==.29062S4; <br />Mon, 03 Jul 2006 21:07:18 +0800 (CST) <br />TO: crazywill@163.com <br />FROM : cccc@163.com <br />SUBJECT: test by telnet/smtp <br />Message-Id: <44A91687.0E6F6C.07562> <br />Date: Mon, 3 Jul 2006 21:07:19 +0800 (CST) <br />Sender: crazywill@163.com <br /><br />test, just a test. <br />. <br /><br />DELE 254 # 删除W?54邮?<br />+OK core mail <br />STAT # 查看邮箱状?<br />+OK 253 27676315 <br />QUIT # 退?<br />+OK core mail <br />Connection closed by foreign host. <br />[crazywill@localhost crazywill]$ <br /><br /><br />=============================================================== <br /><br />QUESTION: <br />如何发送给多hQ如何CCQBCCQ?<br /><br />ANSWER: (此答案由SnifferPro监听OUTLOOK发送多人邮件分析出来的) <br />同一信发?抄送给多hQ在MAIL FROM:<...> 后,多次使用 RCPT TO:<...> <br />每次一个邮件地址Q需要发l多h?RCPT TO 多少ơ?<br /><br />在DATA里面写的CCQBCCQTOQ等信息只v昄作用Q与实际发送h接收人无兟?<br /><br />CC与BCC的差别:同样都是RCPT TO指定收g人,但是邮g客户端程序,不会BCC的收件h写到DATA要传送的数据里?/div> <div id="rflnxhr" class="code"> </div> <div id="jdrllfp" class="code"><strong>使用IMAP</strong></div> <div id="b9rbvfd" class="code">[crazywill@localhost crazywill]$ <span style="color: #0000ff">telnet 192.168.0.1 143</span>      #telnetdIMAP协议?43端口<br />Trying 192.168.0.1...<br />Connected to xxxxxx<br />Escape character is '^]'.<br />* OK xxxxxxx System IMap Server Ready<br /><span style="color: #0000ff">A01 LOGIN abc 123</span>       #用户d<br />A01 OK LOGIN completed<br /><span style="color: #0000ff">A02 LIST "" * </span>          #列出所有信列?br />* LIST () "/" "INBOX"<br />* LIST () "/" "Drafts"<br />* LIST () "/" "Sent Items"<br />* LIST () "/" "Trash"<br />* LIST () "/" "Junk E-mail"<br />* LIST () "/" "Virus Items"<br />* LIST () "/" "&XfJT0ZABkK5O9g-"<br />* LIST () "/" "&g0l6Pw-"<br />* LIST () "/" "&XfJT0ZABkK5O9g-/DailyReport"<br />* LIST () "/" "Jira"<br />* LIST () "/" "Admin"<br />* LIST () "/" "&V4NXPpCuTvY-"<br />A02 OK LIST Completed<br /><span style="color: #0000ff">A03 Select INBOX</span>         #选择收g?br />* 37 EXISTS<br />* 0 RECENT<br />* OK [UIDVALIDITY 1] UIDs valid<br />* FLAGS (\Answered \Seen \Deleted \Draft)<br />* OK [PERMANENTFLAGS (\Answered \Seen \Deleted \Draft)] Limited<br />A03 OK [READ-WRITE] SELECT completed<br /><span style="color: #0000ff">A04 Search ALL</span>           #查询收g所有邮?br />* OK X-SEARCH in progress<br />* OK X-SEARCH in progress<br />* OK X-SEARCH in progress<br />* SEARCH 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 31 32 33 34 35 36 37<br />A04 OK SEARCH completed            # 列出W合条g的邮件序?ALL表示列出当前信箱INBOX中的所有邮?<br /><span style="color: #0000ff">A05 Search new</span>           #查询收g所有新邮g<br />* OK X-SEARCH in progress<br />* OK X-SEARCH in progress<br />* OK X-SEARCH in progress<br />* SEARCH<br />A05 OK SEARCH completed            #找不CQ何新邮g<br /><span style="color: #0000ff">A06 Fetch 5 full</span>         #获取W?邮件的邮g?br />* 5 FETCH (INTERNALDATE "27-Jun-2006 14:00:27 +0800" FLAGS (\Seen) ENVELOPE ("Tue, 27 Jun 2006 13:56:51 +0800" "test " (("xxxxxx" NIL "xxxx" "xxxxxx")) (("xxxxxx" NIL "xxxx" "xxxxxx")) (("xxxxxx" NIL "xxxx" "xxxxxx")) ((NIL NIL "xxx" "xxxxx")) NIL NIL NIL "<<a href="mailto:000f01c699ae$7c5014a0$6b01a8c0@xxxxxx.xx"><font color="#1a8bc8">000f01c699ae$7c5014a0$6b01a8c0@xxxxxx.xx</font></a>>") BODY (("text" "plain" ("charset" "gb2312") NIL NIL "base64" 14 2) ("text" "html" ("charset" "gb2312") NIL NIL "base64" 420 7) "alternative") RFC822.SIZE 1396)<br />A06 OK Fetch completed<br /><span style="color: #0000ff">A07 Fetch 5 rfc822</span>       #获取W?邮件的完整内容<br />* 5 FETCH (RFC822 {1396}<br />[q里是邮件内容,太长Q略...]<br />A07 OK Fetch completed<br /><span style="color: #0000ff">A08 Fetch 5 flags</span>        #查询W?邮件的标志?br />A08 OK Fetch completed<br /><span style="color: #0000ff">A09 Store 5 +flags.silent (\deleted)</span>          #讄标志位ؓ删除<br />A09 OK STORE completed<br /><span style="color: #0000ff">A10 Expunge</span>              #怹删除当前邮箱INBOX中所有设|了\deleted标志的信?br />A10 OK EXPUNGE completed<br /><span style="color: #0000ff">A11 noop </span>                 # I?br />A11 OK NOOP completed<br /><br /><br /><span style="color: #0000ff">A20 LOGOUT  </span>             #退?br />* BYE IMAP4rev1 Server logging out<br />A20 OK LOGOUT completed<br />Connection closed by foreign host.<br />[crazywill@localhost crazywill]$<br /></div></div><script type="text/javascript"> if ($ != jQuery) { $ = jQuery.noConflict(); } var isLogined = false; var cb_blogId = 33492; var cb_entryId = 1320266; var cb_blogApp = "rootq"; var cb_blogUserGuid = "c38e3d0b-63cf-dd11-9e4d-001cf0cd104b"; var cb_entryCreatedDate = '2008/10/27 11:08:00'; </script><img src ="http://www.shnenglu.com/prayer/aggbug/162021.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/prayer/" target="_blank">Prayer</a> 2011-12-13 13:52 <a href="http://www.shnenglu.com/prayer/archive/2011/12/13/162021.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>getservbyname()http://www.shnenglu.com/prayer/archive/2011/12/13/162014.htmlPrayerPrayerTue, 13 Dec 2011 04:17:00 GMThttp://www.shnenglu.com/prayer/archive/2011/12/13/162014.htmlhttp://www.shnenglu.com/prayer/comments/162014.htmlhttp://www.shnenglu.com/prayer/archive/2011/12/13/162014.html#Feedback0http://www.shnenglu.com/prayer/comments/commentRss/162014.htmlhttp://www.shnenglu.com/prayer/services/trackbacks/162014.html  q回对应于给定服务名和协议名的相x务信息?
  #include <windows.h>
  struct servent FAR * PASCAL FAR getservbyname(const char
  Far * name, const char FAR *proto);
  nameQ?一个指向服务名的指针?
  protoQ?指向协议名的指针Q可选)。如果这个指针ؓI,getservbyname()q回W一个name与s_name或者某一个s_aliases匚w的服务条目。否则getservbyname()对name和proto都进行匹配?
  注释Q?
  getservbyname()q回与给定服务名对应的包含名字和服务号信息的serventl构指针。结构的声明如下Q?
  struct servent {
  char FAR * s_name;
  char Far * FAR * s_aliases;
  short s_port;
  char FAR * s_proto;
  };
  l构的成员有Q?
  成员 用?
  s_name 正规的服务名?
  s_aliases 一个以I指针结可选服务名队列?
  s_port q接该服务时需要用到的端口Pq回的端口号是以|络字节序排列的?
  s_proto q接该服务时用到的协议名?

Prayer 2011-12-13 12:17 发表评论
]]>
ISO8583规范http://www.shnenglu.com/prayer/archive/2010/10/13/129769.htmlPrayerPrayerWed, 13 Oct 2010 12:03:00 GMThttp://www.shnenglu.com/prayer/archive/2010/10/13/129769.htmlhttp://www.shnenglu.com/prayer/comments/129769.htmlhttp://www.shnenglu.com/prayer/archive/2010/10/13/129769.html#Feedback0http://www.shnenglu.com/prayer/comments/commentRss/129769.htmlhttp://www.shnenglu.com/prayer/services/trackbacks/129769.htmlISO8583接口的详l资?
  ISO8583包(U?583包)是一个国际标准的包格式,最多由128个字D域l成Q每个域都有l一的规定,q有定长与变长之分?583包前面一Dؓ位图Q用来确定包的字D域l成情况。其中位图是8583包的灵魂Q它是打包解包确定字D域的关键,而了解每个字D域的属性则是填写数据的基础?


  1?位图描述如下Q?
  位图位置Q?
  格式Q定?
  cdQB16Q二q制16位,16*8=128bitQ?
  描述Q?
  如将位图的第一位设?1'Q表CZ用扩展位图(128个域Q,否则表示只用基本位图(64个域Q?
  如用某数据域,应在位图中将相应的位设位'1'Q如使用41域,需位囄41位设?1'?
  选用条gQ如使用65?28域,需设位囑֟W一位ؓ'1'

  2、每个域的定义如下:
  typedef struct ISO8583
  {
    int   bit_flag;      /*域数据类? -- string, 1 -- int, 2 -- binary*/
    char  *data_name;     /*域名*/
    int   length;       /*数据域长?/
    int   length_in_byte;   /*实际长度Q如果是变长Q?/
    int   variable_flag;   /*是否变长标志0Q否 2Q?位变? 3Q?位变?/
    int   datatyp;      /*0 -- string, 1 -- int, 2 -- binary*/
    char  *data;       /*存放具体?/
    int   attribute;     /*保留*/
  } ISO8583;
    
  ISO8583 Tbl8583[128] =
  {
    /* FLD 01 */ {0,"BIT MAP,EXTENDED", 8, 0, 0, 2, NULL,0},
    /* FLD 02 */ {0,"PRIMARY ACCOUNT NUMBER", 22, 0, 2, 0, NULL,0},
    /* FLD 03 */ {0,"PROCESSING CODE", 6, 0, 0, 0, NULL,0},
    /* FLD 04 */ {0,"AMOUNT, TRANSACTION", 12, 0, 0, 1, NULL,0},
    /* FLD 05 */ {0,"NO USE", 12, 0, 0, 0, NULL,0},
    /* FLD 06 */ {0,"NO USE", 12, 0, 0, 0, NULL,0},
    /* FLD 07 */ {0,"TRANSACTION DATE AND TIME", 10, 0, 0, 0, NULL,0},
    /* FLD 08 */ {0,"NO USE", 8, 0, 0, 0, NULL,0},
    /* FLD 09 */ {0,"NO USE", 8, 0, 0, 0, NULL,0},
    /* FLD 10 */ {0,"NO USE", 8, 0, 0, 0, NULL,0},
    /* FLD 11 */ {0,"SYSTEM TRACE AUDIT NUMBER", 6, 0, 0, 1, NULL,0},
    /* FLD 12 */ {0,"TIME, LOCAL TRANSACTION", 6, 0, 0, 0, NULL,0},
    /* FLD 13 */ {0,"DATE, LOCAL TRANSACTION", 4, 0, 0, 0, NULL,0},
    /* FLD 14 */ {0,"DATE, EXPIRATION", 4, 0, 0, 0, NULL,0},
    /* FLD 15 */ {0,"DATE, SETTLEMENT", 4, 0, 0, 0, NULL,0},
    /* FLD 16 */ {0,"NO USE", 4, 0, 0, 0, NULL,0},
    /* FLD 17 */ {0,"DATE, CAPTURE", 4, 0, 0, 0, NULL,0},
    /* FLD 18 */ {0,"MERCHANT'S TYPE", 4, 0, 0, 0, NULL,0},
    /* FLD 19 */ {0,"NO USE", 3, 0, 0, 0, NULL,0},
    /* FLD 20 */ {0,"NO USE", 3, 0, 0, 0, NULL,0},
    /* FLD 21 */ {0,"NO USE", 3, 0, 0, 0, NULL,0},
    /* FLD 22 */ {0,"POINT OF SERVICE ENTRY MODE", 3, 0, 0, 0, NULL,0},
    /* FLD 23 */ {0,"NO USE", 3, 0, 0, 0, NULL,0},
    /* FLD 24 */ {0,"NO USE", 3, 0, 0, 0, NULL,0},
    /* FLD 25 */ {0,"POINT OF SERVICE CONDITION CODE", 2, 0, 0, 0, NULL,0},
    /* FLD 26 */ {0,"NO USE", 2, 0, 0, 0, NULL,0},
    /* FLD 27 */ {0,"NO USE", 1, 0, 0, 0, NULL,0},
    /* FLD 28 */ {0,"field27", 6, 0, 0, 0, NULL,0},
    /* FLD 29 */ {0,"NO USE", 8, 0, 1, 0, NULL,0},
    /* FLD 30 */ {0,"NO USE", 8, 0, 1, 0, NULL,0},
    /* FLD 31 */ {0,"NO USE", 8, 0, 1, 0, NULL,0},
    /* FLD 32 */ {0,"ACQUIRER INSTITUTION ID. CODE", 11, 0, 2, 0, NULL,0},
    /* FLD 33 */ {0,"FORWARDING INSTITUTION ID. CODE", 11, 0, 2, 0, NULL,0},
    /* FLD 34 */ {0,"NO USE", 28, 0, 2, 0, NULL,0},
    /* FLD 35 */ {0,"TRACK 2 DATA", 37, 0, 2, 0, NULL,0},
    /* FLD 36 */ {0,"TRACK 3 DATA",104, 0, 3, 0, NULL,0},
    /* FLD 37 */ {0,"RETRIEVAL REFERENCE NUMBER", 12, 0, 0, 0, NULL,0},
    /* FLD 38 */ {0,"AUTH. IDENTIFICATION RESPONSE", 6, 0, 0, 0, NULL,0},
    /* FLD 39 */ {0,"RESPONSE CODE", 2, 0, 0, 0, NULL,0},
    /* FLD 40 */ {0,"NO USE", 3, 0, 0, 0, NULL,0},
    /* FLD 41 */ {0,"CARD ACCEPTOR TERMINAL ID.", 8, 0, 0, 0, NULL,0},
    /* FLD 42 */ {0,"CARD ACCEPTOR IDENTIFICATION CODE", 15, 0, 0, 0, NULL,0},
    /* FLD 43 */ {0,"CARD ACCEPTOR NAME LOCATION", 40, 0, 0, 0, NULL,0},
    /* FLD 44 */ {0,"ADDITIONAL RESPONSE DATA", 25, 0, 2, 0, NULL,0},
    /* FLD 45 */ {0,"NO USE", 76, 0, 2, 0, NULL,0},
    /* FLD 46 */ {0,"NO USE", 999, 0, 3, 0, NULL,0},
    /* FLD 47 */ {0,"field47", 999, 0, 3, 0, NULL,0},
    /* FLD 48 */ {0,"ADDITIONAL DATA --- PRIVATE", 999, 0, 3, 0, NULL,0},
    /* FLD 49 */ {0,"CURRENCY CODE,TRANSACTION", 3, 0, 0, 0, NULL,0},
    /* FLD 50 */ {0,"CURRENCY CODE,SETTLEMENT", 3, 0, 0, 0, NULL,0},
    /* FLD 51 */ {0,"NO USE", 3, 0, 0, 0, NULL,0},
    /* FLD 52 */ {0,"PERSONAL IDENTIFICATION NUMBER DATA", 8, 0, 0, 2, NULL,0},
    /* FLD 53 */ {0,"SECURITY RELATED CONTROL INformATION", 16, 0, 0, 0, NULL,0},
    /* FLD 54 */ {0,"ADDITIONAL AMOUNTS",120, 0, 3, 0, NULL,0},
    /* FLD 55 */ {0,"NO USE", 999, 0, 3, 0, NULL,0},
    /* FLD 56 */ {0,"NO USE", 999, 0, 3, 0, NULL,0},
    /* FLD 57 */ {0,"NO USE", 999, 0, 3, 0, NULL,0},
    /* FLD 58 */ {0,"NO USE", 999, 0, 3, 0, NULL,0},
    /* FLD 59 */ {0,"NO USE", 999, 0, 3, 0, NULL,0},
    /* FLD 60 */ {0,"NO USE", 5, 0, 3, 0, NULL,0},
    /* FLD 61 */ {0,"NO USE", 999, 0, 3, 0, NULL,0},
    /* FLD 62 */ {0,"NO USE", 11, 0, 3, 0, NULL,0},
    /* FLD 63 */ {0,"NO USE", 11, 0, 3, 0, NULL,0},
    /* FLD 64 */ {0,"MESSAGE AUTHENTICATION CODE FIELD", 8, 0, 0, 2, NULL,0},
    /* FLD 65 */ {0,"NO USE", 999, 0, 3, 0, NULL,0},
    /* FLD 66 */ {0,"NO USE", 1, 0, 0, 0, NULL,0},
    /* FLD 67 */ {0,"NO USE", 999, 0, 3, 0, NULL,0},
    /* FLD 68 */ {0,"NO USE", 999, 0, 3, 0, NULL,0},
    /* FLD 69 */ {0,"NO USE", 999, 0, 3, 0, NULL,0},
    /* FLD 70 */ {0,"SYSTEM MANAGEMENT INformATION CODE", 3, 0, 0, 0, NULL,0},
    /* FLD 71 */ {0,"NO USE", 999, 0, 3, 0, NULL,0},
    /* FLD 72 */ {0,"NO USE", 999, 0, 3, 0, NULL,0},
    /* FLD 73 */ {0,"NO USE", 6, 0, 0, 0, NULL,0},
    /* FLD 74 */ {0,"NUMBER OF CREDITS", 10, 0, 0, 0, NULL,0},
    /* FLD 75 */ {0,"REVERSAL NUMBER OF CREDITS", 10, 0, 0, 0, NULL,0},
    /* FLD 76 */ {0,"NUMBER OF DEBITS", 10, 0, 0, 0, NULL,0},
    /* FLD 77 */ {0,"REVERSAL NUMBER OF DEBITS", 10, 0, 0, 0, NULL,0},
    /* FLD 78 */ {0,"NUMBER OF TRANSFER", 10, 0, 0, 0, NULL,0},
    /* FLD 79 */ {0,"REVERSAL NUMBER OF TRANSFER", 10, 0, 0, 0, NULL,0},
    /* FLD 80 */ {0,"NUMBER OF INQUIRS", 10, 0, 0, 0, NULL,0},
    /* FLD 81 */ {0,"AUTHORIZATION NUMBER", 10, 0, 0, 0, NULL,0},
    /* FLD 82 */ {0,"NO USE", 12, 0, 0, 0, NULL,0},
    /* FLD 83 */ {0,"CREDITS,TRANSCATION FEEAMOUNT", 12, 0, 0, 0, NULL,0},
    /* FLD 84 */ {0,"NO USE", 12, 0, 0, 0, NULL,0},
    /* FLD 85 */ {0,"DEBITS,TRANSCATION FEEAMOUNT", 12, 0, 0, 0, NULL,0},
    /* FLD 86 */ {0,"AMOUNT OF CREDITS", 16, 0, 0, 0, NULL,0},
    /* FLD 87 */ {0,"REVERSAL AMOUNT OF CREDITS", 16, 0, 0, 0, NULL,0},
    /* FLD 88 */ {0,"AMOUNT OF DEBITS", 16, 0, 0, 0, NULL,0},
    /* FLD 89 */ {0,"REVERSAL AMOUNT OF DEBITS", 16, 0, 0, 0, NULL,0},
    /* FLD 90 */ {0,"ORIGINAL DATA ELEMENTS", 42, 0, 0, 0, NULL,0},
    /* FLD 91 */ {0,"FILE UPDATE CODE", 1, 0, 0, 0, NULL,0},
    /* FLD 92 */ {0,"NO USE", 999, 0, 3, 0, NULL,0},
    /* FLD 93 */ {0,"NO USE", 999, 0, 3, 0, NULL,0},
    /* FLD 94 */ {0,"SERVICE INDICATOR", 7, 0, 0, 0, NULL,0},
    /* FLD 95 */ {0,"REPLACEMENT AMOUNTS", 42, 0, 0, 0, NULL,0},
    /* FLD 96 */ {0,"NO USE", 8, 0, 0, 0, NULL,0},
    /* FLD 97 */ {0,"AMOUNT OF NET SETTLEMENT", 16, 0, 0, 0, NULL,0},
    /* FLD 98 */ {0,"NO USE", 999, 0, 3, 0, NULL,0},
    /* FLD 99 */ {0,"SETTLEMENT INSTITUTION ID", 11, 0, 2, 0, NULL,0},
    /* FLD 100 */ {0,"RECVEING INSTITUTION ID", 11, 0, 2, 0, NULL,0},
    /* FLD 101 */ {0,"FILENAME", 17, 0, 2, 0, NULL,0},
    /* FLD 102 */ {0,"ACCOUNT IDENTIFICATION1", 28, 0, 2, 0, NULL,0},
    /* FLD 103 */ {0,"ACCOUNT IDENTIFICATION2", 28, 0, 2, 0, NULL,0},
    /* FLD 104 */ {0,"NO USE", 999, 0, 3, 0, NULL,0},
    /* FLD 105 */ {0,"NO USE", 999, 0, 3, 0, NULL,0},
    /* FLD 106 */ {0,"NO USE", 999, 0, 3, 0, NULL,0},
    /* FLD 107 */ {0,"NO USE", 999, 0, 3, 0, NULL,0},
    /* FLD 108 */ {0,"NO USE", 999, 0, 3, 0, NULL,0},
    /* FLD 109 */ {0,"NO USE", 999, 0, 3, 0, NULL,0},
    /* FLD 110 */ {0,"NO USE", 999, 0, 3, 0, NULL,0},
    /* FLD 111 */ {0,"NO USE", 999, 0, 3, 0, NULL,0},
    /* FLD 112 */ {0,"NO USE", 999, 0, 3, 0, NULL,0},
    /* FLD 113 */ {0,"NO USE", 999, 0, 3, 0, NULL,0},
    /* FLD 114 */ {0,"NO USE", 999, 0, 3, 0, NULL,0},
    /* FLD 115 */ {0,"NO USE", 999, 0, 3, 0, NULL,0},
    /* FLD 116 */ {0,"NO USE", 999, 0, 3, 0, NULL,0},
    /* FLD 117 */ {0,"NO USE", 999, 0, 3, 0, NULL,0},
    /* FLD 118 */ {0,"NO USE", 999, 0, 3, 0, NULL,0},
    /* FLD 119 */ {0,"NO USE", 999, 0, 3, 0, NULL,0},
    /* FLD 120 */ {0,"NO USE", 999, 0, 3, 0, NULL,0},
    /* FLD 121 */ {0,"NO USE", 999, 0, 3, 0, NULL,0},
    /* FLD 122 */ {0,"NO USE", 999, 0, 3, 0, NULL,0},
    /* FLD 123 */ {0,"NEW PIN DATA", 8, 0, 3, 2, NULL,0},
    /* FLD 124 */ {0,"NO USE", 999, 0, 3, 0, NULL,0},
    /* FLD 125 */ {0,"NO USE", 999, 0, 3, 0, NULL,0},
    /* FLD 126 */ {0,"NO USE", 999, 0, 3, 0, NULL,0},
    /* FLD 127 */ {0,"NO USE", 999, 0, 3, 0, NULL,0},
    /* FLD 128 */ {0,"MESSAGE AUTHENTICATION CODE FIELD", 8, 0, 0, 2, NULL,0},
  };
      
  Q、变长,定长域说?
  如第二域Q域名ؓdP
  数据cd为string
  长度?2Q是镉K度不得超q此敎ͼ
  是个Q位变长?
  ׃是2位变长,在打包时需在数据域前加上数据的实际长度Q如?9位,则表CZؓQ?
  19Q数据|卛_两位为长度)

  如第三域Q域名ؓ处理码,
  数据cd为string
  长度为6
  是个定长?
  必须填满Q位?
  
  附A:ISO8583各域D늚说明
  1Q信息类型(message type)定义
  位图位置Q-
  格式Q定?
  cdQN4
  描述Q?
  数据包的W一部分Q定义数据包的类型?
  数据cd由数据包的发赯设定,应遵循以下要求:
  数据包开始部分必L信息cdQ?
  对不支持的信息类型能l出拒绝应答?
  0100授权交易
  0110授权交易{复
  0200金融交易
  0210金融交易{复
  0240查询交易
  0250查询交易{复
  0400冲正交易
  0410冲正交易{复
  0800理交易
  0810理交易{复

  2Q位?Bit Map) - 基本位图和扩展位?
  位图位置Q?
  格式Q定?
  cdQB16
  描述Q?
  如将位图的第一位设?1'Q表CZ用扩展位图,否则表示只用基本位图?
  如用某数据域,应在位图中将相应的位设位'1'Q如使用41域,需位囄41位设?1'?
  选用条gQ如使用65?28域,需设位囑֟?1'

  3QBit02d?Primary Account Number )
  位图位置Q?2
  格式Q变?LLVAR
  cdQN..22
  描述Q?
  唯一的确认一个用户交易的基本帐号?
  ׃银行电子服务pȝ涉及多个应用pȝQ而帐号长度最多ؓ22位,故将原标准的19长度改ؓ22位?

  Bit03 处理代码 QProcessing Code )
  位图位置Q?3
  格式Q定?
  cdQN6
  描述Q用于描qC易对客户帐户造成何种影响的代码?
  处理代码和信息码一起可唯一定义一U交易的cd?
  处理代码׃下三部分l成Q?
  位置描述
  1Q?交易动作?
  3Q?付出帐户cdQ用于借记c,如查询、代收费、{Z易?
  5Q?收入帐户cdQ用于代收费、{帐等?

  其中Q?
  ff : 付出帐户
  ttQ?收入帐户
  * 视主定

  5QBit04 交易金额 QAmount, Transaction)
  位图位置Q?4
  格式Q定?
  cdQN12
  描述Q帐户h要求交易的交易金额,不含M处理和交易费用?
  金额的表C和货币代码有关Q应能表C相应货币的最单位。参ISO4217有关货币代码定义?
  ?#8220;000000000100”用于表示元Q表C?.00元;如用于表C意大利货币Q则表示100里拉。对于查询等交易Q应设交易金额ؓ“000000000000”?

  6QBit06交易日期和时_Transmission Date and TimeQ?
  位图位置Q?7
  格式Q定长,MMDDhhmmss
  cdQN10
  描述Q本C易日期和旉
  
  7QBit11pȝ跟踪PSystems Trace Audit Number)
  位图位置Q?1
  格式Q定?
  cdQN6
  描述Q终端交易的跟踪L?
  交易发vl端填写Q和“交易日期、时?#8221;、信息类型等合在一起可唯一定义某一个终端的唯一一W交易。即是说Q在同一天,对一l端Q同一cM易的pȝ跟踪号应保证不同。系l跟t号在交易过E中不能修改。用此域来匚wh和通知cM易的q回?
  应用pȝ使用此域来检查收到的授权、金融、自动冲正、结、管理和|管{类交易的应{包是否是其h包的应答?
  pȝ跟踪号不用于匚w自动冲正交易Q也不用于在预授权消Ҏ匚w前面的预授权交易。参90域?
  对于银行电子服务pȝQ其pȝ跟踪h交易水受?

  8QBit12本地交易旉QTime ,Local TransactionQ?
  位图位置Q?2
  格式Q定长,hhmmss
  cdQN6
  描述Q交易在l端上发生的旉?
  本地交易旉在交易处理过E中不能改变。在自动冲正Q存贮{发时Q本C易时间不能改变?
  
  9QBit13本地交易日期(Date ,Local Transaction)
  位图位置Q?3
  格式Q定?MMDD
  cdQN4
  描述Q交易在l端上发生的旉?
  本地交易旉不能改变Q在自动冲正、存储{发交易时Q本C易时间也不能改变?

  10QBit14有效?Date ,Expiration)
  位图位置Q?4
  格式Q定?YYMM
  cdQN4
  描述Q卡的有效期Q年q月?
  ׃卡类写磁格式不同Q收单行可能提不出卡的有效期Q授权机构从卡的二磁道中提取卡的有效期。如卡,无二道Q收单行应要求手工录入卡的有效期?
  选用条gQ?00?00?00{交易如没有2?道Ӟ一定要有此域?
  
  11QBit15l算日期(Date ,Settlement)
  位图位置Q?5
  格式Q定长,MMDD
  cdQN4
  描述Q?
  银行电子服务pȝ和主机结的旉Q格式月月日日。结帐日期前发生的交易参加当天结?
  在结时Q结帐日期也用于计算处理、交易费用?

  12QBit17获取日期(Date ,Capture)
  位图位置Q?7
  格式Q定长,MMDD
  cdQN4
  描述Q从L获取交易的记帐日期。通常用于L和商h?
  
  13QBit18商户cdQMerchant's Type)
  位图位置Q?8
  格式Q定?
  cdQN4
  描述Q定义商户品和服务cd的代?
  商户cd用于金融、授权交易,用于指定服务点的cd。它主要有以下用途:
  军_预授权交易得到确认的最长时_
  控制合法限额Q?
  Z易授权处理,控制|络操作规则Q?
  ;
  用于商户分类报表Q?
  交易费用处理?

  ҎISO8583标准Q应使用相应的国家标准?
  商户cd代码表如下:
  商户cd代码行业cd说明
  4215邮递服?
  4511民航
  4722旅游
  4782q桥?
  4789其他q输服务
  4614电信服务
  5542加a?
  5812馆
  5999购物
  6010金融机构Qh工现金支?
  6011金融机构Q自动现金支?
  6012金融机构Q各cL?
  7011酒店、旅?
  7299各类个h服务Q洗衣、美宏V?
  7399各类商业服务Q停车场、租车、广告、其他服?
  7699各类l修服务Q维修、洗车、拖?
  7996׃Q电影、剧院、体肌Ӏ游?
  8099ȝ服务
  8111法律服务
  8999各类专业服务Q会计、教肌Ӏ装修、工E?
  
  选用条gQ服务点l端发v的交易一定要有此域?

  14QBit22服务点输入方?Point-of-Service Entry Mode)
  位图位置Q?2
  格式Q定?
  cdQN3
  描述Q在服务l端上定义PIN和PAN的输入方式?
  服务点输入方式包含以下两个方面组合而成Q?
  位置描述
  1Q?在服务终端上PAN有效期输入方?
  3Q?在服务终端上PIN的输入方?
  PAN的输入方式编码如下:
  PAN输入方式描述
  00不知
  01手工
  02ȝ?
  03条码扫描仪(BARQ?
  04光学W号阅读器(OCRQ?
  05集成电\卡(IC卡)
  
  PIN的输入方式编码如下:
  PIN输入方式描述
  0不知
  1l端能接收PIN
  2l端不能接收PIN
  
  选用条gQ服务点l端发v的交易一定要有此域?
  
  15QBit25服务Ҏ件代?Point-of-Service Condition Code)
  位图位置Q?5
  格式Q定?
  cdQN2
  描述Q定义交易发生的服务点类?
  用法说明Q下面是CYBERBANK支持的服务点条g代码?
  服务Ҏ件代码服务点l端cd
  2自动柜员机(ATMQ?
  10银行l端Q?0Q?
  14POS
  20电话银行
  
  16QBit32收单机构标识?Acquirer institution Identification)
  位图位置Q?2
  格式QLLVAR
  cdQN..11
  描述Q在金融交易中此域表CZ易发生的银行机构的标识码。应{数据包必须和请求数据包此域相同?
  
  17QBit33授权机构标识?Forwarding Institution Identification Code)
  位图位置Q?3
  格式QLLVAR
  cdQN..11
  描述Q在金融交易中此域表C帐h在的银行机构的标识码
  在网交?00/810中,本域含有交易发v机构的代码?应答数据包必dh数据包此域相同?
  
  18QBit35二磁道数?Track 2 Data)
  位图位置Q?5
  格式QLLVAR
  cdQZ..37
  描述Q写在卡二磁道的数据。数据组成遵循ISO7811Q?985标准Q数据中包含域分隔符Q但不包含卡启始、结束符、LRC{?
  收卡行应卡的二道是否W合国际标准?
  为支持国际交换收单行应将二磁道中的分隔符换ؓ“Q?#8221;。除此外不能对二道数据q行M修改Q如修改PAN的校验字、有效期、服务码{?
  
  19QBit36三磁道数?Track 3 Data)
  位图位置Q?6
  格式QLLLVAR
  cdQZ...104
  描述Q写在卡三磁道的数据。数据应l成遵@ISO4909标准Q数据中包含域分隔符Q但不包含卡启始、结束符、LRC{?
  注意Q长度说明ؓ3位数字长?
  
  20QBit37索烦引号(Retrieval Reference Number)
  位图位置Q?7
  格式Q定?
  cdQAN12
  描述Q检索烦引号用来在Q何时间标识一个金融、授权、自动冲正交易?
  索烦引号不要求打印在持卡人的帐单上。它的主要目的是在收单行和授权行之间定义一个数据项用于跟踪和检索交易。授权机构可以将索烦引号打印在客L对帐单上?
  索烦引号由收单行分配?
  选用条gQ可包含在收单机构的交易h中。如在交易请求中有,则应{数据中一定应原样q回?

  21QBit38授权?Authorization Identification)
  位图位置Q?8
  格式Q定?
  cdQAN6
  描述Q交易授权机构返回的q回代码?
  授权码用于在服务点终端上信用卡授权;
  授权机构按网l操作规定,可选用本域?
  
  22QBit39q回?Response Code)
  位图位置Q?9
  格式Q定?
  cdQAN2
  描述Q对一交易定义其处理结果的~码?
  q回码用于说明授权机构对金融Q授权)交易的处理状态;也用来指明自动冲正交易的冲正原因Q还用来指出目标L已接收到文g修改、结、管理、网等交易h?
  q回码应可能准,应尽可能描述清楚所遇到的问题和状态。网l交换主机、收单行L有可能会按不同的q回码收取不同的交易处理费用Qƈ执行不同的处理过E?

  23QBit41收卡单位l端标识?Card Acceptor Terminal Identification)
  位图位置Q?1
  格式Q定?
  cdQANS8
  描述Q定义在收单单位中定义一个服务终端的标识码,在同一商户中服务终端标识码应唯一?
  
  24QBit42收卡商户定义?Card Acceptor Identification Code)
  位图位置Q?2
  格式Q定?
  cdQANS15
  描述Q在本地和网l中定义交易单位Q商P的编码?
  
  25QBit43收卡商户位置(Card Acceptor Location)
  位图位置Q?3
  格式Q定?
  cdQANS40
  描述Q在本地和网l中定义收卡单位Q商P的国家、省。城市等?
  选用条gQ如对外卡网l,一定要包含此域?
  
  26QBit44附加q回数据(Additional ResponseData)
  位图位置Q?4
  格式QLLVAR
  cdQANS..25
  描述Q在金融Q授权)交易中授权机构返回的其他信息?
  
  27QBit48附加数据-U用(Additional Data-Private)
  位图位置Q?8
  格式QLLLVAR
  cdQANS...999
  描述Q银行电子服务系l用此域作以下用?
  存放扚w查询的返回数?
  其格式与输出格式表对?
  
  28QBit49交易货币代码(Currency Code,Transaction)
  位图位置Q?9
  格式Q定?
  cdQAN3
  描述Q按ISO4217定义的交易货币代码,用来表示“交易金额”Qfield04Q所用的货币U类?
  交易货币代码是指在收单单位进行交易所用的交易U类?
  
  29QBit50l算货币代码(Currency Code,Settlement)
  位图位置Q?0
  格式Q定?
  cdQAN3
  描述Q按ISO4217定义的结货币代码,用来表示l算金额、结处理费、结交易费{所用的货币U类?
  l算货币代码是指在进行结和清算q程中所用的货币U类?
  
  30QBit52用户密码(PIN)数据(PIN Data)
  位图位置Q?2
  格式Q定?
  cdQB16
  描述Q用户在服务l端上交易用于识别用户合法性的一些数字?
  PIN在分行主机用分行L密钥按ANSIX9.8标准加密QŞ成密文块?
  选用条gQ如果在l端上输入了密码Q就需要此域?
  
  31QBit53密码相关控制信息(Security Related Control)
  位图位置Q?3
  格式Q定?
  cdQAN16
  描述Q本域提供有兛_码块的附加信息,用于指出用于PIN计算的PIN keyQ用于MAC计算的MAC key?
  本域格式如下表所C:
  0Q?格式代码2N“20”
  2Q?PIN加密法2N“01”:DES
  4Q?密文块格?N“01”:ANSI
  6PIN密钥索引1N‘1’?#8216;2’
  7MAC密钥索引1N‘1’?#8216;2’
  8Q?1MAC查数?B
  12Q?5填充4N

  在BOC信用卡网l中PIN和MAC各用两个密?--'1'号和'2'密钥Q交易中计算PIN和MAC时只能各用某一个KEYQ同旉所用的KEY索引号填写此域?选用条gQ如果有PIN域或MAC域,一定需有此域?

  32QBit54附加金额(Additional Amounts)
  位图位置Q?4
  格式QLLLVAR
  cdQANS...120
  描述Q此域由授权行主机将客户的余额返回给收单l端Q以昄或打印在客户回单上?
  在此域中最多可?个余额返回,每个余额q回格式如下Q?
  位置描述
  0Q?处理?Q??Q?位定义的帐号cd
  2Q?金额cdQ?1Q帐户金?
  02Q可用金?
  03Q拥有金?
  04Q应付金?
  40Q可用取N?
  56Q可用{帐限?
  4Q?金额的货币代?
  7‘D’Q借记金额Q?#8217;C’Q贷记金?
  8Q?9余额数目
  
  六个余额中必返回可用余额,在ATM、POS上显C可用余?
  
  33QBit64信息认?MAC)
  位图位置Q?4
  格式Q定?
  cdQB16
  描述Q数据包的最后一个域Q用于验证信息来源的合法性,以及数据包中数据是否未被改?
  MAC的计参ANSIX.99,(最后八字节未满八位者左补零Q右补零Q?
  为提高效率,在发送者和接收者之_只有以下一些重要的域参加MAC的计。数据包中如果存在以下数据域Q它们将参加MAC的计?
  
  1位图域名
  2基本帐号
  3处理代码
  4交易金额
  11pȝ跟踪?
  12本地交易旉
  13本地交易日期
  32收单机构代码
  38授权?
  39q回?
  41收单l端代码
  49交易货币代码
  95替换金额
  选用条gQ只使用?Q?4域的数据包用此域?
  
  34QBit70理信息?System Management Indormation Code)
  位图位置Q?0
  格式Q定?
  cdQN3
  描述Q?
  
  用于定义和维护银行电子服务系l内部通讯|络状态和应用工作状态?
  |络理信息代码用于理清算日期"cutoff"Q通讯"sign on/sign off"Q?key exchange"{?
  支持以下一些网l管理信息码
  NMIC|络理信息码动?
  001{ֈ(Sign on)
  002{N(Sign off)
  101交换密钥(Key exchange)
  201l帐日期切换(Cutoff)
  202l帐日期切换完成
  301试(Echo test)
  
  35QBit74贯交易W数(Transaction Number)
  位图位置Q?4
  格式Q定?
  cdQN10
  描述Q贷记金融交易ȝ成功交易ơ数
  CYBERBANK软g在收到如下一个处理代码时会增加贷C易次数?
  交易码交易服?
  00贯Q购物与服务
  01贯Q取?
  02贯Q调?客户调整)
  
  36QBit75贯自动冲正交易W数(Credits,Reversal Number)
  位图位置Q?5
  格式Q定?
  cdQN10
  描述Q贷记收单行自动冲正?#8220;ChargeBack"{交易ȝ交易ơ数
  CYBERBANK软g在收到如下一个处理代码时会增加贷记自动冲正交易笔?
  交易码交易服?
  20贯Q退?
  21贯Q存?
  22贯Q调_客户修改Q?
  
  37QBit76借记交易W数(Debits,Number)
  位图位置Q?6
  格式Q定?
  cdQN10
  描述Q借记金融交易ȝ成功交易ơ数
  CYBERBANK软g在收到如下一个处理代码时会增加借记交易ơ数?
  交易码交易服?
  00借记Q购物与服务
  01借记Q取?
  02借记Q调?客户调整)
  
  38QBit77借记自动冲正交易W数(Debits,Reversal Number)
  位图位置Q?7
  格式Q定?
  cdQN10
  描述Q借记收单行自动冲正?#8220;ChargeBack"{交易ȝ交易ơ数
  CYBERBANK软g在收到如下一个处理代码时会增加借记重发交易ơ数Qƈ在清表报中反映?
  交易码交易服?
  20借记(!!!)Q退?
  21借记Q存?
  22借记Q调_客户修改Q?
  
  39QBit78转帐交易W数(Transfers,Number)
  位图位置Q?8
  格式Q定?
  cdQN10
  描述Q{帐的交易L数?
  pȝ在收到如下一个处理代码的金融交易时会增加转帐交易的次数?
  交易码交易服?
  40客户相关帐户间{?
  
  40QBit79转帐自动冲正交易W数(Transfers,Reversal Number)
  位图位置Q?9
  格式Q定?
  cdQN10
  描述Q{帐的自动冲正交易L数?
  pȝ在收到如下一个处理代码的自动冲正交易时会增加转帐自动冲正交易的次数?
  交易码交易服?
  40客户相关帐户间{?
  
  41QBit80查询交易W数(Inquiries,Number)
  位图位置Q?0
  格式Q定?
  cdQN10
  描述Q成功的查询交易ơ数?
  pȝ软g在收到如下一个处理代码时会增加查询交易次数?
  交易码交易服?
  30查询可用金额
  
  42QBit81授权交易W数(Authorization,Number)
  位图位置Q?1
  格式Q定?
  cdQN10
  描述Q成功的授权交易总额
  在收C个授权交易时pȝ授权交易笔数加一?
  
  43QBit83贯交易贚w?Credits,Transaction FeeAmount)
  位图位置Q?3
  格式Q定?
  cdQN12
  描述Q净交易费用Q如交易金额为正?
  
  44QBit85借记交易贚w?Debits,Transaction FeeAmount)
  位图位置Q?5
  格式Q定?
  cdQN12
  描述Q净交易费用Q如交易金额?
  
  45QBit86贯交易金额(Credits,Amount)
  位图位置Q?6
  格式Q定?
  cdQN16
  描述Q贷记金融交易ȝ交易金额Q不含Q何费用?
  pȝ在收到如下一个处理代码时会增加贷C易金额,q在清算表报中反映?
  交易码交易服?
  20贯Q退?
  21贯Q存?
  22贯Q调_客户修改Q?
  
  46QBit87贯自动冲正金额(Credits,Reversal Amount)
  位图位置Q?7
  格式Q定?
  cdQN16
  描述Q信用卡自动冲正交易的总金额,不含M费用?
  
  47QBit88借记交易金额(Debits,Amount)
  位图位置Q?8
  格式Q定?
  cdQN16
  描述Q借记金融交易ȝ交易金额Q不含Q何费用?
  pȝ在收到如下一个处理代码时会增加借记交易金额Qƈ在清表报中反映?
  交易码交易服?
  00借记Q购物与服务
  01借记Q取?
  02借记Q调?客户调整)
  
  48QBit89借记自动冲正交易金额(Debits,Reversal Amount)
  位图位置Q?9
  格式Q定?
  cdQN16
  描述Q借记自动冲正交易的总金额,不含M费用?
  
  49QBit90原交易的数据元素(Original Data Elements)
  位图位置Q?0
  格式Q定?
  cdQN42
  描述Q存攑֎交易的一些数据,用于修改或自动冲正?
  数据׃下五部分l成Q?
  位置描述
  1Q?信息cd?
  设ؓ原交易的信息cd代码
  5Q?0pȝ跟踪?
  原交易系l跟t号
  11Q?0交易日期和时?
  原交易的交易日期和时?
  21Q?1原收单机?
  原交易的收单机构
  不11位的机构代码Q左?#8216;0’
  32Q?2原向前机?
  原交易的收单机构
  不11位的机构代码Q左?#8216;0’
  
  50QBit91文g修改~码(File Update Code)
  位图位置Q?1
  格式Q定?
  cdQAN1
  描述Q用此域指示某文件怎样l护?
  CYBERBANK支持以下一些修改代码:
  1增加记录
  2改变记录
  3删除记录
  5查询
  7增加文g
  
  选用条gQ?
  
  51QBit94服务指示?Service Indicator)
  位图位置Q?4
  格式Q定?
  cdQAN7
  描述Q指C文件修Ҏ务?
  
  选用条gQ?
  
  52QBit95代替金额(Replacement Amounts)
  位图位置Q?5
  格式Q定?
  cdQN42!!!
  描述Q客户修Ҏ部分取消已完成的交易Q最后实际发生的交易金额Q?
  交易的原交易金额存放?0域?
  本域׃?部分l成
  Sub-ElementAmountAttribute
  交易实际金额N12
  l算实际金额N12
  实际交易费用XQN8
  实际l算费用XQN8
  
  53QBit97净l算金额(Net Settlement Amount)
  位图位置Q?7
  格式Q定?
  cdQX+N16
  描述Q此域ؓ净l帐金额?
  502交易中用于发送当天的净l算金额
  例:“C0000000020000000”Q表C方('Q?Q)200000.00元?
  “D0000000020000000”Q表C借方Q?Q?Q)200000.00元?
  
  
  54QBit99l算机构?Settlement Institution Identification)
  位图位置Q?9
  格式QLLVAR
  cdQN..11
  描述Q此域存放接收清信息的机构代码?
  q回数据包此域必dh数据包一致?
  
  55QBit100接收机构码(Receiving Institution Identification)
  位图位置Q?00
  格式QLLVAR
  cdQN..11
  描述Q金融交易此域存放授权机构代码?
  |管cM易,800/820交易Q此域存放请求的目的机构代码?
  q回数据包此域必dh数据包一致?
  
  56QBit101文g?FileName)
  位图位置Q?01
  格式QLLVAR
  cdQANS..17
  描述Q发送机构设|的文g名?
  
  57QBit102帐号1(Account Identification1)
  位图位置Q?02
  格式QLLVAR
  cdQANS..28
  描述Q一个特定的客户帐号。帐?用来描述受借记、{出、支付等交易影响的帐戗?
  选用条gQ{帐时使用?
  
  58QBit103帐号2(Account Identiication2)
  位图位置Q?03
  格式QLLVAR
  cdQANS..28
  描述Q交易的补充信息Q如Q第二货币号、利率代码、v止日期等?
  定义如下?
  0000000000000000000000000000000000000000000000000
  位置长度描述
  00Q?122帐户
  22Q?76发卡机构?
  
  如果此域存在Q将按此机构代码作ؓ路由信息?
  选用条gQ机构间转帐时用?
  
  
  60QBit123新密码数?New PIN Data)
  位图位置Q?23
  格式QLLLVAR
  cdQB...16
  描述Q修改密码交易时存放新密码?
  格式参?2?
  选用条gQ修改密码交易时必须有此域?
  
  61QBit128信息认?MAC)
  位图位置Q?28
  格式Q定?
  cdQB16
  描述Q数据包的最后一个域Q用于验证信息来源的合法性,以及数据包中数据是否未被改?
  MAC的计参ANSIX.99
  为提高效率,在发送者和接收者之_只有以下一些重要的域参加MAC的计。数据包中如果存在以下数据域Q它们将参加MAC的计?
  
  位图域名
  2基本帐号
  3处理代码
  4交易金额
  11pȝ跟踪?
  12本地交易旉
  13本地交易日期
  32收单机构代码
  38授权?
  39q回?
  41收单l端代码
  49交易货币代码
  95替换金额
  
  选用条gQ?5Q?28数据域的数据包需使用此域?

  typedef struct
  {
    long  sync_counter;
    char  keytype;
  } AB8583_Security_Ctrl_Info;
  
  typedef struct
  {
    char  length[4];
    struct
    {
      char  account_type[3];
      char  amount_type[3];
      char  currency_code[4];
      double amount;
    } ledger_balance_amount;
    
    struct
    {
      char  account_type[3];
      char  amount_type[3];
      char  currency_code[4];
      double amount;
    } available_balance_amount;
  } AB8583_Balance_Amount;
  
  typedef struct
  {
      char  encryption_key_used;
      char  mac_key_used;
      char  message_effect;
      char  no_of_unlogged_txns;
  } AB8583_Message_Indicator;
  
  typedef struct
  {
      char  auth_function_code;
      char  auth_mode;
      char  auth_id_response_code[7];
      char  service_business_code[5];
      char  invoice_number[11];
  } AB8583_Auth_Operation_Code;
  
  typedef struct
  {
      char  org_message_type[5];
      char  org_system_trace_number[7];
      char  org_transaction_date_time[11];
      char  org_acqr_inst_id_code[12];
      char  ora_forw_inst_id_code[12];
  } AB8583_Original_Data_Elements;
  
  typedef struct
  {
      double actual_amount_of_transaction;
      double actual_amount_of_settlement;
      double actual_amount_of_transaction_fee;
      double actual_amount_of_settlement_fee;
  } AB8583_Replacement_Amounts;
  
  
  BIT DATA_NAME TYPE
  typedef struct
  {
    char  message_type[5];
    /***
    MESSAGE_TYPE_IDENTIFICATION N4
    0100 授权c请求消?授权,撤消授权,余额查询)
    0110 授权cd{消?授权,撤消授权,余额查询)
    0200 金融c请求消?取款,存款,消费,退?
    0210 金融cd{消?取款,存款,消费,退?
    0420 冲正cL告消?取款,存款,消费,退?授权)
    0430 冲正cd{消?取款,存款,消费,退?授权)
    0524 对帐cL告消?ATMl算对帐,POSl算对帐)
    0534 对帐cd{消?ATMl算对帐,POSl算对帐)
    0800 |络业务理c请求消?重置密钥)
    0810 |络业务理cd{消?重置密钥)
    0820 |络业务理cL告消?状态设|?q播通知,甌重置密钥)
    0830 |络业务理cd{消?状态设|?q播通知,甌重置密钥)
    ****/
    
    char  primary_account_number[20];
    /* 2 PRIMARY_ACCOUNT_NUMBER N...19(LLVAR) */
    char  processing_code[7];
    /* 3 PROCESSING_CODE N6 */
    double amount_of_transactions;
    /* 4 AMOUNT_OF_TRANSACTIONS N12 */
    double amount_of_settlement;
    /* 5 AMOUNT_OF_SETTLEMENT N12 */
    char  transmission_date_and_time[11];
    /* 7 TRANSMISSION_DATE_AND_TIME N10 */
    long  system_trace_audit_number;
    /* 11 SYSTEM_TRACE_AUDIT_NUMBER N6 */
    char  time_of_local_transaction[7];
    /* 12 TIME_OF_LOCAL_TRANSACTION N6 */
    char  date_of_local_transaction[5];
    /* 13 DATE_OF_LOCAL_TRANSACTION N4 */
    char  date_of_settlement[5];
    /* 15 DATE_OF_SETTLEMENT N4 */
    char  date_of_capture[5];
    /* 17 DATE_OF_CAPTURE N4 */
    char  business_type[4];
    /* 18 BUSINESS_TYPE AN3 */
    char  point_of_service_entry_mode[4];
    /* 22 POINT_OF_SERVICE_ENTRY_MODE N3 */
    char  point_of_service_PIN_capture_code[3];
    /* 26 POINT_OF_SERVICE_PIN_CAPTURE_CODE N2 */
    double fee_of_transaction;
    /* 28 FEE_OF_TRANSACTION N8 */
    double fee_of_settlement;
    /* 29 FEE_OF_SETTLEMENT X+N8 */
    char  acquiring_institution_id_code[12];
    /* 32 ACQUIRING_INSTITUTION_IDENTIFICATION_CODE N..11(LLVAR) */
    char  forwarding_institution_id_code[12];
    /* 33 FORWARDING_INSTITUTION_IDENTIFICATION_CODE N..11(LLVAR) */
    char  track_2_data[38];
    /* 35 TRACK_2_DATA Z...37(LLVAR) */
    char  track_3_data[105];
    /* 36 TRACK_3_DATA Z...104(LLLVAR) */
    long  retrieval_reference_number;
    /* 37 RETRIEVAL_REFERENCE_NUMBER AN12 */
    char  auth_id_response[7];
    /* 38 AUTHORIZATION_IDENTIFICATION_RESPONSE AN6 */
    char  response_code[3];
    /* 39 RESPONSE_CODE AN2 */
    char  card_acceptor_terminal_id[9];
    /* 41 CARD_ACCEPTOR_TERMINAL_IDENTIFICATION ANS8
    前两位的定义如下:
    51 ATMl端
    52 银行POS
    53 商户POS */
    char  card_acceptor_id_code[16];
    /* 42 CARD_ACCEPTOR_IDENTIFICATION_CODE ANS15 */
    char  card_acceptor_name_location[41];
    /* 43 CARD_ACCEPTOR_NAME_LOCATION ANS40 */
    char  additional_response_data[26];
    /* 44 ADDITIONAL_RESPONSE_DATA ANS..25(LLVAR) */
    char  broadcasted_message[1000];
    /* 48 BROADCASTED_MESSAGE ANS...999 */
    char  currency_code_of_transaction[4];
    /* 49 CURRENCY_CODE_OF_TRANSACTION AN3 */
    char  currency_code_of_settlement[4];
    /* 50 CURRENCY_CODE_OF_SETTLEMENT AN3 */
    char  PIN[8];
    /* 52 PIN_DATA B64 */
    AB8583_Security_Ctrl_Info  security_ctrl_info;
    /* 53 SECURITY_RELATED_CONTROL_INformATION N16
    SYNC_COUNTER N8
    密钥同步计数?
    RESERVED N7
    KEY_TYPE N1
    1 用于交换中心和成员行机构之间的PIN加密解密
    2 用于交换中心和成员行机构之间的MAC计算
    3 用于成员行和l端之间的PIN加密解密 */
    AB8583_Balance_Amount  balance_amount;
    /* 54 BALANCE_AMOUNT AN43
    LENGTH N3(040)
    LEDGER_BALANCE_AMOUNT
    ACCOUNT_TYPE N2(CC=30,SC=10)
    AMOUNT_TYPE N2(01)
    CURRENCY_CODE AN3(156)
    AMOUNT X+N12
    AVAILABLE_BALANCE_AMOUNT
    ACCOUNT_TYPE N2(CC=30,SC=10)
    AMOUNT_TYPE N2(01)
    CURRENCY_CODE AN3(156)
    AMOUNT X+N12 */
    char  second_account_number[20];
    /* 55 SECOND_ACCOUNT_NUMBER N...19(LLVAR) */
    AB8583_Message_Indicator  message_indicator;
    /* 60 MESSAGE_INDICATOR N...005(LLLVAR)
    ENCRYPTION_KEY_USED N1
    PIN加密/解密所使用的密钥标?定义如下:
    0 不加?
    1 旧密?
    2 新密?
    MAC_KEY_USED N1
    0 不加?
    1 旧密?
    2 新密?
    MESSAGE_EFFECT N1
    0 消息用于生环境
    1 消息用于试环境
    2 ATM取款交易对帐标志
    3 保留
    4 银行POS取款交易对帐标志
    5 银行POS存款交易对帐标志
    6 商用POS消费交易对帐标志
    7 商用POS退ƾ交易对帐标?
    NO_OF_UNLOGGED_TXNS N2 */
    AB8583_Auth_Operation_Code auth_operation_code;
    /* 61 AUTHORIZATION_OPERATION_CODE N...022(LLLVAR)
    AUTHORIZATION_FUNCTION_CODE N1
    0 授权
    1 撤消授权
    2 消费
    3 退?
    4 取款
    5 查询
    AUTHORIZATION_MODE N1
    0 不需授权
    1 需授权
    AUTH_ID_RESPONSE_CODE N6
    SERVICE_BUSINESS_CODE N4
    INVOICE_NUMBER N10 */
    char  authorizing_agent_institution_id_code[12];
    /* 62 AUTHORIZING_AGENT_INSTITUTION_IDENTIFICATION_CODE N...011(LLLVAR) */
    char  destination_institution_id_code[12];
    /* 63 DESTINATION_INSTITUTION_IDENTIFICATION_CODE N...011(LLLVAR)
    64 */
    char  settlement_code;
    /* 66 SETTLEMENT_CODE N1 */
    char  network_management_information_code[4];
    /* 70 NETWORK_MANAGEMENT_INformATION_CODE N3 */
    char  date_of_action[7];
    /* 73 DATE_OF_ACTION N6 */
    long  number_of_credits;
    /* 74 NUMBER_OF_CREDITS N10 */
    long  reversal_number_of_credits;
    /* 75 REVERSAL_NUMBER_OF_CREDITS N10 */
    long  number_of_debits;
    /* 76 NUMBER_OF_DEBITS N10 */
    long  revsersal_number_of_debits;
    /* 77 REVERSAL_NUMBER_OF_DEBITS N10 */
    long  number_of_transfer;
    /* 78 NUMBER_OF_TRANSFER N10 */
    long  reversal_number_of_transfer;
    /* 79 REVERSAL_NUMBER_OF_TRANSFER N10 */
    long  number_of_inquiries;
    /* 80 NUMBER_OF_INQUIRIES N10 */
    double processing_fee_amount_of_credits;
    /* 82 PROCESSING_FEE_AMOUNT_OF_CREDITS N12 */
    double processing_fee_amount_of_debits;
    /* 84 PROCESSING_FEE_AMOUNT_OF_DEBITS N12 */
    double amount_of_credits;
    /* 86 AMOUNT_OF_CREDITS N16 */
    double reversal_amount_of_credits;
    /* 87 REVERSAL_AMOUNT_OF_CREDITS N16 */
    double amount_of_debits;
    /* 88 AMOUNT_OF_DEBITS N16 */
    double reversal_amount_of_debits;
    /* 89 REVERSAL_AMOUNT_OF_DEBITS N16 */
    AB8583_Original_Data_Elements  original_data_elements;
    /* 90 ORIGINAL_DATA_ELEMENTS N42
    冲正交易所用的原始数据记录,内容如下:
    ORIGINAL_DATA_ELEMENTS
    ORG_MESSAGE_TYPE N4
    ORG_SYSTEM_TRACE_NUMBER N6
    ORG_TRANSACTION_DATA_TIME N10
    ORG_ACQR_INST_ID_CODE N11
    ORG_FORW_INST_ID_CODE N11 */
    AB8583_Replacement_Amounts replacement_amounts; 
    /* 95 REPLACEMENT_AMOUNTS AN42 */
    char  message_securty_code[8];
    /* 96 MESSAGE_SECURTY_CODE B64 */
    doublea mount_of_net_settlement;
    /* 97 AMOUNT_OF_NET_SETTLEMENT X+N16 */
    char  settlement_institution_id_code[12];
    /* 99 SETTLEMENT_INSTITUTION_IDENTIFICATION_CODE N...11(LLVAR) */
    char  receiveing_institution_id_code[12];
    /* 100 RECEIVEING_INSTITUTION_IDENTIFICATION_CODE N...11(LLVAR) */
    char  sender_institution_id_code[12];
    /* 120 SENDER_INSTITUTION_IDENTIFICATION_CODE N...11(LLVAR) */
    long  sender_reference_number;
    /* 121 SENDER_REFERENCE_NUMBER AN12 */
    char  MAC[8];
    /* 128 MESSAGE_AUTHENTICATION_CODE B64 */
  }


Prayer 2010-10-13 20:03 发表评论
]]>
AIX里有关TCP/IP的命?/title><link>http://www.shnenglu.com/prayer/archive/2010/02/10/107672.html</link><dc:creator>Prayer</dc:creator><author>Prayer</author><pubDate>Wed, 10 Feb 2010 09:38:00 GMT</pubDate><guid>http://www.shnenglu.com/prayer/archive/2010/02/10/107672.html</guid><wfw:comment>http://www.shnenglu.com/prayer/comments/107672.html</wfw:comment><comments>http://www.shnenglu.com/prayer/archive/2010/02/10/107672.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/prayer/comments/commentRss/107672.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/prayer/services/trackbacks/107672.html</trackback:ping><description><![CDATA[<h3>AIX里有关TCP/IP的命?/h3> |卡Q?br>smit chgenet,chgtok,chgfddi,opschange,mktty:adptr架构快速\?br>smit mkinet,ppp:slip与ppp快速\?br>ifconfig:config界面Q加参数-aQ?br>位置Q?br>/etc/hosts 静态主<br>/etc/resolv.conf 位址解析的名U服务器<br>/etc/named.boot 名称服务器架?br>/etc/named.ca 根名U服务器快取<br>/etc/named.data 位址列表<br>/etc/named.rev 反{指标列表<br>nslookup 查询名称服务器资?br>|络路由Q?br>route 理路由<br>netstat -rn 列出定义的\?br>routed 路由(daekmin rip)<br>gated 路由(daekmin rip、egp、hello)<br>/etc/gateways 已知|关<br>/etc/networks 已知|\<br>服务Q?br>/etc/services<br>/etc/inetd.conf<br>TCP/IP组子系l?<br>/etc/rc.net<br>startsrc -g tcpip 启动全部的tcpip子系l?<br>startsrc -s inetd 启动主要internet<br>除错Q?br>iptrace 启动包q踪<br>ipreport q踪l果格式化输?br>netstat |络l计<br>ping 查是否可以到? <img src ="http://www.shnenglu.com/prayer/aggbug/107672.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/prayer/" target="_blank">Prayer</a> 2010-02-10 17:38 <a href="http://www.shnenglu.com/prayer/archive/2010/02/10/107672.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>?Linux q_?IPv4 环境中构?IPv6 试环境http://www.shnenglu.com/prayer/archive/2010/02/10/107670.htmlPrayerPrayerWed, 10 Feb 2010 09:11:00 GMThttp://www.shnenglu.com/prayer/archive/2010/02/10/107670.htmlhttp://www.shnenglu.com/prayer/comments/107670.htmlhttp://www.shnenglu.com/prayer/archive/2010/02/10/107670.html#Feedback0http://www.shnenglu.com/prayer/comments/commentRss/107670.htmlhttp://www.shnenglu.com/prayer/services/trackbacks/107670.html 

?Ҏ (jiangyy@cn.ibm.com), 软g工程? IBM
D?一?(yinym@cn.ibm.com), 软g工程? IBM

2009 q?1 ?31 ?/p>

随着互联|技术的不断发展Q传l的 IPv4 地址已不能满用L需要。新一代的 IPv6 协议也日益被q泛的接受和使用Q越来越多的软gpȝ都要求支?IPv6 |络协议。然而现有网l环境对 IPv6 的支持仍焉常有限,q给软g的开发和试都带来了一定的困难。本文将介绍如何使用 Apache 在现有的 IPv4 |络中构建模拟的 IPv6 环境?/blockquote>

?Linux q_?IPv4 环境中构?IPv6 试环境







1 IPv6?/span>

IPv6QInternet Protocol Version 6Q作?IPv4 的升U版本,它是作ؓ一pY件升U安装在讑֤?br>操作pȝ中。ؓ什么需要?IPv6Q一个最直接的答案就是目前广泛应用的 IPv4 已经无法提供_?IP 地址来满速增长的|络。IPv4 采用32位地址长度Q只有大U?3亿个地址Q很快就被分配完毕。?IPv6 采用128位的地址长度Q几乎可以不受限制的提供地址。当然扩大地址I间只是 IPv6 的众多优势中的重要一,除此之外QIPv6 q能够提高网l的整体吞吐量、改善服务质量(QoSQ、安全性有更好的保证、支持即插即用和Ud性、更好实现多播功能等{?/p>

?992q?IPNG 工作l成立,l历了十几年的发展,虽然 IPv6 达C IPv4 相同的水q仍有距,但已l有来多的支?IPv6 的设备投入用,来多的Y件系l开始支?IPv6。现?IPv6 已经可以提供 DNSQWebQEmailQFtpQTelnet {基本服务。WindowsQSunQApple {操作系l也都已l或卛_支持 IPv6 协议。IBM 也一直致力于 IPv6 的发展,早在1997q?IBM 发布了支持 IPv6 ?AIX。如?DB2QLotusQRationalQTivoli ?WebSphere 也都在逐步支持 IPv6 的应用?/p>





2 ?IPv4 环境中模?IPv6 |络

正如上节中所qͼ目前许多与网l应用相关的软g已经加入了对 IPv6 的支持,更有大量的Y件正在处于对 IPv6 支持的开发阶Dc但是就开发而言Q目前许多开发环境ƈ没有?IPv6 提供很好的支持,其当所开发的应用需要经q较老的路由甚至公共|络时。如果希望通过升|络讑֤来支持开发环境,是一W不的pQ有时甚x不现实的Q比如短期内升公共|络支持 IPv6Q?/p>

研究如何在现有的 IPv4 |络环境中模拟出 IPv6 环境Q得开发和试工作能够利q行Q显得尤为重要。下面介l一U在 Linux q_上通过 Apache 服务器来模拟 IPv6 ?HTTP/HTTPS |络开发测试环境?/p>

2.1 IPv6 |络要求及现有的|络环境

?昄了典型的 HTTP |络应用Q如果需要对q样的网l应用提?IPv6 的支持,开发和试人员可能会碰到如下三U情形:

客户端和服务器运行于同一个局域网中,如图1-a

客户端和服务器运行于同一?Intranet 中,它们之间的网l通\需要经q\由,如图1-b

客户端和服务器分别处于不同的地域Q它们之间由 Internet 提供q接Q如?-c?/p>
?1. 三种典型?HTTP |络应用
三种典型?HTTP |络应用

在这三种不同的情形下QIPv6 的网l环境要求是不同的。对于情?Q只需客户端和服务器所q行的操作系l支?IPv6 卛_通过 IPv6 协议q行通信Q若需要提?Global 地址的通信Q则可以通过在局域网内的某台机器上运行一个Y?IPv6 路由来支持,因此光?IPv6 的开发和试相对单?对于情Ş2Q由于客L和服务器之间l过q行?IP 层的路由Q因此要求网l通\上经q的所有\由器均支?IPv6?q可能是一个不的挑战Q因为很?Intranet 环境q没有提供支?IPv6 的\由。对于情?Q这p?Internet 提供 IPv6的支持,q期看来,Internet 提供全面?IPv6 支持q不太可能?/p>

因此Q在情Ş2和情?的环境中Q网l硬件支持将成ؓ开发和试支持 IPv6 的网l应用程序的最大障,?.2节中给出如何运用现有的 IPv4 |络来进?IPv6 应用E序的开发和试Q同时又保证其在真实?IPv6 环境中正常运行?/p>

2.2 利用现有 IPv4 |络模拟 IPv6 环境

2.2.1 模拟环境构徏的基本原?/strong>

? - ?昄?IPv6 模拟环境的框图,q里存在两种情ŞQ但具体的配|是cM的?br>对于开发客L IPv6 应用E序Q其框图如图2Q而对于开发服务器?IPv6 应用E序Q其框图如图3。其基本原理是利用代理技术将原来?IPv4 |络L的客L或服务器端映到位于同一局域网内的代理服务器上Q这?#8220;客户?#8221;?#8220;服务器端”可以进行基?IPv6 的网l通信了?在图2中,我们需要代理服务器与客Lq行于同一局域网中,在客L看来Q此代理服务器是一个具备了 IPv6 支持能力?#8220;服务?#8221;Q即使真正的服务器端q没有支?IPv6 Q也可以q行客户端的开发和试。在?中,我们需要一台机器与服务器端q行于同一局域网中,在服务器端看来,此代理服务器是一个具备了 IPv6 支持能力?#8220;客户?#8221;?/p>
?2. 利用代理服务器端映到与客L同一局域网?/strong>
利用代理服务器端映到与客L同一局域网?src="http://doc.chinaunix.net/uploadfile/200912/20091217104131477.jpg"

?3. 利用代理客L映射C服务器端同一局域网?/strong>
利用代理客L映射C服务器端同一局域网?src="http://doc.chinaunix.net/uploadfile/200912/20091217104134687.jpg"

下面仅以客户端的IPv6环境Z来讲q整个模拟环境的构徏q程?/p>

2.2.2 环境的徏?/strong>

操作pȝq_Q?LinuxQ内栔R支持 IPv6Q?.6以上版本最佻I

推荐使用 RedHat Enterprise Linux 5或SuSE Linux Enterprise Server 10

软gQ?radvdQRouter ADVertisement DaemonQ,
q是一个运行于 Linux q_之上的提?IPv6 路由配置信息的YӞ可以替代 IPv6 路由来进行无状态的地址自动配置?/p>

ApacheQ这是目前应用最为广泛的 Web 服务器,要求版本2.0以上

opensslQ运行于 Linux q_上的提供实现 SSL v2/v3 协议的加解密工具?/p>

2.2.3 启动 radvd

IPv6 的地址获取方式?IPv4 有所不同。在 IPv4 中,L IP 地址的自动配|必ȝ DHCP 服务器来支持Q这被称为有状态的自动配置QStatefulAutoconfigurationQ;而在 IPv6 中,除了 DHCP ?v6版本Q还引入了无状态的自动配置Q?StatelessAutoconfiguration Q。这Ҏ技术无需 DHCP 服务器支持,所有支?IPv6 的\由器都监听各L发送的自动配置h包, IPv6 路由器对q类h包的回复里面包含了一?IPv6 地址的前~Q?prefix Q信息,L在收到这L包以后,可以Ҏ自己的一些已有信息(比如 MAC 地址Q,生成自己?IPv6 地址?/p>

本文是在现有?IPv4 |络环境中模?IPv6 环境Q自然不存在物理?IPv6 路由器,但是通过 Linux q_上的 radvd 工具也可以模拟无状态自动配|,它同样可以监听局域网内各 IPv6 L发送的自动配置hq作出响应,q样Q这些主机就可以获得各自?IPv6 地址Qƈ利用q些地址q行怺间的通信。而图X中的客户端正是用这U方式与代理服务器通信的?/p>

q里?SLES10 q_上的 radvd-0.9-13.2 Z来说?radvd 的配|和启动q程?/p>

  1. ?SLES10 的安装光盘中扑ֈ radvd-0.9-13.2.i586.rpm q行安装
           # rpm -ivh radvd-0.9-13.2.i586.rpm
            

  1. 配置q行 radvd 的主机的 IPv6 地址信息

    # ip a a 2002:9ba:b4e:6::1/64 dev ethX

    # ip r a 2002:9ba:b4e:6::/64 dev ethX

q里?ethX 表示的是此主机监听局域网数据包的|卡讑֤

  1. radvd 安装后其配置文g位于 /etc/radvd.conf Q在q个文g中加入配|信?
interface ethX
            {
            AdvSendAdvert on;
            MinRtrAdvInterval 5;
            MaxRtrAdvInterval 10;
            AdvDefaultPreference low;
            prefix 2002:9ba:b4e:6::/64
            {
            AdvOnLink on;
            AdvAutonomous on;
            AdvRouterAddr off;
            };
            };
            

同上Q这里的 ethX 表示的是此主机监听局域网数据包的|卡讑֤。prefix D表明了该局

域网配置 IPv6 地址的前~?/p>

  1. 保pȝ启动了对 IPv6 数据包的转发功能

    # sysctl -w net.ipv6.conf.all.forwarding=1

  1. 启动 radvd

    # /etc/init.d/radvd start

?radvd 启动成功后,通过 ps 命o可以看到pȝ中有一?radvd ?daemon q程处于q行状态。若对局域网中的其他Lq行 ifconfig 命o可以看到q些L已经自动配置?IPv6 地址Q其前缀Q?prefix Q与 radvd 配置文g中的g致?/p>

2.2.4 配置 Apache 服务?/strong>

Apache 服务器是整个模拟 IPv6 环境的核心部分,它将监听来自 IPv6 |络q接的数据包Qƈ其通过 IPv4 |络转发到服务器端。这里用了 Apache 服务器的 mod_proxy 模块Q相信这一模块提供?Forward Proxy 功能已ؓ大家所熟知Qƈ被广泛采用。这一模块同时q提供了 Reverse Proxy 功能Q本文就采用了此技术来实现转发功能。运?Reverse Proxy ?Apache 服务器对于客L而言是一台实际的 Web 服务器,客户端将从该服务器获取和上传所有的数据Q具体的配置Ҏ如下文所q?/p>

大多数的 Linux q_已经安装?Apache 服务器,对于已经安装?Apache 服务器的q_Q必M证其支持 IPv6Qƈ且加载了 mod_proxy和mod_ssl 模块。当然也可以?Apache 的源代码开始编译一个新?Apache 服务器?/p>

首先需要确?Apache 服务器监?IPv6 地址Q一般而言Q在 httpd.conf 中有如下一条:

    Listen 80
            

q表明该 Apache 服务器监听所有的L地址Q自然也包括 IPv6 的地址。若?Apache 服务器配|了监听一些特定的地址Q确保这些地址中包含代理服务器与客L通信使用?IPv6 地址?/p>

对于代理服务器的配置Q这里需要?Apache 服务器的 mod_proxy 模块中的 ProxyPass 指示字,?Apache 配置文g中加入如下的配置语句?/p>
NameVirtualHost *:80
            <VirtualHost *:80>
            ServerAdmin webmaster@dummy-host.example.com
            ServerName ipv6-server-proxy
            ProxyRequests off
            <Proxy *>
            Order deny,allow
            Allow from all
            </Proxy>
            ProxyPass /request http://www.server.com/request
            ErrorLog "logs/proxypass-error_log"
            CustomLog "logs/proxypass-access_log" common
            </VirtualHost>
            

q里?ProxyPass 指示语的含义是所有对?Apache 服务器的 /request 目录的访问都{发到 http://www.server.com/request。若?Apache 服务器的 IPv6 地址?002:9ba:b4e:6::3Q则客户端若讉K

http://[2002:9ba:b4e:6::3]/request
            

实际获得的数据将来自?/p>
http://www.server.com/request
            

q样Q在客户端看来,与其通信的服务器是一个支?IPv6 的服务器端,而实际上?Apache 代理远E的服务器端映射C本地?IPv6 |络。在q种环境下,客户端就可以来开发和试自n?IPv6 的支持了Q而无需考虑服务器端Ҏ协议的支持?/p>

上述语句d的位|由 Apache 的配|文件结构决定,目前许多版本?Apache 采用多个配置文gQ即׃个主的配|文?httpd.conf 来包含其他子w|文Ӟ?httpd-vhosts.confQhttpd-ssl.conf 文g{,而不是所有的配置信息全部写在 httpd.conf 文g中。这里推荐将上述配置语句写入 httpd-vhosts.conf 文g中,然后在主配置文g httpd.conf 文g加入下面q条包含此文件?/p>
Include httpd-vhosts.conf
            

q里默认 httpd-vhosts.conf ?httpd.conf 在同一目录下,多数情况下要加入 httpd-vhosts.conf 的相对\径?/p>

对于需要?HTTPS q接的应用程序,?Apache 服务器的配置有所不同Q参见下一?.2.5中的具体介绍?/p>

在配|好以后Q即可启?重启 Apache 服务器来使得刚才的配|生效?/p>
# /etc/init.d/httpd restart
            

2.2.5 利用 openssl 生成 HTTPS q接所需的认证信?/strong>

׃q行 Reverse Proxy ?Apache 服务器在客户端看来是一台实际的 Web 服务器,因此在进?HTTPS q接Ӟ客户端需要验证其 SSL {֐的有效性。这P我们需要在上述配置好的 Apache 服务器中加入 SSL 认证信息Q才能保证客L?HTTPS 应用E序能够正常q行?/p>

自签名(self-signedQ的 SSL 认证文g的生?/p>

首先是生成根证书文g ca.crt

# openssl genrsa -des3 -out ca.key 4096
            # openssl req -new -x509 -days 365 -key ca.key -out ca.crt
            

W一步是生成一个根证书?key 文gQ系l会要求输入 pass phaseQ?C输入的密码,q一密码会在后面多次用到。而第二步则将使用q个 key 文g来生成根证书Q这一步执行时pȝ会要求输入许多根证书的信息,值得注意的是 Common NameQCNQ,q一步中输入?CN 值应与下一步生成服务器证书时输入的不同?/p>

接着需要生成服务器证书{֐hQCertificate Signing RequestQ文?server.csrQ步骤与生成根证书文件类伹{?/p>
# openssl genrsa -des3 -out server.key 4096
            # openssl req -new -key server.key -out server.csr
            

同样Q在W二步中会要求输入一pd的服务器信息Q这里的 Common NameQCNQ?应与客户端访问该服务器时使用的地址相同Q例如:

客户端?http://proxyhost.com/ 讉K该服务器Ӟq里?CN 应ؓ proxyhost.com

客户端?http://[2002:9ba:b4e:6::3]/ 讉K该服务器Ӟq里?CN 应ؓ [2002:9ba:b4e:6::3]

Z需要相同,是因为客L?HTTPS q接E序会验证该服务器提供的证书有效性,若证书中?CN 与实际客L讉K的主机名不同Q客L会抛?INVALID_CN 错误?/p>

最后,利用前面生成的根证书文g ca.crt 来签|ԌSignQ服务器证书{֐h server.csr?/p>
# openssl x509 -req -days 365 -in server.csr -CA ca.crt \
            -CAkey ca.key -set_serial 01 -out server.crt
            

上q生成的四个证书相关文gQca.crtQca.keyQserver.crtQserver.keyQ拷?Apache 的配|文件夹中,接下来将会把q些文g的\径和一些配|信息加入到 Apache 配置文g中?/p>
Listen 443
            AddType application/x-x509-ca-cert .crt
            AddType application/x-pkcs7-crl    .crl
            SSLPassPhraseDialog  builtin
            SSLSessionCache "shmcb:/usr/local/apache2/logs/ssl_scache(512000)"
            SSLSessionCacheTimeout  300
            SSLMutex  "file:logs/ssl_mutex"
            NameVirtualHost *:443
            <VirtualHost *:443>
            DocumentRoot "apache2/htdocs"
            ServerName ipv6-server-proxy
            ServerAdmin you@example.com
            ErrorLog "ssl-error_log"
            TransferLog "ssl-access_log"
            SSLEngine on
            SSLProtocol -all +TLSv1 +SSLv3
            SSLCipherSuite HIGH:MEDIUM:!aNULL:+SHA1:+MD5:+HIGH:+MEDIUM
            SSLCertificateFile "server.crt"
            SSLCertificateKeyFile "server.key"
            <Directory "/usr/local/apache2/cgi-bin">
            SSLOptions +StdEnvVars
            </Directory>
            BrowserMatch ".*MSIE.*" \
            nokeepalive ssl-unclean-shutdown \
            downgrade-1.0 force-response-1.0
            CustomLog "logs/ssl_request_log" \
            "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
            SSLProxyEngine on
            ProxyRequests off
            <Proxy *>
            Order deny,allow
            Allow from all
            </Proxy>
            ProxyPass /request http://www.server.com/request
            </VirtualHost>
            

q里再次使用?ProxyPass 来徏立代理服务?/p>

正如上一?.2.4中所qͼq里这些配|信息写?httpd-ssl.conf 中,然后?httpd.conf 中加入如下一行将其包含?/p>
Include httpd-ssl.conf
            

配置完成后,卛_启动/重启 Apache 服务器来使得刚才的配|生效?/p>
# /etc/init.d/httpd restart
            

客户?HTTPS q接的考虑

׃q里采用的是自签名(Self-signedQ的方式来生成服务器的认证文Ӟ客户端?HTTPS q接到该代理服务器时Q会出现认证错误的提C。这需要将q里生成的证书加入到客户端的可信站点列表中。具体的d方式因采用的pȝ不同而各异。就 Windows q_?IE 而言Q可以将上述生成?ca.crt ?server.crt 文g加入?IE 的可信站点中Q这会媄响到所有利?IE 提供?wininet 库进?HTTP 应用开发的E序?/p>

2.2.6 DNS 考虑

在网l应用中Q客L一般用域名来讉K服务器端。在试 IPv6 的环境中Q必M?IPv6 的地址来访问,q就需要一个支?IPv6 ?DNS 域名服务器,对于一定的域名q回?IPv6 的地址。目前可以用在 Linux q_?BIND 9 来搭L DNS 服务器。但是其配置相对比较复杂Q还可以使用一U相对简便的Ҏ。即利用 Linux ?Windows q_均支持的 hosts 文g来配对域名与其相应的 IPv6 地址。这需要在客户端的相应 hosts 文g中加入一?IPv6 地址的配|信息?/p>

?Linux q_上,hosts 文g一般位?/etc/hostsQ在此文件中加入如下一行:

           2002:9ba:b4e:6::3    www.someipv6site.com
            

q样指定了 www.someipv6site.com ?IPv6 地址?2002:9ba:b4e:6::3。而在 Windows q_?hosts 文g位于 %WINDIR%\System32\drivers\etc\hostsQ其格式?Linux q_上相同?/p>

2.3 IPv6 ?IPv4 混合环境兼容性测?/span>

?IPv4 ?IPv6 的过渡是一个O长而复杂的q程Q不可能在短期内实现完全转换Q所以在产品的开发及试q程中除了考虑 IPv6 |络内的通讯q需要充分考虑现实|络环境中很可能出现?IPv6 |络?IPv4 |络的؜合环境,q就需要测试应用程序在此环境下的兼Ҏ?本节介l一些需要模拟的情况?/p>

模拟以下3U网l情况首先都需要在现有?IPv4 局域网环境中选择一台机器作\由服务器Qƈ按照2.2.3节的描述q行相关配置。这样与该\p接于同一?Switch 上的计算机都会被自动分配一?IPv6 的地址。如果仍然没有获?IPv6 的地址Q请关闭计算机和路由服务器上的防火墙。然后按?2.2.4 节中的描q选择一台计机讄?ProxyPass?/p>

2.3.1客户端和服务器端均运行于 IPv6 的网l环?/strong>

q种情况的验证相Ҏ较简单,只需要在客户端将服务器的地址设ؓ前面配置?ProxyPass ?IPv6 的地址便能实现客户端和服务器端 IPv6 ?IPv6 的交互。这是2.2节介l的情况?/p>

?4. 客户端和服务器端均运行于 IPv6 的网l环?/strong>


?4. 客户端和服务器端均运行于 IPv6 的网l环?/strong>
客户端和服务器端均运行于 IPv6 的网l环? src=

2.3.2 客户端运行于 IPv6 |络Q服务端q行?IPv4 |络

对于客户端和服务器端分别处于 IPv6 ?IPv4 环境的情况,需要在局域网环境中增加代?(proxy) 作ؓ两者之间的桥梁Q该代理与上q\由服务器位于同一个网l之中,因而也拥有 IPv6 的地址?IPv4 的地址。客L所讄的目的服务器端地址?IPv4 的地址Q设|的代理地址代理?IPv6 的地址Q这样客户通过 IPv6 协议与代理直接进行通讯Q而代理接受到客户端所讄?IPv4 格式的服务器地址后则通过 IPv4 协议与服务端交互Q这样便模拟实现了客L位于 IPv6 |络而服务器端位?IPv4 |络的情c?/p>

?客户端运行于 IPv6 |络Q服务端q行?IPv4 |络


?5. 客户端运行于 IPv6 |络Q服务端q行?IPv4 |络
客户端运行于 IPv6 |络Q服务端q行?IPv4 |络

2.3.3 客户端运行于 IPv4 |络Q服务端q行?IPv6 |络

模拟位于 IPv4 |络中的客户端与位于 IPv6 |络中的服务器端q行交互需要?Proxy ?ProxyPass 来进行环境搭建。客L?ProxyPass 所在的 IPv6 的地址讄为服务器端的地址Q将 Proxy 所在的 IPv4 的地址讄Z理的地址Q这样客L与代理之间通过 IPv4 协议q行通讯。代理在获取到客L所配置?IPv6 协议?ProxyPass 地址后将通过 IPv6 协议?ProxyPass q行交互。ProxyPass 收到客户端发送的h后将通过 IPv4 的协议发送给真正的位?IPv4 |络中的服务器进行处理。这样在客户端就模拟实现?IPv4 |络?IPv6 |络的通讯?/p>

?客户端运行于 IPv4 |络Q服务端q行?IPv6 |络

Server


?6. 利用代理客L映射C服务器端同一局域网?/strong>
利用代理客L映射C服务器端同一局域网?src="http://doc.chinaunix.net/uploadfile/200912/20091217104138891.jpg"






3 ȝ

在本文中Q我们通过使用现有?IPv4 |络配合 Linux q_上的 Apache 服务器,辑ֈ了模?IPv6 ?HTTP/HTTPS |络环境的目的,从而可以在有限的硬件资源之下开发和试|络应用软g?IPv6 的支持。这Ҏ术还可以应用到其他的|络协议之上Q只需使用具备cM?Apache 服务器{发技术的代理服务器。因此这Ҏ术具有一定的通用?/p>

Prayer 2010-02-10 17:11 发表评论
]]>AIX升IPv4为IPv6的配|方?/title><link>http://www.shnenglu.com/prayer/archive/2010/02/10/107669.html</link><dc:creator>Prayer</dc:creator><author>Prayer</author><pubDate>Wed, 10 Feb 2010 09:09:00 GMT</pubDate><guid>http://www.shnenglu.com/prayer/archive/2010/02/10/107669.html</guid><wfw:comment>http://www.shnenglu.com/prayer/comments/107669.html</wfw:comment><comments>http://www.shnenglu.com/prayer/archive/2010/02/10/107669.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/prayer/comments/commentRss/107669.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/prayer/services/trackbacks/107669.html</trackback:ping><description><![CDATA[<p>环境: <br>产品: pSeries <br>q_: AIX <br>软g版本: AIX 5L</p> <p>问题描述:本文举例介绍如何手工从IPv4升到IPv6。所用的|络包括两个子网Q每个子|中有两个节点:路由节点和另一C机。我们将该网l中每个节点升到IPv6?/p> <p><br>W一步:配置L为IPv6 </p> <p>在两个子|上的主Z分别执行如下操作Q?</p> <p>1. 使用下列命o查IPv4已经配置Q?</p> <p>netstat -ni <br>命o输出样式如下所C: <br>Name Mtu Network Address Ipkts Ierrs Opkts Oerrs Coll<br>en0 1500 link#2 0.6.29.4.55.ec 279393 0 2510 0 0<br>en0 1500 9.3.230.64 9.3.230.117 279393 0 2510 0 0<br>lo0 16896 link#1 913 0 919 0 0<br>lo0 16896 127 127.0.0.1 913 0 919 0 0<br>lo0 16896 ::1 913 0 919 0 0 </p> <p>2. 使用root权限通过下列命o讄IPv6: <br>autoconf6 <br>3. q行下列命oQ?<br>netstat -ni <br>命o输出样式如下所C:<br>Name Mtu Network Address Ipkts Ierrs Opkts Oerrs Coll<br>en0 1500 link#2 0.6.29.4.55.ec 279679 0 2658 0 0<br>en0 1500 9.3.230.64 9.3.230.117 279679 0 2658 0 0<br>en0 1500 fe80::206:29ff:fe04:55ec 279679 0 2658 0 0<br>sit0 1480 link#3 9.3.230.117 0 0 0 0 0<br>sit0 1480 ::9.3.230.117 0 0 0 0 0<br>lo0 16896 link#1 2343 0 2350 0 0<br>lo0 16896 127 127.0.0.1 2343 0 2350 0 0<br>lo0 16896 ::1 2343 0 2350 0 0 <br>4. 使用下列命o启动匿名q程 ndpd-hostQ?br>startsrc -s ndpd-host <br>此时L卛_使用IPv6。重复上q命令配|每个子|中的主机?</p> <p>W二步:配置路由节点为IPv6 </p> <p>1. 使用下列命o查IPv4已经配置Q?<br>netstat -ni <br>2. 使用root权限通过下列命o讄IPv6: <br>autoconf6 <br>3. 在每个\p点上配置相应子网的IP地址Q命令如下: <br># ifconfig en0 inet6 fec0:0:0:aaaa::/64 eui64 alias<br># ifconfig en1 inet6 fec0:0:0:bbbb::/64 eui64 alias <br>4. 使用下列命oȀzIPv6的{发功能: <br>no -o ip6forwarding=1 <br>5. 启动ndpd-router匿名q程Q?<br>startsrc -s ndpd-router </p> <p>W三步: 讄pȝ引导时自动配|IPv6<br>新配|的IPv6地址在系l重启时会被删除。若想之生效,需要执行以下步骤:<br>1. ~辑文g/etc/rc.tcpipQ将下列几行的注释打开Q?<br># Start up autoconf6 process<br>start /usr/sbin/autoconf6 "" <br># Start up ndpd-host daemon<br>start /usr/sbin/ndpd-host "$src_running" <br>在下ơ系l重启时QIPv6的配|信息将自动讄?<br>W四步:在\p点设|系l引导时自动配置IPv6 </p> <p>新配|的IPv6地址在系l重启时会被删除。若想之生效,需要执行以下步骤: </p> <p>1. ~辑文g/etc/rc.tcpipQ将下列几行的注释打开 </p> <p># Start up autoconf6 process<br>start /usr/sbin/autoconf6 "" <br>2. 在其下面加入以下命oQ?<br># Configure site-local addresses for router<br>ifconfig en0 inet6 fec0:0:0:aaaa::/ eui64 alias<br>ifconfig en1 inet6 fec0:0:0:bbbb::/ eui64 alias <br>3. 再将下列行的注释打开Q?br># Start up ndpd-router daemon<br>start /usr/sbin/ndpd-router "$src_running" <br>在下ơ系l重启时QIPv6自动生?/p> <img src ="http://www.shnenglu.com/prayer/aggbug/107669.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/prayer/" target="_blank">Prayer</a> 2010-02-10 17:09 <a href="http://www.shnenglu.com/prayer/archive/2010/02/10/107669.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>端口被占用报的错?Address already in usehttp://www.shnenglu.com/prayer/archive/2010/02/10/107668.htmlPrayerPrayerWed, 10 Feb 2010 09:05:00 GMThttp://www.shnenglu.com/prayer/archive/2010/02/10/107668.htmlhttp://www.shnenglu.com/prayer/comments/107668.htmlhttp://www.shnenglu.com/prayer/archive/2010/02/10/107668.html#Feedback1http://www.shnenglu.com/prayer/comments/commentRss/107668.htmlhttp://www.shnenglu.com/prayer/services/trackbacks/107668.html

Prayer 2010-02-10 17:05 发表评论
]]>
端口被占用报的错?Address already in usehttp://www.shnenglu.com/prayer/archive/2010/02/10/107667.htmlPrayerPrayerWed, 10 Feb 2010 09:05:00 GMThttp://www.shnenglu.com/prayer/archive/2010/02/10/107667.htmlhttp://www.shnenglu.com/prayer/comments/107667.htmlhttp://www.shnenglu.com/prayer/archive/2010/02/10/107667.html#Feedback0http://www.shnenglu.com/prayer/comments/commentRss/107667.htmlhttp://www.shnenglu.com/prayer/services/trackbacks/107667.html

Prayer 2010-02-10 17:05 发表评论
]]>
Address family not supported by protocol family.http://www.shnenglu.com/prayer/archive/2010/02/10/107664.htmlPrayerPrayerWed, 10 Feb 2010 08:22:00 GMThttp://www.shnenglu.com/prayer/archive/2010/02/10/107664.htmlhttp://www.shnenglu.com/prayer/comments/107664.htmlhttp://www.shnenglu.com/prayer/archive/2010/02/10/107664.html#Feedback0http://www.shnenglu.com/prayer/comments/commentRss/107664.htmlhttp://www.shnenglu.com/prayer/services/trackbacks/107664.html  sendto   error   in   udptalk.c!  
  Address   family   not   supported   by   protocol   family.  
  我用的协议socket(AF_INET,SOCK_DGRAM,0)  
  h错误原因?nbsp; 

I   think   the   problem   is   the   third   parameter.   It   must   be   IPPROTO_UDP   which   is   defined   as   17   on   solaris.   0   is   defined   as   IPPROTO_IP   (dummy   for   IP).


Hello,

I use IPV4.

I have found a workaround:

Edit C:\Windows\System32\drivers\etc\hosts and add the line "127.0.0.1 localhost" .

Regards,

Stefan



>-----BEGIN PGP SIGNED MESSAGE-----
>Hash: SHA1

>
>Hi there,
>
>i see the following messages in a servers log (2.1.5 on debian
>that is):
>postfix/smtp[31937]: socket to some.remote.host[]: Address family not
>supported by protocol (port 25)
>
>after that, a TLS session to some.remote.host is established and
>the mail gets delivered. The remote host has one ipv6 and one v4
>record so i guess the error comes from the v6 record since v6 isn't
>available on the server. Its the first server where i've seen such
>a message and it doesn't seem to "break" something, but it's annoying.
>Any idea what causes this and how to disable the message?
>
>
lookup for some.remote.host returns an AAAA record that is tried and
yields the error above. disable IPv6 in your dns server.
if using a remote dns server, install one on the postfix box.



最l的解决Ҏ
增加
sin.sin_family=AF_INET;


Prayer 2010-02-10 16:22 发表评论
]]>
Mangospd教程Q一Q:官方Mangos下蝲http://www.shnenglu.com/prayer/archive/2010/01/11/105398.htmlPrayerPrayerMon, 11 Jan 2010 05:54:00 GMThttp://www.shnenglu.com/prayer/archive/2010/01/11/105398.htmlhttp://www.shnenglu.com/prayer/comments/105398.htmlhttp://www.shnenglu.com/prayer/archive/2010/01/11/105398.html#Feedback0http://www.shnenglu.com/prayer/comments/commentRss/105398.htmlhttp://www.shnenglu.com/prayer/services/trackbacks/105398.html1、数据库下蝲地址Q?br>http://unifieddb.svn.sourceforge.net/svnroot/unifieddb/Full_DB/ForCleanInstallOnly/
(1) 建立数据库mangos、characters、realmd(create_mysql.sql)
(2) 建立数据库scriptdev2(create_database_sd2.sql)
(3) 生成数据表realmd.sql、characters.sql
(4) 生成I数据表scriptdev2_structure.sql
(5) 生成数据表mangos
http://unifieddb.svn.sourceforge.net/svnroot/unifieddb/Full_DB/UDB_0.9.1_Core_5057_SD2_233.rar
2、说明:依次q行上面SQL文gQ最l生成mangos、characters、realmd、scriptdev2四个带有原始数据的数据库Qmangos游戏世界数据库的版本?.9.1Qscriptdev2脚本数据库的版本?33Qrealmd是服务器和帐h据库Qcharacters是游戏角色数据库Q?057是对应的服务端版本。日常只需备䆾和玩家相关的数据库:realmd和charaters数据库。经常的数据库更新补丁一般带在下载的服务端里Q一般文件名带有要导入的数据库名Q如果不定L文本打开查找要导入数据表所在的数据库。ؓ了避免不必要的SQL语法错误QSQL文gLutf-8格式保存?br>
二、服务端
1、Mangos官方|站Q?a target=_blank>http://www.mangosproject.org
2、下载服务端Q注意对应数据库及WOW客户端版?br>(1) Ҏ一Q下载国外友人已l编译过的端Q参考地址Q?br>·http://www.mangosproject.org/forum/index.php?showtopic=4088&pid=147913&st=20&#entry147913(需要登?
·http://www.mangos-fae.info/download.php?list.7
·http://www.mangos-files.de/index.php?show=revs
(2) Ҏ二:~译自己的MangosQ详l方法有I再写,参考地址Q?br>·mangosȝ序源代码SVN更新地址Q?a >https://mangos.svn.sourceforge.net/svnroot/mangos
·mangosScript脚本开发的SVN更新地址Q?a >https://opensvn.csie.org/ScriptDev

三、Mangos本地?br> 
上面已经讲了怎样下蝲Mangos官方服务端和数据库,但模拟后用本国WOW客户端进入游戏除了客L自带的是中文昄外,和服务端相关的全变成了默认语U英文,可以当做提高p水^的方法,但面对大量的陌生怪物名还是有点别扭,那么我们来本土化,当然涉及的程序内的文字只能改写代码重新编译了Q本文暂不涉及只做简单本土化?br> 
1、下载从本国WOW客户端解出来的DBC或者用专门工兯p出DBC文gQ复制到服务端目录即可,mangosd.conf中DBC.Locale = 255Q启动服务端的时候控制台国DBC会提CDBC.Locale=0Q中国DBC会提CDBC.Locale=4Q?br>2、从|上下蝲Mangos数据库汉化补丁汉化以下数据表相关数据Qcreature_template、gameobject_template、item_template、npc_text、page_text、quest_templateQ如果补丁完整的话恭喜你Q你在游戏中看到的大部分是中文;
3、如果上面的补丁不完整还有一个补救方法,从其他国人的端借用几个数据表:locales_creature、locales_gameobject、locales_item、locales_npc_text、locales_page_text、locales_quest。默认的时候Locale=0Q上面的表ؓI,表示服务端用默认语U英语。那么怎样本土化:
·复制已经汉化的这几个数据表覆盖原始的数据表,或导入相应的数据库SQL补丁Q?br>·查看表中汉化的位|,如果在Text_loc2Q打开realmd的account数据表,扑ֈ你的帐号把locale字段?改ؓ2Q?br>3、是不是上面的步骤操作完了就OK了?可能会有奇怪的问题。启动游戏前Q找C的客LCache目录Q把WDB目录删除掉。否则在你修Ҏ据库相应位置后显C的q是游戏~存中的内容?br>
如果一切顺利,恭喜你,你已l得到完整的原版服务端和数据库ƈ汉化成功。教E预告:Mangos相关软g的用、TortoiseSVN的用、Mangos目的编?..写此pd文章主要是有感于Mangos开发者的׃M_Q只为研I技术兴学习优U的开源项目,大家交流讨论请不要谩骂,文章所涉及的资源下载后h意查毒,|上L居心不良的h下木马。{载请注名作者timeQ谢谢!



Prayer 2010-01-11 13:54 发表评论
]]>
如何修改telnet的端口号http://www.shnenglu.com/prayer/archive/2009/06/25/88485.htmlPrayerPrayerThu, 25 Jun 2009 02:05:00 GMThttp://www.shnenglu.com/prayer/archive/2009/06/25/88485.htmlhttp://www.shnenglu.com/prayer/comments/88485.htmlhttp://www.shnenglu.com/prayer/archive/2009/06/25/88485.html#Feedback0http://www.shnenglu.com/prayer/comments/commentRss/88485.htmlhttp://www.shnenglu.com/prayer/services/trackbacks/88485.html  2,/etc/init.d/xinetd   restart   重启|络服务  
  3,telnet   192.168.1.1   26   卛_q行q接

Prayer 2009-06-25 10:05 发表评论
]]>
如何修改Windows、AIX{操作系l的TCP/IP参数http://www.shnenglu.com/prayer/archive/2009/06/15/87737.htmlPrayerPrayerMon, 15 Jun 2009 11:16:00 GMThttp://www.shnenglu.com/prayer/archive/2009/06/15/87737.htmlhttp://www.shnenglu.com/prayer/comments/87737.htmlhttp://www.shnenglu.com/prayer/archive/2009/06/15/87737.html#Feedback0http://www.shnenglu.com/prayer/comments/commentRss/87737.htmlhttp://www.shnenglu.com/prayer/services/trackbacks/87737.html
1Q在Windows NTq_上, 我们利用regedit来修改系l注册表Q修改HKEY_LOCAL_MACHINE\CurrentControlSet\Services\Tcpip\Parameters下的以下三个参数Q?
KeepAliveInterval,讄其gؓ1000
KeepAliveTime,讄其gؓ300000(单位为毫U,300000代表5分钟)
TcpMaxDataRetransmissions,讄其gؓ5

2Q在RISC6000/AIXq_上, 用no命o修改如下参数:
tcp_keepidle保持TCP/IPq接的时_单位?.5U,~省gؓ14,400Q即两个时Q我们可它设ؓ5分钟Q?
tcp_keepinittcpq接初始timeout|单位?.5U,~省gؓ150Q我们可它设ؓ50Q?
tcp_keepintvlq接间隔Q单位ؓ0.5U,~省gؓ150Q我们可它设ؓ50Q?
我们也可以修?etc/rc.net文gQ?
/usr/sbin/no -o tcp_keepidle=240
/usr/sbin/no -o tcp_keepinit=50
/usr/sbin/no -o tcp_keepintvl=50
注意Q直接用命令行修改Q在机器重启后,会失效;修改rc.net文gQ可以做到永久生效?

3Q在HPq_上,
对于HP-UNIX V10.20及其在此之前的版本,?usr/contrib/bin nettune命o来修Ҏ兛_敎ͼ
对于HP-UNIX V10.30及其以上版本Q用/usr/bin/ndd命o来修Ҏ兛_数?

4Q在SUN Solarisq_上,
用ndd -set /dev/tcptcp_keepalive_interval NNN命o来修Ҏ兛_?tcp_keepalive_interval的单位ؓ毫秒Q缺省gؓ7200000毫秒Q即2个小时?

5Q在SCO OpenServerq_上,
tcp_keepalive ?tcp_keepidle 相同Q其原先默认gؓ 7200 U,可设?600U。tcp_keepintvl 其原先默认gؓ 75 U,可设?5U。均?U?为单位?
q行命o ifconfig 命o修改Q?
/etc/inconfig tcp_keepidle
/etc/inconfig tcp_keepintvl

  通常Q操作系l的TCP/IP参数的缺省设|是2个小Ӟ常见的操作系l^台如QWindows 2000/NT以及AIXQHP-UXQSun SolarisQLinux{,~省讑֮均ؓ2个小ӞQ即发送KeepAlive探测包的旉?时Q所以需?个小时的旉它才会获知网l连接已l断开Q因此当有需要的时候我们可以通过配置TCP/IP KeepAlive参数来提高TCP/IP的响应速度?br>

Prayer 2009-06-15 19:16 发表评论
]]>
在C#中利用Keep-Alive处理Socket|络异常断开的方?http://www.shnenglu.com/prayer/archive/2009/06/15/87730.htmlPrayerPrayerMon, 15 Jun 2009 10:48:00 GMThttp://www.shnenglu.com/prayer/archive/2009/06/15/87730.htmlhttp://www.shnenglu.com/prayer/comments/87730.htmlhttp://www.shnenglu.com/prayer/archive/2009/06/15/87730.html#Feedback0http://www.shnenglu.com/prayer/comments/commentRss/87730.htmlhttp://www.shnenglu.com/prayer/services/trackbacks/87730.html那网l异常断开原因主要有那些呢Q归Uv来主要有以下两种Q?/p>

1、客LE序异常?/p>

  对于q种情况Q我们很好处理,因ؓ客户端程序异帔RZ在服务端引发ConnectionReset的Socket异常Q就是WinSock2中的10054异常Q。只要在服务端处理这个异常就可以了?/p>

2、网l链路异常?/p>

  如:|线拔出、交换机掉电、客L机器掉电。当出现q些情况的时候服务端不会出现M异常。这L话上面的代码׃能处理这U情况了。对于这U情况在MSDN里面是这样处理的Q我在这里脓出MSDN的原文:

如果您需要确定连接的当前状态,误行非L、零字节?Send 调用。如果该调用成功q回或引?WAEWOULDBLOCK 错误代码 (10035)Q则该套接字仍然处于q接状态;否则Q该套接字不再处于连接状态?/font>

  但是我在实际应用中发玎ͼMSDN说的q种处理Ҏ在很多时候根本无效,无法出|络已经异常断开了。那我们该怎么办呢Q?/p>

  我们知道QTCP有一个连接检机Ӟ是如果在指定的旉内(一般ؓ2个小Ӟ没有数据传送,会给对端发送一个Keep-Alive数据报,使用的序列号是曾l发出的最后一个报文的最后一个字节的序列P对端如果收到q个数据Q回送一个TCP的ACKQ确认这个字节已l收刎ͼq样q道此q接没有被断开。如果一D|间没有收到对方的响应Q会q行重试Q重试几ơ后Q向对端发一个resetQ然后将q接断掉?/p>

  在Windows中,W一ơ探是在最后一ơ数据发送的两个时Q然后每?U探一ơ,一共探?ơ,如果5ơ都没有收到回应的话Q就会断开q个q接。但两个时对于我们的项目来说显然太长了。我们必ȝ短这个时间。那么我们该如何做呢Q我要利用SocketcȝIOControl()函数。我们来看看q个函数能干些什么:

使用 IOControlCode 枚D指定控制代码Qؓ Socket 讄低操作模式?

命名I间:System.Net.Sockets
E序?SystemQ在 system.dll 中)

语法

C#
public int IOControl (
IOControlCode ioControlCode,
byte[] optionInValue,
byte[] optionOutValue
)


参数
ioControlCode
一?IOControlCode |它指定要执行的操作的控制代码?

optionInValue
Byte cd的数l,包含操作要求的输入数据?

optionOutValue
Byte cd的数l,包含由操作返回的输出数据?

q回?
optionOutValue 参数中的字节数?

如:

socket.IOControl(IOControlCode.KeepAliveValues, inOptionValues, null);

我们要搞清楚的就是inOptionValues的定义,在C++里它是一个结构体。我们来看看q个l构体:

struct tcp_keepalive 

    u_long  onoff; //是否启用Keep-Alive
    u_long  keepalivetime; //多长旉后开始第一ơ探(单位Q毫U)
    u_long  keepaliveinterval; //探测旉间隔Q单位:毫秒Q?br>}

在C#中,我们直接用一个Byte数组传递给函数Q?/p>

uint dummy = 0;
byte[] inOptionValues = new byte[Marshal.SizeOf(dummy) * 3];
BitConverter.GetBytes((
uint)1).CopyTo(inOptionValues, 0);//是否启用Keep-Alive
BitConverter.GetBytes((
uint)5000).CopyTo(inOptionValues, Marshal.SizeOf(dummy));//多长旉开始第一ơ探?br>BitConverter.GetBytes((uint)5000).CopyTo(inOptionValues, Marshal.SizeOf(dummy) * 2);//探测旉间隔

具体实现代码Q?/p>

        public static void AcceptThread()
        
{
            Thread.CurrentThread.IsBackground 
= true;
            
while (true)
            
{
                
uint dummy = 0;
                
byte[] inOptionValues = new byte[Marshal.SizeOf(dummy) * 3];
                BitConverter.GetBytes((
uint)1).CopyTo(inOptionValues, 0);
                BitConverter.GetBytes((
uint)5000).CopyTo(inOptionValues, Marshal.SizeOf(dummy));
                BitConverter.GetBytes((
uint)5000).CopyTo(inOptionValues, Marshal.SizeOf(dummy) * 2);
                
try
                
{
                    Accept(inOptionValues);
                }

                
catch { }
            }

        }


        
private static void Accept(byte[] inOptionValues)
        
{
            Socket socket 
= Public.s_socketHandler.Accept();
            socket.IOControl(IOControlCode.KeepAliveValues, inOptionValues, 
null);
            UserInfo info 
= new UserInfo();
            info.socket 
= socket;
            
int id = GetUserId();
            info.Index 
= id;
            Public.s_userList.Add(id, info);
            socket.BeginReceive(info.Buffer, 
0, info.Buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveCallBack), info);
        }

好了Q这样就成功了?/p>

Prayer 2009-06-15 18:48 发表评论
]]>
|络q接断开可以分ؓ两种http://www.shnenglu.com/prayer/archive/2009/06/15/87729.htmlPrayerPrayerMon, 15 Jun 2009 10:42:00 GMThttp://www.shnenglu.com/prayer/archive/2009/06/15/87729.htmlhttp://www.shnenglu.com/prayer/comments/87729.htmlhttp://www.shnenglu.com/prayer/archive/2009/06/15/87729.html#Feedback0http://www.shnenglu.com/prayer/comments/commentRss/87729.htmlhttp://www.shnenglu.com/prayer/services/trackbacks/87729.html   
  1.正常断开.  
  q类问题可以处理.  
   
  2.非正常断开.  
  a.   客户端主机突然停c被损坏、网U被剪断Q这是一c;  
  b.   客户端进E被l束dE序中止,   此时物理q接是完好的.  
   
  对于非正常断开,   TCP/IP   协议不能?   q是   TCP/IP   的设计问?   只能通过发送数据包来检?  
  ?  HeartBeat   ?   只要包不能正常发送出?   不管是基于上qCU原?   都可以认为网l已l断开.  
   
  在你的程序中加入两对   Socket   ,其中一对用来发?  HeartBeat   ?  
  出错则认为网l已l断开.  
  因ؓ对于非正常断开,   两对   SOCKET   必然同时断开.

Prayer 2009-06-15 18:42 发表评论
]]>
Socket与拔掉网U?/title><link>http://www.shnenglu.com/prayer/archive/2009/06/15/87728.html</link><dc:creator>Prayer</dc:creator><author>Prayer</author><pubDate>Mon, 15 Jun 2009 10:40:00 GMT</pubDate><guid>http://www.shnenglu.com/prayer/archive/2009/06/15/87728.html</guid><wfw:comment>http://www.shnenglu.com/prayer/comments/87728.html</wfw:comment><comments>http://www.shnenglu.com/prayer/archive/2009/06/15/87728.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/prayer/comments/commentRss/87728.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/prayer/services/trackbacks/87728.html</trackback:ping><description><![CDATA[<font size=2>当客L与服务端通过Tcp Socketq行通信Ӟ如果客户端应用正帔R出或异常退出,服务端都会在对应的连接上获取感知Q如q回0、或抛出异常Q。但是,如果客户端的|线被拔掉,那么Q默认情况下Q服务端需要在2个小时后才会感知客户端掉Uѝ对于很多服务端应用E序来说Q这么长的反应时间是不能忍受的?br>   我们通常在应用层使用“心蟩机制”来解决类似的问题Q这是可行的?br>   然而,在这里,我们可以使用Socket自己的心x制来解决q一问题?System.Net.Sockets.Socket提供了IOControlQ)Ҏl我们来讄Sokect的心x制的相关参数。比如,我们讄KeepAlive的时间ؓ20U,查间隔ؓ2U。可以这样做Q?br></font> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee" twffan="done"><span style="COLOR: #000000" twffan="done">            </span><span style="COLOR: #0000ff" twffan="done">int</span><span style="COLOR: #000000" twffan="done"> keepAlive </span><span style="COLOR: #000000" twffan="done">=</span><span style="COLOR: #000000" twffan="done"> </span><span style="COLOR: #000000" twffan="done">-</span><span style="COLOR: #000000" twffan="done">1744830460</span><span style="COLOR: #000000" twffan="done">; </span><span style="COLOR: #008000" twffan="done">//</span><span style="COLOR: #008000" twffan="done"> SIO_KEEPALIVE_VALS</span><span style="COLOR: #008000" twffan="done"><br></span><span style="COLOR: #000000" twffan="done">            </span><span style="COLOR: #0000ff" twffan="done">byte</span><span style="COLOR: #000000" twffan="done">[] inValue </span><span style="COLOR: #000000" twffan="done">=</span><span style="COLOR: #000000" twffan="done"> </span><span style="COLOR: #0000ff" twffan="done">new</span><span style="COLOR: #000000" twffan="done"> </span><span style="COLOR: #0000ff" twffan="done">byte</span><span style="COLOR: #000000" twffan="done">[] { </span><span style="COLOR: #000000" twffan="done">1</span><span style="COLOR: #000000" twffan="done">, </span><span style="COLOR: #000000" twffan="done">0</span><span style="COLOR: #000000" twffan="done">, </span><span style="COLOR: #000000" twffan="done">0</span><span style="COLOR: #000000" twffan="done">, </span><span style="COLOR: #000000" twffan="done">0</span><span style="COLOR: #000000" twffan="done">, </span><span style="COLOR: #000000" twffan="done">0x20</span><span style="COLOR: #000000" twffan="done">, </span><span style="COLOR: #000000" twffan="done">0x4e</span><span style="COLOR: #000000" twffan="done">, </span><span style="COLOR: #000000" twffan="done">0</span><span style="COLOR: #000000" twffan="done">, </span><span style="COLOR: #000000" twffan="done">0</span><span style="COLOR: #000000" twffan="done">, </span><span style="COLOR: #000000" twffan="done">0xd0</span><span style="COLOR: #000000" twffan="done">, </span><span style="COLOR: #000000" twffan="done">0x07</span><span style="COLOR: #000000" twffan="done">, </span><span style="COLOR: #000000" twffan="done">0</span><span style="COLOR: #000000" twffan="done">, </span><span style="COLOR: #000000" twffan="done">0</span><span style="COLOR: #000000" twffan="done"> }; </span><span style="COLOR: #008000" twffan="done">//</span><span style="COLOR: #008000" twffan="done">True, 20 U? 2 U?/span><span style="COLOR: #008000" twffan="done"><br></span><span style="COLOR: #000000" twffan="done">            sock.IOControl(keepAlive, inValue, </span><span style="COLOR: #0000ff" twffan="done">null</span><span style="COLOR: #000000" twffan="done">);</span></div>    20U(20000毫秒Q的16q制表示?e20Q?U(2000毫秒Q的16q制表示?7d0Q如此,你可以修改inValue参数己希望的倹{?br>   在上q设|下Q如果拨掉客L|线Q服务器Socket.Receive()会在20U后抛出异常?br> <img src ="http://www.shnenglu.com/prayer/aggbug/87728.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/prayer/" target="_blank">Prayer</a> 2009-06-15 18:40 <a href="http://www.shnenglu.com/prayer/archive/2009/06/15/87728.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>几种千兆|卡在HAҎ中的使用限制http://www.shnenglu.com/prayer/archive/2009/05/12/82678.htmlPrayerPrayerTue, 12 May 2009 06:07:00 GMThttp://www.shnenglu.com/prayer/archive/2009/05/12/82678.htmlhttp://www.shnenglu.com/prayer/comments/82678.htmlhttp://www.shnenglu.com/prayer/archive/2009/05/12/82678.html#Feedback0http://www.shnenglu.com/prayer/comments/commentRss/82678.htmlhttp://www.shnenglu.com/prayer/services/trackbacks/82678.html几种千兆|卡在HAҎ中的使用限制 

我们知道Q在HAQ高可用性)Ҏ中,每台参与HA的主机应该配|至?块相同类型的|卡。ؓ了提高系l性能Q现在很多方案中都采用了千兆以太|卡Q比如:

2969----Gigabit Ethernet - SX PCI Adapter
2975----10/100/1000 Base-T Ethernet PCI Adapter
5700----IBM Gigabit Ethernet-SX PCI-X Adapter
5701----IBM 10/100/1000 Base-TX Ethernet PCI-X Adapter

Q?Q在不同机型中的限制

一 般常见的机型都支?969?975Q? 如:7044-170Q?044-270Qp610Qp620Qp640Qp630Qp660Qp670Qp680Qp690Q?025- F50Q?025-F80Q?026-H70Q?026-H80Q?026-M80Q?017-S70Q?017-S7AQ?017-S80。但p650 与p655不支持这两种|卡?br>
5700?701则只能被一些较新的机型支持Q如Q?nbsp;7044-170Q?044-270Qp610Qp620Qp640Qp630Qp650Qp655Qp660Qp670Qp680Qp690?br>
Q?QHACMP与AIX的版本限?br>2969需要AIX4.3.2以上Q及HACMP4.2.2以上的Y件环境;
2975需要AIX4.3.3以上Q及HACMP4.3.1以上的Y件环境;
5700?701需要AIX5.1Q及HACMP4.4.1以上的Y件环境?/font>

Prayer 2009-05-12 14:07 发表评论
]]>
SIGPIPEhttp://www.shnenglu.com/prayer/archive/2009/04/29/81473.htmlPrayerPrayerWed, 29 Apr 2009 09:52:00 GMThttp://www.shnenglu.com/prayer/archive/2009/04/29/81473.htmlhttp://www.shnenglu.com/prayer/comments/81473.htmlhttp://www.shnenglu.com/prayer/archive/2009/04/29/81473.html#Feedback0http://www.shnenglu.com/prayer/comments/commentRss/81473.htmlhttp://www.shnenglu.com/prayer/services/trackbacks/81473.htmlq个信号默认操作是l止q程Q?一般写E序的时候都是屏蔽掉q个信号?


下面是我以前ȝ的一些:
原文Qhttp://blog.chinaunix.net/u/6593/showart_304065.html

RST的含义ؓ“复位”Q它是TCP在某些错误情况下所发出的一UTCP分节。有三个条g可以产生RST:

1), SYN到达某端口但此端口上没有正在监听的服务器?

2), TCP惛_消一个已有连?

3), TCP接收了一个根本不存在的连接上的分节?



1Q?nbsp; Connect 函数q回错误ECONNREFUSED:

如果对客LSYN的响应是RSTQ则表明该服务器L在我们指定的端口上没有进E在{待与之q接Q例如服务器q程也许没有启动Q,q称为硬错(hard errorQ,客户一接收到RSTQ马上就q回错误ECONNREFUSED.



TCP为监听套接口l护两个队列。两个队列之和不过listen函数W二个参数backlog?

当一个客户SYN到达Ӟ若两个队列都是满的,TCP忽略此分节Q且不发送RST.q个因ؓQ这U情冉|暂时的,客户TCP重发SYNQ期望不久就能在队列中找到空闲条目。要是TCP服务器发送了一个RSTQ客户connect函数立卛_送一个错误,强制应用q程处理q种情况Q而不是让TCP正常的重传机制来处理。还有,客户区别不了q两U情况:作ؓSYN的响应,意ؓ“此端口上没有服务?#8221;的RST和意?#8220;有服务器在此端口上但光列满”的RST.



Posix.1g允许以下两种处理ҎQ忽略新的SYNQ或为此SYN响应一个RST.历史上,所有源自Berkeley的实现都是忽略新的SYN?





2Q如果杀掉服务器端处理客L的子q程Q进E退出后Q关闭它打开的所有文件描q符Q此Ӟ当服务器TCP接收到来自此客户端的数据Ӟ׃先前打开的那个套接字接口的进E已l止Q所以以RST响应?

      l常遇到的问题:

              如果不判断read , write函数的返回|׃知道服务器是否响应了RST, 此时客户端如果向接收了RST的套接口q行写操作时Q内核给该进E发一个SIGPIPE信号。此信号的缺省行为就是终止进E,所以,q程必须捕获它以免不情愿地被l止?

              q程不论是捕获了该信号ƈ从其信号处理E序q回Q还是不理会该信P写操作都q回EPIPE错误?



3Q?nbsp; 服务器主机崩溃后重启

如果服务器主Z客户端徏立连接后崩溃Q如果此Ӟ客户端向服务器发送数据,而服务器已经崩溃不能响应客户端ACKQ客户TCP持l重传数据分节,试图从服务器上接收一个ACKQ如果服务器一直崩溃客L会发现服务器已经崩溃或目的地不可达,但可能需要比较长的时_ 如果服务器在客户端发现崩溃前重启Q服务器的TCP丢失了崩溃前的所有连接信息,所以服务器TCPҎ收的客户数据分节以RST响应?


Prayer 2009-04-29 17:52 发表评论
]]>
SIGPIPEhttp://www.shnenglu.com/prayer/archive/2009/04/29/81472.htmlPrayerPrayerWed, 29 Apr 2009 09:52:00 GMThttp://www.shnenglu.com/prayer/archive/2009/04/29/81472.htmlhttp://www.shnenglu.com/prayer/comments/81472.htmlhttp://www.shnenglu.com/prayer/archive/2009/04/29/81472.html#Feedback0http://www.shnenglu.com/prayer/comments/commentRss/81472.htmlhttp://www.shnenglu.com/prayer/services/trackbacks/81472.htmlq个信号默认操作是l止q程Q?一般写E序的时候都是屏蔽掉q个信号?


下面是我以前ȝ的一些:
原文Qhttp://blog.chinaunix.net/u/6593/showart_304065.html

RST的含义ؓ“复位”Q它是TCP在某些错误情况下所发出的一UTCP分节。有三个条g可以产生RST:

1), SYN到达某端口但此端口上没有正在监听的服务器?

2), TCP惛_消一个已有连?

3), TCP接收了一个根本不存在的连接上的分节?



1Q?nbsp; Connect 函数q回错误ECONNREFUSED:

如果对客LSYN的响应是RSTQ则表明该服务器L在我们指定的端口上没有进E在{待与之q接Q例如服务器q程也许没有启动Q,q称为硬错(hard errorQ,客户一接收到RSTQ马上就q回错误ECONNREFUSED.



TCP为监听套接口l护两个队列。两个队列之和不过listen函数W二个参数backlog?

当一个客户SYN到达Ӟ若两个队列都是满的,TCP忽略此分节Q且不发送RST.q个因ؓQ这U情冉|暂时的,客户TCP重发SYNQ期望不久就能在队列中找到空闲条目。要是TCP服务器发送了一个RSTQ客户connect函数立卛_送一个错误,强制应用q程处理q种情况Q而不是让TCP正常的重传机制来处理。还有,客户区别不了q两U情况:作ؓSYN的响应,意ؓ“此端口上没有服务?#8221;的RST和意?#8220;有服务器在此端口上但光列满”的RST.



Posix.1g允许以下两种处理ҎQ忽略新的SYNQ或为此SYN响应一个RST.历史上,所有源自Berkeley的实现都是忽略新的SYN?





2Q如果杀掉服务器端处理客L的子q程Q进E退出后Q关闭它打开的所有文件描q符Q此Ӟ当服务器TCP接收到来自此客户端的数据Ӟ׃先前打开的那个套接字接口的进E已l止Q所以以RST响应?

      l常遇到的问题:

              如果不判断read , write函数的返回|׃知道服务器是否响应了RST, 此时客户端如果向接收了RST的套接口q行写操作时Q内核给该进E发一个SIGPIPE信号。此信号的缺省行为就是终止进E,所以,q程必须捕获它以免不情愿地被l止?

              q程不论是捕获了该信号ƈ从其信号处理E序q回Q还是不理会该信P写操作都q回EPIPE错误?



3Q?nbsp; 服务器主机崩溃后重启

如果服务器主Z客户端徏立连接后崩溃Q如果此Ӟ客户端向服务器发送数据,而服务器已经崩溃不能响应客户端ACKQ客户TCP持l重传数据分节,试图从服务器上接收一个ACKQ如果服务器一直崩溃客L会发现服务器已经崩溃或目的地不可达,但可能需要比较长的时_ 如果服务器在客户端发现崩溃前重启Q服务器的TCP丢失了崩溃前的所有连接信息,所以服务器TCPҎ收的客户数据分节以RST响应?


Prayer 2009-04-29 17:52 发表评论
]]>
关于SIGPIPED的程序退?http://www.shnenglu.com/prayer/archive/2009/04/29/81471.htmlPrayerPrayerWed, 29 Apr 2009 09:50:00 GMThttp://www.shnenglu.com/prayer/archive/2009/04/29/81471.htmlhttp://www.shnenglu.com/prayer/comments/81471.htmlhttp://www.shnenglu.com/prayer/archive/2009/04/29/81471.html#Feedback0http://www.shnenglu.com/prayer/comments/commentRss/81471.htmlhttp://www.shnenglu.com/prayer/services/trackbacks/81471.html攉一些网上的资料Q以便参考:

http://blog.chinaunix.net/u2/69143/showart_1087349.html

     当服务器close一个连接时Q若client端接着发数据。根据TCP协议的规定,会收C个RST响应Qclient再往q个服务器发送数据时Q系l会发出一个SIGPIPE信号l进E,告诉q程q个q接已经断开了,不要再写了?br>    Ҏ信号的默认处理规则SIGPIPE信号的默认执行动作是terminate(l止、退?,所以client会退出。若不想客户端退出可以把SIGPIPE设ؓSIG_IGN

    ?    signal(SIGPIPE,SIG_IGN);
    q时SIGPIPE交给了系l处理?br>
  服务器采用了fork的话Q要攉垃圾q程Q防止僵进E的产生Q可以这样处理:
  signal(SIGCHLD,SIG_IGN); 交给pȝinitd收?br>

   q里子进E就不会产生僵尸q程了?/p>

 在linux下写socket的程序的时候,如果试sendC个disconnected socket上,׃让底层抛Z个SIGPIPE信号?br>q个信号的缺省处理方法是退E,大多数时候这都不是我们期望的。因此我们需要重载这个信L处理Ҏ。调用以下代码,卛_安全的屏蔽SIGPIPEQ?br>    struct sigaction sa;
    sa.sa_handler = SIG_IGN;
    sigaction( SIGPIPE, &sa, 0 );

 g正解.
signal讄的信号句柄只能v一ơ作?信号被捕获一ơ后,信号句柄׃被还原成默认g.

sigaction讄的信号句?可以一直有?值到你再ơ改变它的设|?



Prayer 2009-04-29 17:50 发表评论
]]>
SIGPIPED的程序退?/title><link>http://www.shnenglu.com/prayer/archive/2009/04/29/81457.html</link><dc:creator>Prayer</dc:creator><author>Prayer</author><pubDate>Wed, 29 Apr 2009 08:59:00 GMT</pubDate><guid>http://www.shnenglu.com/prayer/archive/2009/04/29/81457.html</guid><wfw:comment>http://www.shnenglu.com/prayer/comments/81457.html</wfw:comment><comments>http://www.shnenglu.com/prayer/archive/2009/04/29/81457.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/prayer/comments/commentRss/81457.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/prayer/services/trackbacks/81457.html</trackback:ping><description><![CDATA[<p><strong>当服务器close一个连接时Q若client端接着发数据。根据TCP协议的规定,会收C个RST响应Qclient再往q个服务器发送数据时Q系l会发出一个SIGPIPE信号l进E,告诉q程q个q接已经断开了,不要再写了?br>    Ҏ信号的默认处理规则SIGPIPE信号的默认执行动作是terminate(l止、退?,所以client会退出。若不想客户端退出可以把SIGPIPE设ؓSIG_IGN</strong></p> <p>    ?    signal(SIGPIPE,SIG_IGN);<br>    q时SIGPIPE交给了系l处理?/p> <p>服务器采用了fork的话Q要攉垃圾q程Q防止僵进E的产生Q可以这样处理:<br>signal(SIGCHLD,SIG_IGN); 交给pȝinitd收?br>   q里子进E就不会产生僵尸q程了?/p> <p><br><a ><u><font color=#0000ff>http://www.cublog.cn/u/31357/showart_242605.html</font></u></a></p> <p><br>好久没做qC开发了Q最q重操旧业?<br>听说另外一个项目组socket开发遇到问题,发送端和接受端数据大小不一致。徏议他们采用writen的重发机Ӟ以避免信号中断错误。采用后q是有问题。PM让我帮忙研究下?<br>UNP nq以前看q,很久没做q底层开发,手边也没有UNP vol1q本书,所以做了个试E序Q研I下实际可能发生的情况了?<br><br>试环境QAS3和redhat 9(~省没有nc) <br><br>先下载unp源码: <br>wget <a ><u><font color=#0000ff>http://www.unpbook.com/unpv13e.tar.gz</font></u></a> <br>tar xzvf *.tar.gz; <br>configure;make lib. <br>然后参考str_cli.c和tcpcli01.cQ写了测试代码client.c <br><br>#include    "unp.h"</p> <p>#define MAXBUF 40960<br>void processSignal(int signo)<br>{<br>    printf("Signal is %d\n", signo);<br>    signal(signo, processSignal);<br>}<br>void<br>str_cli(FILE *fp, int sockfd)<br>{<br>    char    sendline[MAXBUF], recvline[MAXBUF];</p> <p>    while (1) {</p> <p>        memset(sendline, 'a', sizeof(sendline));<br>        printf("Begin send %d data\n", MAXBUF);<br>        Writen(sockfd, sendline, sizeof(sendline));<br>        sleep(5);</p> <p>    }<br>}</p> <p>int<br>main(int argc, char **argv)<br>{<br>    int                    sockfd;<br>    struct sockaddr_in    servaddr;</p> <p>    signal(SIGPIPE, SIG_IGN);<br>    //signal(SIGPIPE, processSignal);</p> <p>    if (argc != 2)<br>        err_quit("usage: tcpcli [port]");</p> <p>    sockfd = Socket(AF_INET, SOCK_STREAM, 0);</p> <p>    bzero(&servaddr, sizeof(servaddr));<br>    servaddr.sin_family = AF_INET;<br>    servaddr.sin_port = htons(atoi(argv[1]));<br>    Inet_pton(AF_INET, "127.0.0.1", &servaddr.sin_addr);</p> <p>    Connect(sockfd, (SA *) &servaddr, sizeof(servaddr));</p> <p>    str_cli(stdin, sockfd);        /* do it all */</p> <p>    exit(0);<br>}</p> <p> </p> <p> </p> <p>Z方便观察错误输出Qlib/writen.c也做了修改,加了些日志:</p> <p> </p> <p> </p> <p>/* include writen */<br>#include    "unp.h"</p> <p>ssize_t        &nbs <table class=FCK__ShowTableBorders> <tbody> <tr> <td> <p><font size=+0><span>p;               <span style="COLOR: #ff9900">/* Write "n" bytes to a descriptor. */</span><br>writen<span style="COLOR: #0000cc">(</span><span style="COLOR: #0000ff">int</span> fd<span style="COLOR: #0000cc">,</span> <span style="COLOR: #0000ff">const</span> <span style="COLOR: #0000ff">void</span> <span style="COLOR: #0000cc">*</span>vptr<span style="COLOR: #0000cc">,</span> <span style="COLOR: #ff0000">size_t</span> n<span style="COLOR: #0000cc">)</span><br><span style="COLOR: #0000cc">{</span><br>    <span style="COLOR: #ff0000">size_t</span>         nleft<span style="COLOR: #0000cc">;</span><br>     ssize_t         nwritten<span style="COLOR: #0000cc">;</span><br>    <span style="COLOR: #0000ff">const</span> <span style="COLOR: #0000ff">char</span>    <span style="COLOR: #0000cc">*</span>ptr<span style="COLOR: #0000cc">;</span><br><br>     ptr <span style="COLOR: #0000cc">=</span> vptr<span style="COLOR: #0000cc">;</span><br>     nleft <span style="COLOR: #0000cc">=</span> n<span style="COLOR: #0000cc">;</span><br>    <span style="COLOR: #0000ff">while</span> <span style="COLOR: #0000cc">(</span>nleft <span style="COLOR: #0000cc">></span> 0<span style="COLOR: #0000cc">)</span> <span style="COLOR: #0000cc">{</span><br>        <span style="COLOR: #ff0000">printf</span><span style="COLOR: #0000cc">(</span><span style="COLOR: #ff00ff">"Begin Writen %d\n"</span><span style="COLOR: #0000cc">,</span> nleft<span style="COLOR: #0000cc">)</span><span style="COLOR: #0000cc">;</span><br>        <span style="COLOR: #0000ff">if</span> <span style="COLOR: #0000cc">(</span> <span style="COLOR: #0000cc">(</span>nwritten <span style="COLOR: #0000cc">=</span> <span style="COLOR: #ff0000">write</span><span style="COLOR: #0000cc">(</span>fd<span style="COLOR: #0000cc">,</span> ptr<span style="COLOR: #0000cc">,</span> nleft<span style="COLOR: #0000cc">)</span><span style="COLOR: #0000cc">)</span> <span style="COLOR: #0000cc"><</span><span style="COLOR: #0000cc">=</span> 0<span style="COLOR: #0000cc">)</span> <span style="COLOR: #0000cc">{</span><br>            <span style="COLOR: #0000ff">if</span> <span style="COLOR: #0000cc">(</span>nwritten <span style="COLOR: #0000cc"><</span> 0 <span style="COLOR: #0000cc">&</span><span style="COLOR: #0000cc">&</span> <span style="COLOR: #ff0000">errno</span> <span style="COLOR: #0000cc">=</span><span style="COLOR: #0000cc">=</span> EINTR<span style="COLOR: #0000cc">)</span> <span style="COLOR: #0000cc">{</span><br>                <span style="COLOR: #ff0000">printf</span><span style="COLOR: #0000cc">(</span><span style="COLOR: #ff00ff">"intterupt\n"</span><span style="COLOR: #0000cc">)</span><span style="COLOR: #0000cc">;</span><br>                 nwritten <span style="COLOR: #0000cc">=</span> 0<span style="COLOR: #0000cc">;</span>        <span style="COLOR: #ff9900">/* and call write() again */</span><br>            <span style="COLOR: #0000cc">}</span><br>            <span style="COLOR: #0000ff">else</span><br>                <span style="COLOR: #0000ff">return</span><span style="COLOR: #0000cc">(</span><span style="COLOR: #0000cc">-</span>1<span style="COLOR: #0000cc">)</span><span style="COLOR: #0000cc">;</span>            <span style="COLOR: #ff9900">/* error */</span><br>        <span style="COLOR: #0000cc">}</span><br><br>         nleft <span style="COLOR: #0000cc">-</span><span style="COLOR: #0000cc">=</span> nwritten<span style="COLOR: #0000cc">;</span><br>         ptr <span style="COLOR: #0000cc">+</span><span style="COLOR: #0000cc">=</span> nwritten<span style="COLOR: #0000cc">;</span><br>        <span style="COLOR: #ff0000">printf</span><span style="COLOR: #0000cc">(</span><span style="COLOR: #ff00ff">"Already write %d, left %d, errno=%d\n"</span><span style="COLOR: #0000cc">,</span> nwritten<span style="COLOR: #0000cc">,</span> nleft<span style="COLOR: #0000cc">,</span> <span style="COLOR: #ff0000">errno</span><span style="COLOR: #0000cc">)</span><span style="COLOR: #0000cc">;</span><br>    <span style="COLOR: #0000cc">}</span><br>    <span style="COLOR: #0000ff">return</span><span style="COLOR: #0000cc">(</span>n<span style="COLOR: #0000cc">)</span><span style="COLOR: #0000cc">;</span><br><span style="COLOR: #0000cc">}</span><br><span style="COLOR: #ff9900">/* end writen */</span><br><br><span style="COLOR: #0000ff">void</span><br>Writen<span style="COLOR: #0000cc">(</span><span style="COLOR: #0000ff">int</span> fd<span style="COLOR: #0000cc">,</span> <span style="COLOR: #0000ff">void</span> <span style="COLOR: #0000cc">*</span>ptr<span style="COLOR: #0000cc">,</span> <span style="COLOR: #ff0000">size_t</span> nbytes<span style="COLOR: #0000cc">)</span><br><span style="COLOR: #0000cc">{</span><br>    <span style="COLOR: #0000ff">if</span> <span style="COLOR: #0000cc">(</span>writen<span style="COLOR: #0000cc">(</span>fd<span style="COLOR: #0000cc">,</span> ptr<span style="COLOR: #0000cc">,</span> nbytes<span style="COLOR: #0000cc">)</span> <span style="COLOR: #0000cc">!</span><span style="COLOR: #0000cc">=</span> nbytes<span style="COLOR: #0000cc">)</span><br>         err_sys<span style="COLOR: #0000cc">(</span><span style="COLOR: #ff00ff">"writen error"</span><span style="COLOR: #0000cc">)</span><span style="COLOR: #0000cc">;</span><br><span style="COLOR: #0000cc">}</span><br></span></font></p> </td> </tr> </tbody> </table> </p> <p> </p> <p>client.c攑֜tcpclieserv目录下,修改了MakefileQ增加了client.c的编译目?/p> <p> </p> <p> <table style="BORDER-COLLAPSE: collapse" borderColor=#999999 cellSpacing=0 cellPadding=0 width="95%" bgColor=#f1f1f1 border=1> <tbody> <tr> <td> <p style="MARGIN: 5px; LINE-HEIGHT: 150%"><code><span style="COLOR: #000000"><br><font face=新宋?client<span style="COLOR: #0000cc">:</span> client<span style="COLOR: #0000cc">.</span>c<br>                 $<span style="COLOR: #0000cc">{</span>CC<span style="COLOR: #0000cc">}</span> $<span style="COLOR: #0000cc">{</span>CFLAGS<span style="COLOR: #0000cc">}</span> <span style="COLOR: #0000cc">-</span>o $@ $<span style="COLOR: #0000cc"><</span> $<span style="COLOR: #0000cc">{</span>LIBS<span style="COLOR: #0000cc">}</span><br></font></span></code></p> </td> </tr> </tbody> </table> </p> <p> </p> <p>接着可以开始测试了?/p> <h2>试1 忽略SIGPIPE信号Qwriten之前Q对方关闭接受进E?/h2> <p>本机服务端:</p> <p><br>nc -l -p 30000 <br><br>本机客户? <br>./client 30000 <br>Begin send 40960 data<br>Begin Writen 40960<br>Already write 40960, left 0, errno=0<br>Begin send 40960 data<br>Begin Writen 40960<br>Already write 40960, left 0, errno=0<br><font color=#ff0000>执行C步停止服务端,client会l显C?</font> <br>Begin send 40960 data<br>Begin Writen 40960<br>writen error: Broken pipe(32)<br><strong>l论:可见write之前Q对方socket中断Q发送端write会返?1,errno号ؓEPIPE(32)</strong></p> <h2>试2 catch SIGPIPE信号Qwriten之前Q对方关闭接受进E?/h2> <p>修改客户端代码,catch sigpipe信号</p> <p> <table style="BORDER-COLLAPSE: collapse" borderColor=#999999 cellSpacing=0 cellPadding=0 width="95%" bgColor=#f1f1f1 border=1> <tbody> <tr> <td> <p style="MARGIN: 5px; LINE-HEIGHT: 150%"><code><span style="COLOR: #000000"><font face=新宋?<span style="COLOR: #ff9900"><font color=#000000>        </font>//signal(SIGPIPE, SIG_IGN);<br></span><br>        <span style="COLOR: #ff0000">signal</span><span style="COLOR: #0000cc">(</span>SIGPIPE<span style="COLOR: #0000cc">,</span> processSignal<span style="COLOR: #0000cc">)</span><span style="COLOR: #0000cc">;</span></font><br></span></code></p> </td> </tr> </tbody> </table> </p> <p>本机服务端:</p> <p><br>nc -l -p 30000 <br><br>本机客户? <br>make client <br>./client 30000 <br><br>Begin send 40960 data<br>Begin Writen 40960<br>Already write 40960, left 0, errno=0<br>Begin send 40960 data<br>Begin Writen 40960<br>Already write 40960, left 0, errno=0<br><font color=#ff0000>执行C步停止服务端,client会l显C?</font> <br>Begin send 40960 data<br>Begin Writen 40960<br>Signal is 13<br>writen error: Broken pipe(32)<br><strong>l论:可见write之前Q对方socket中断Q发送端writeӞ会先调用SIGPIPE响应函数Q然后writeq回-1,errno号ؓEPIPE(32)</strong> <br></p> <h2>试3 writenq程中,Ҏ关闭接受q程</h2> <p>Z方便操作Q加?ơwrite的数据量Q修改MAXBUF?096000</p> <p>本机服务端:</p> <p><br>nc -l -p 30000 <br><br>本机客户? <br>make client <br>./client 30000 <br><br>Begin send 4096000 data<br>Begin Writen 4096000<br><font color=#ff0000>执行C步停止服务端,client会l显C?</font> <br>Already write 589821, left 3506179, errno=0<br>Begin Writen 3506179<br>writen error: Connection reset by peer(104)<br><br><strong>l论:可见socket write中,Ҏsocket中断Q发送端write会先q回已经发送的字节?再次write时返?1,errno号ؓECONNRESET(104)</strong></p> <p>Z么以上测试,都是Ҏ已经中断socket后,发送端再次writeQ结果会有所不同呢。从后来扑ֈ的UNP5.12,5.13能找到答?/p> <p> <table style="BORDER-COLLAPSE: collapse" borderColor=#999999 cellSpacing=0 cellPadding=0 width="95%" bgColor=#f1f1f1 border=1> <tbody> <tr> <td> <p style="MARGIN: 5px; LINE-HEIGHT: 150%">The client's call to readline may happen before the server's RST is received by the client, or it may happen after. If the readline happens before the RST is received, as we've shown in our example, the result is an unexpected EOF in the client. But if the RST arrives first, the result is an ECONNRESET ("Connection reset by peer") error return from readline.</p> </td> </tr> </tbody> </table> </p> <p>以上解释了测?的现象,writeӞ收到RST.</p> <p> <table style="BORDER-COLLAPSE: collapse" borderColor=#999999 cellSpacing=0 cellPadding=0 width="95%" bgColor=#f1f1f1 border=1> <tbody> <tr> <td> <p style="MARGIN: 5px; LINE-HEIGHT: 150%">What happens if the client ignores the error return from readline and writes more data to the server? This can happen, for example, if the client needs to perform two writes to the server before reading anything back, with the first write eliciting the RST.</p> <p style="MARGIN: 5px; LINE-HEIGHT: 150%">The rule that applies is: When a process writes to a socket that has received an RST, the SIGPIPE signal is sent to the process. The default action of this signal is to terminate the process, so the process must catch the signal to avoid being involuntarily terminated.</p> <p style="MARGIN: 5px; LINE-HEIGHT: 150%">If the process either catches the signal and returns from the signal handler, or ignores the signal, the write operation returns EPIPE.</p> </td> </tr> </tbody> </table> </p> <p>以上解释了测?Q?的现?write一个已l接受到RST的socketQ系l内怼发送SIGPIPEl发送进E,如果q程catch/ignoreq个信号Qwrite都返回EPIPE错误.</p> <p>因此,UNP应用Ҏ需要处理SIGPIPE信号Q至不要用pȝ~省的处理方式处理这个信Ppȝ~省的处理方式是退E,q样你的应用很难查处处理进Eؓ什么退出?/p> <p><br><font color=#0000ff>http://blog.csdn.net/shcyd/archive/2006/10/28/1354577.aspx</font></p> <p>在Unixpȝ下,如果send在等待协议传送数据时|络断开的话Q调用send的进E会接收C个SIGPIPE信号Q进E对该信L默认处理是进E终止?br>在Unixpȝ下,如果recv函数在等待协议接收数据时|络断开了,那么调用recv的进E会接收C个SIGPIPE信号Q进E对该信L默认处理是进E终止?/p> <p>处理ҎQ?br>在初始化时调?strong><font color=#333399>signal(SIGPIPE,SIG_IGN)</font></strong>忽略该信P只需一ơ)<br>其时send或recv函数返?1Qerrno为EPIPEQ可视情况关闭socket或其他处?/p> <p>gdbQ?br>gdb默认收到sigpipe时中断程序,可调?strong><font color=#333399>handle SIGPIPE nostop print</font></strong></p> <p><font color=#993300>相关</font></p> <p><strong>(1)SIG_DFL信号专用的默认动?</strong><br>  (a)如果默认动作是暂停线E,则该U程的执行被暂时挂v。当U程暂停期间Q发送给U程的Q何附加信号都不交付,直到该线E开始执行,但是SIGKILL除外?br>  (b)把挂起信L信号动作讄成SIG_DFLQ且光认动作是忽略信号 (SIGCHLD)?/p> <p><strong>(2)SIG_IGN忽略信号</strong><br>  (a)该信L交付对线E没有媄?br>  (b)pȝ不允许把SIGKILL或SIGTOP信号的动作设|ؓSIG_DFL</p> <p><strong>(3)指向函数的指?-捕获信号</strong><br>  (a)信号一l交付,接收U程在指定地址上执行信hL序。在信号?获函数返回后Q接受线E必d被中断点恢复执行?br>  (b)用C语言函数调用的方法进入信h捉程?<br>    void func (signo)<br>    int signo;<br>    func( )是指定的信号捕捉函数Qsigno是正被交付信L~码<br>  (c)如果SIGFPE,SIGILL或SIGSEGV信号不是由C标准定义的kill( )或raise( )函数所生成Q则从信号SIGFPE,SIGILL,SIGSEGV的信h获函数正常返回后U程的行为是未定义的?br>  (d)pȝ不允许线E捕获SIGKILL和SIGSTOP信号?br>  (e)如果U程为SIGCHLD信号建立信号捕获函数Q而该U程有未被等待的以终止的子线E时Q没有规定是否要生成SIGCHLD信号来指明那个子U程?/p> <p>每一U信号都被OSKitl予了一个符号名Q对?2位的i386q_而言Q一个字32位,因而信h32U。下面的表给Z常用的符号名、描q和它们的信号倹{?/p> <p>W号名  信号?描述                是否W合POSIX<br>SIGHUP  1   在控制终端上到挂断或控制线E死亡  ?br>SIGINT  2   交互注意信号              ?br>SIGQUIT  3   交互中止信号              ?br>SIGILL  4   到非法g的指令          ?br>SIGTRAP  5   从陷׃回朔              ?br>SIGABRT  6   异常l止信号              ?br>SIGEMT  7   EMT 指o                ?br>SIGFPE  8   不正的术操作信号          ?br>SIGKILL  9   l止信号                ?br>SIGBUS  10   ȝ错误                ?br>SIGSEGV  11   到非法的内存调用          ?br>SIGSYS  12   pȝcall的错误参数           ?br>SIGPIPE  13   在无读者的道上写           ?br>SIGALRM  14   报时信号                ?br>SIGTERM  15   l止信号                ?br>SIGURG  16   IO信道紧急信受            ?br>SIGSTOP  17   暂停信号                ?br>SIGTSTP  18   交互暂停信号              ?br>SIGCONT  19   如果暂停则l             ?br>SIGCHLD  20   子线E终止或暂停            ?br>SIGTTIN  21   后台U程l一成员试图从控制终端上d  ?br>SIGTTOU  22   后台U程l的成员试图写到控制l端上   ?br>SIGIO   23   允许I/O信号               ?br>SIGXCPU  24   出CPU旉               ?br>SIGXFSZ  25   出文g大小限制            ?br>SIGVTALRM 26   虚时间警报器              ?br>SIGPROF  27   侧面旉警报器             ?br>SIGWINCH 28   H口大小的更攏V            ?br>SIGINFO  29   消息h                ?br><clk></clk>SIGUSR1  30   保留作ؓ<nobr style="COLOR: #6600ff; BORDER-BOTTOM: #6600ff 1px dotted; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline">用户</nobr>自定义的信号1        ?br>SIGUSR2  31   保留作ؓ用户自定义的信号        ?<br><br><font color=#ff6600>注意</font>QLinux信号机制基本上是从Unixpȝ中承过来的。早期Unixpȝ中的信号机制比较单和原始Q后来在实践中暴露出一些问题,因此Q把那些建立在早期机制上的信号叫?不可靠信?Q信号值小于SIGRTMIN(Red hat 7.2中,SIGRTMIN=32QSIGRTMAX=63)的信号都是不可靠信号。这是"不可靠信?的来源。它的主要问题是Q进E每ơ处理信号后Q就对信号的响应设|ؓ默认动作。在某些情况下,导致对信号的错误处理;因此Q用户如果不希望q样的操作,那么p在信号处理函数结ֆ一ơ调用signal()Q重新安装该信号?/p> <p><br></p> <p> </p> <p>另外Q我再做一些补充,产生RST响应以至于系l发出SIGPIPE信号Q应该分ZU情?</p> <p>1. 客户端到服务端之间网l断掉,或者服务端断电{,物理q接断掉了,q种情况下客L不会退出,send函数正常执行Q不会感觉到自己出错。因为由于物理网l断开Q服务端不会l客L回应错误消息Q没有RST响应Q自然也不会产生SIGPIPE信号。但是当服务端再恢复正常的时候,对客Lsend来的消息会生RST响应Q客L收到SIGPIPE信号了,E序退出,但是q时send函数是能够返?-1的。可以进行异常处理?/p> <p>2.客户端到服务端的|络能通,服务E序挂掉Q客LE序会马上退出,因ؓ服务端能正常q回错误消息Q客L收到QSIGPIPE信号׃生了。不q我不确定此时服务端q回是的RST响应Q抓包来看没有RST标志。水qx限,只写到这了?/p> <p><br></p> <p>文章出处Q?a ><u><font color=#0000ff>http://www.diybl.com/course/6_system/linux/Linuxjs/20081020/150832.html</font></u></a></p> <img src ="http://www.shnenglu.com/prayer/aggbug/81457.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/prayer/" target="_blank">Prayer</a> 2009-04-29 16:59 <a href="http://www.shnenglu.com/prayer/archive/2009/04/29/81457.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于|络讑֤的FIN_WAIT_2状态解?http://www.shnenglu.com/prayer/archive/2009/04/29/81435.htmlPrayerPrayerWed, 29 Apr 2009 06:30:00 GMThttp://www.shnenglu.com/prayer/archive/2009/04/29/81435.htmlhttp://www.shnenglu.com/prayer/comments/81435.htmlhttp://www.shnenglu.com/prayer/archive/2009/04/29/81435.html#Feedback1http://www.shnenglu.com/prayer/comments/commentRss/81435.htmlhttp://www.shnenglu.com/prayer/services/trackbacks/81435.html  在HTTP应用中,存在一个问题,SERVER׃某种原因关闭q接Q如KEEPALIVE的超Ӟq样Q作Z动关闭的SERVER一方就会进?FIN_WAIT2状态,但TCP/IP协议栈有个问题,FIN_WAIT2状态是没有时的(不象TIME_WAIT状态)Q所以如果CLIENT不关闭,q个FIN_WAIT_2状态将保持到系l重新启动,来多的FIN_WAIT_2状态会致内核crash?/p>

  产生原因Q?
1。常q接q且当连接一直处于IDLE状态导致SERVER CLOSEӞCLIENT~程~陷Q没有向SERVER 发出FIN和ACK?
2。APACHE1.1和APACHE1.2增加了linger_close()函数Q前面的帖子有介l,q个函数可能引v了这个问题(Z么我也不清楚Q?
  解决办法Q?
1。对FIN_WAIT_2状态增加超时机Ӟq个Ҏ在协议里没有体玎ͼ但在一些OS中已l实?
如:LINUX、SOLARIS、FREEBSD、HP-UNIX、IRIX{?
2。不要用linger_close()~译
3。用SO_LINGER代替Q这个在某些pȝ中还能很好地处理
4。增加用于存储网l连接状态的内存mbufQ以防止内核crash
5。DISABLE KEEPALIVE

 



Prayer 2009-04-29 14:30 发表评论
]]>
端口?/title><link>http://www.shnenglu.com/prayer/archive/2009/04/24/80940.html</link><dc:creator>Prayer</dc:creator><author>Prayer</author><pubDate>Fri, 24 Apr 2009 06:37:00 GMT</pubDate><guid>http://www.shnenglu.com/prayer/archive/2009/04/24/80940.html</guid><wfw:comment>http://www.shnenglu.com/prayer/comments/80940.html</wfw:comment><comments>http://www.shnenglu.com/prayer/archive/2009/04/24/80940.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/prayer/comments/commentRss/80940.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/prayer/services/trackbacks/80940.html</trackback:ping><description><![CDATA[<h2 class=first> <div id="zbhzj7n" class=text_edit>[<a onclick="userLogin(3,0);Detect.url='http://baike.baidu.com/edit/id=642103&dl=1';Detect.id=642103;return false;" ><u>~辑本段</u></a>]</div> <a name=1></a>端口概念</h2>   在网l技术中Q端口(PortQ大致有两种意思:一是物理意义上的端口,比如QADSL Modem、集U器、交换机、\由器?于连接其他网l设备的接口Q如RJ-45端口、SC端口{等。二是逻辑意义上的端口Q一般是指TCP/IP协议中的端口Q端口号的范围从0?5535Q比如用于浏览网|务的80端口Q用于FTP服务?1端口{等。我们这里将要介l的是逻辑意义上的端口? <div id="zdfrvbd" class=bpctrl></div> <h2 class=""> <div id="j7pr9jt" class=text_edit>[<a onclick="userLogin(3,0);Detect.url='http://baike.baidu.com/edit/id=642103&dl=2';Detect.id=642103;return false;" ><u>~辑本段</u></a>]</div> <a name=2></a>端口?/h2>   那么TCP/IP协议中的端口指的是什么呢Q如果把IP地址比作一间房?Q端口就是出入这间房子的门。真正的房子只有几个门,但是一个IP地址的端?可以?strong>65536</strong>个之多!端口是通过端口h标记的,端口号只有整敎ͼ<strong>范围是从0 ?5535</strong>?<br> <div id="nr7j7f9" class=spctrl></div>   端口有什么用呢?我们知道Q一台拥有IP地址的主机可以提供许多服务,比如Web服务、FTP服务、SMTP服务{,q些服务完全可以通过1个IP地址来实现。那么,L是怎样区分不同的网l服务呢Q显然不能只靠IP地址Q因?strong>IP 地址与网l服务的关系是一对多的关pR实际上是通过“IP地址+端口?#8221;来区 分不同的服务的?<br></strong> <div id="db97r9b" class=spctrl></div>   服务器一般都是通过知名端口h识别的。例如,对于每个TCP/IP实现来说QFTP服务器的TCP端口号都?1Q每个Telnet服务器的TCP端口号都?3Q每个TFTP(单文件传送协?服务器的UDP端口号都?9。Q何TCP/IP实现所提供的服务都用知名的1?023之间的端口号。这些知名端口号由Internet号分配机构(InternetAssignedNumbersAuthority,IANAQ来理?<br> <div id="lt9vh7b" class=spctrl></div>   ?992qؓ止,知名端口号介??55之间?56?023之间的端口号通常都是由Unixpȝ占用Q以提供一些特定的Unix服务—也是_提供一些只有Unixpȝ才有的、而其他操作系l可能不提供的服务。现在IANA理1?023之间所有的端口受?<br> <div id="tlfnp9d" class=spctrl></div>   Internet扩展服务与Unix特定服务之间的一个差别就是Telnet和Rlogin。它们二者都允许通过计算机网l登录到其他L上。Telnet是采用端口号?3的TCP/IP标准且几乎可以在所有操作系l上q行实现。相反,Rlogin最开始时只是为Unixpȝ设计的(管许多非Unixpȝ现在也提供该服务Q,因此?0q代初,它的有名端口号ؓ513?<br> <div id="9pt7zjv" class=spctrl></div>   客户端通常对它所使用的端口号q不兛_Q只需保证该端口号在本Z是唯一的就可以了。客L口号又称作时端口号Q即存在旉很短暂)。这是因为它通常只是在用戯行该客户E序时才存在Q而服务器则只要主机开着的,其服务就q行?<br> <div id="9jhtd7d" class=spctrl></div>   大多数TCP/IP实现l时端口分?024?000之间的端口号。大?000的端口号是ؓ其他服务器预留的QInternet上ƈ不常用的服务)。我们可以在后面看见许多q样的给临时端口?<br> <div id="77hzjrl" class=spctrl></div>   配端口号的例子?<br> <div id="tnxffjb" class=spctrl></div>   Solaris2.2是一个很有名的例外。通常TCP和UDP的缺省时端口号?2768开始?<br> <div id="7f9np9j" class=spctrl></div>    <h3>TCP与UDP对于端口L使用规定</h3> <br> <div id="zn9xfp7" class=spctrl></div>   TCP与UDPD늻构中端口地址都是16比特Q可以有?---65535范围内的端口受对于这65536个端口号有以下的使用规定Q?br> <div id="rlfhh79" class=spctrl></div>   Q?Q端口号于256的定义ؓ常用端口Q服务器一般都是通过常用端口h识别的。Q何TCP/IP实现所提供的服务都?---1023之间的端口号Q是由IANA来管理的Q?br> <div id="9lvxpbr" class=spctrl></div>   Q?Q?strong>客户端只需保证该端口号在本Z是惟一的就可以了。客L口号因存在时间很短暂又称临时端口P</strong><br> <div id="vfrh9r3" class=spctrl></div>   Q?Q?strong>大多数TCP/IP实现l时端口号分配1024---5000之间的端口号</strong>。大?000的端口号是ؓ其他服务器预留的? <div id="77bv9td" class=bpctrl></div> <h2 class=""> <div id="jddvn7j" class=text_edit>[<a onclick="userLogin(3,0);Detect.url='http://baike.baidu.com/edit/id=642103&dl=3';Detect.id=642103;return false;" ><u>~辑本段</u></a>]</div> <a name=3></a>端口分类</h2>   逻辑意义上的端口有多U分cL准,下面介l常见的按端口号分布的分c:<br> <div id="dpbtl9z" class=spctrl></div>   Q?Q知名端口(Well-Known PortsQ?br> <div id="txprzdj" class=spctrl></div>   知名端口即众所周知的端口号Q范围从0?023Q这些端口号一般固定分配给一些服务。比?1端口分配lFTP(文g传输协议)服务Q?5端口分配lSMTPQ简单邮件传输协议)服务Q?0端口分配lHTTP服务Q?35端口分配lRPCQ远E过E调用)服务{等?br> <div id="77hpr7l" class=spctrl></div>   |络服务是可以用其他端口号的,如果不是默认的端口号则应该在 地址栏上指定端口PҎ是在地址后面加上冒号“:”Q半角)Q再加上端口 受比如?#8220;8080”作ؓWWW服务的端口,则需要在地址栏里输入“www.cce.com.cn:8080”?<br> <div id="hjltlpz" class=spctrl></div>   但是有些pȝ协议使用固定的端口号Q它是不能被改变的,比如139 端口专门用于NetBIOS与TCP/IP之间的通信Q不能手动改变?<br> <div id="vhzrlvn" class=spctrl></div>   Q?Q动态端口(Dynamic PortsQ?br> <div id="bdvh97x" class=spctrl></div>   动态端口的范围?024?5535Q这些端口号一般不固定分配l某个服务,也就是说许多服务都可以用这些端口。只要运行的E序向系l提问网l的甌Q那么系l就可以从这些端口号中分配一个供该程序用。比?024端口是分配l第一个向pȝ发出甌的程序。在关闭E序q程后,׃释放所占用的端口号?br> <div id="nzzllbn" class=spctrl></div>   不过Q动态端口也常常被病毒木马程序所利用Q如冰河默认q接端口?626、WAY 2.4?011、Netspy 3.0?306、YAI病毒?024{??br> <div id="lpnx77r" class=spctrl></div>   Q?Q保留端口号 <br> <div id="jddfphz" class=spctrl></div>   Unixpȝ有保留端口号的概c只有具有超U用L权的q程才允许给它自己分配一个保留端口号?<br> <div id="bzll9dn" class=spctrl></div>   q些端口号介??023之间Q一些应用程序(如有名的RloginQ?6.2节)它作ؓ客户与服务器之间w䆾认证的一部分?<br> <div id="rd7x99d" class=spctrl></div>   知名端口?br> <div id="dzrbzjr" class=spctrl></div>   //? ׃一些应用Y件占用了部分端口, 因此此文件中的部分端口被注释掉了(注释字符? //) <br> <div id="9lnfppp" class=spctrl></div>   TCP 1=TCP Port Service Multiplexer <br> <div id="nhzbtjd" class=spctrl></div>   TCP 2=Death <br> <div id="hztnxxp" class=spctrl></div>   TCP 5=Remote Job Entry,yoyo <br> <div id="7dnfzpr" class=spctrl></div>   TCP 7=Echo <br> <div id="dfp7dff" class=spctrl></div>   TCP 11=Skun <br> <div id="blnxxr7" class=spctrl></div>   TCP 12=Bomber <br> <div id="dp7bjdj" class=spctrl></div>   TCP 16=Skun <br> <div id="bv9vf9x" class=spctrl></div>   TCP 17=Skun <br> <div id="h7zrjbn" class=spctrl></div>   TCP 18=消息传输协议,skun <br> <div id="hbdvvdd" class=spctrl></div>   TCP 19=Skun <br> <div id="xpjtlnh" class=spctrl></div>   TCP 20=FTP Data,Amanda <br> <div id="pjhb799" class=spctrl></div>   TCP 21=文g传输,Back Construction,Blade Runner,Doly Trojan,Fore,FTP trojan,Invisible FTP,Larva, WebEx,WinCrash <br> <div id="rddvnpx" class=spctrl></div>   TCP 22=q程d协议 <br> <div id="njhb7nf" class=spctrl></div>   TCP 23=q程d(Telnet),Tiny Telnet Server (= TTS) <br> <div id="trhrrlt" class=spctrl></div>   TCP 25=电子邮g(SMTP),Ajan,Antigen,Email Password Sender,Happy 99,Kuang2,ProMail trojan,Shtrilitz,Stealth,Tapiras,Terminator,WinPC,WinSpy,Haebu Coceda <br> <div id="zld79pn" class=spctrl></div>   TCP 27=Assasin <br> <div id="dvlvffh" class=spctrl></div>   TCP 28=Amanda <br> <div id="frbtvbf" class=spctrl></div>   TCP 29=MSG ICP <br> <div id="llnpzbb" class=spctrl></div>   TCP 30=Agent 40421 <br> <div id="rldp77j" class=spctrl></div>   TCP 31=Agent 31,Hackers Paradise,Masters Paradise,Agent 40421 <br> <div id="rddnfnz" class=spctrl></div>   TCP 37=Time,ADM worm <br> <div id="bx9t7tv" class=spctrl></div>   TCP 39=SubSARI <br> <div id="9vdn77j" class=spctrl></div>   TCP 41=DeepThroat,Foreplay <br> <div id="dxb7zrj" class=spctrl></div>   TCP 42=Host Name Server <br> <div id="jdnfxfx" class=spctrl></div>   TCP 43=WHOIS <br> <div id="xhjlfdn" class=spctrl></div>   TCP 44=Arctic <br> <div id="vz77trb" class=spctrl></div>   TCP 48=DRAT <br> <div id="jlvfh7b" class=spctrl></div>   TCP 49=Ld协议 <br> <div id="l9nndxf" class=spctrl></div>   TCP 50=DRAT <br> <div id="jvdfh9j" class=spctrl></div>   TCP 51=IMP Logical Address Maintenance,Fuck Lamers Backdoor <br> <div id="xxzjdtl" class=spctrl></div>   TCP 52=MuSka52,Skun <br> <div id="7nln7h9" class=spctrl></div>   TCP 53=DNS,Bonk (DOS Exploit) <br> <div id="b7ldfph" class=spctrl></div>   TCP 54=MuSka52 <br> <div id="ptbnzjr" class=spctrl></div>   TCP 58=DMSetup <br> <div id="7tvdxfp" class=spctrl></div>   TCP 59=DMSetup <br> <div id="zzt7br7" class=spctrl></div>   TCP 63=whois++ <br> <div id="hbnhf9p" class=spctrl></div>   TCP 64=Communications Integrator <br> <div id="pxjvndv" class=spctrl></div>   TCP 65=TACACS-Database Service <br> <div id="ttnpxzr" class=spctrl></div>   TCP 66=Oracle SQL*NET,AL-Bareki <br> <div id="b7tv7rl" class=spctrl></div>   TCP 67=Bootstrap Protocol Server <br> <div id="bbdpxrj" class=spctrl></div>   TCP 68=Bootstrap Protocol Client <br> <div id="rfz9l9t" class=spctrl></div>   TCP 69=W32.Evala.Worm,BackGate Kit,Nimda,Pasana,Storm,Storm worm,Theef,Worm.Cycle.a <br> <div id="fzrrl7z" class=spctrl></div>   TCP 70=Gopher服务,ADM worm <br> <div id="9fph79l" class=spctrl></div>   TCP 79=用户查询(Finger),Firehotcker,ADM worm <br> <div id="frbd9vn" class=spctrl></div>   TCP 80=文本服务器(Http),Executor,RingZero <br> <div id="xddnnvv" class=spctrl></div>   TCP 81=Chubo,Worm.Bbeagle.q <br> <div id="j9fxprj" class=spctrl></div>   TCP 82=Netsky-Z <br> <div id="7xhjltl" class=spctrl></div>   TCP 88=Kerberos krb5服务 <br> <div id="7tvfphp" class=spctrl></div>   TCP 99=Hidden Port <br> <div id="lpphrh7" class=spctrl></div>   TCP 102=消息传输代理 <br> <div id="vnvfx7t" class=spctrl></div>   TCP 108=SNA|关讉K服务?<br> <div id="f9zzx7r" class=spctrl></div>   TCP 109=Pop2 <br> <div id="nz7btdl" class=spctrl></div>   TCP 110=电子邮g(Pop3),ProMail <br> <div id="r7rlv9f" class=spctrl></div>   TCP 113=Kazimas, Auther Idnet <br> <div id="nhr779j" class=spctrl></div>   TCP 115=单文件传输协?<br> <div id="bvphz7v" class=spctrl></div>   TCP 118=SQL Services, Infector 1.4.2 <br> <div id="prjtvdx" class=spctrl></div>   TCP 119=新闻l传输协?Newsgroup(Nntp)), Happy 99 <br> <div id="blffhzb" class=spctrl></div>   TCP 121=JammerKiller, Bo jammerkillah <br> <div id="dzztvvn" class=spctrl></div>   TCP 123=|络旉协议(NTP),Net Controller <br> <div id="979bl7t" class=spctrl></div>   TCP 129=Password Generator Protocol <br> <div id="j7lvnvn" class=spctrl></div>   TCP 133=Infector 1.x <br> <div id="jdnxfhz" class=spctrl></div>   TCP 135=微YDCE RPC end-point mapper服务 <br> <div id="l7rbdtf" class=spctrl></div>   TCP 137=微YNetbios Name服务(|上d传输文g使用) <br> <div id="7rzrbtv" class=spctrl></div>   TCP 138=微YNetbios Name服务(|上d传输文g使用) <br> <div id="dhbr9tl" class=spctrl></div>   TCP 139=微YNetbios Name服务(用于文g及打印机׃n) <br> <div id="n77pr9z" class=spctrl></div>   TCP 142=NetTaxi <br> <div id="lfhjz9f" class=spctrl></div>   TCP 143=IMAP <br> <div id="dx7bblt" class=spctrl></div>   TCP 146=FC Infector,Infector <br> <div id="xhrttl7" class=spctrl></div>   TCP 150=NetBIOS Session Service <br> <div id="ddxh7jr" class=spctrl></div>   TCP 156=SQL服务?<br> <div id="fxrbtj7" class=spctrl></div>   TCP 161=Snmp <br> <div id="fr7b9tt" class=spctrl></div>   TCP 162=Snmp-Trap <br> <div id="9zjt7t9" class=spctrl></div>   TCP 170=A-Trojan <br> <div id="vb7btb9" class=spctrl></div>   TCP 177=X Display理控制协议 <br> <div id="h9zz7fv" class=spctrl></div>   TCP 179=Border|关协议(BGP) <br> <div id="z7vnxxp" class=spctrl></div>   TCP 190=|关讉K控制协议(GACP) <br> <div id="rppzrr7" class=spctrl></div>   TCP 194=Irc <br> <div id="jhprbl9" class=spctrl></div>   TCP 197=目录定位服务(DLS) <br> <div id="llppp7j" class=spctrl></div>   TCP 256=Nirvana <br> <div id="lfztdnx" class=spctrl></div>   TCP 315=The Invasor <br> <div id="xphjbj7" class=spctrl></div>   TCP 371=ClearCase版本理软g <br> <div id="lprrjrt" class=spctrl></div>   TCP 389=Lightweight Directory Access Protocol (LDAP) <br> <div id="l9h99bt" class=spctrl></div>   TCP 396=Novell Netware over IP <br> <div id="7vfhht7" class=spctrl></div>   TCP 420=Breach <br> <div id="tdf9dnf" class=spctrl></div>   TCP 421=TCP Wrappers <br> <div id="xtlnxfr" class=spctrl></div>   TCP 443=安全服务 <br> <div id="zppbvnx" class=spctrl></div>   TCP 444=Simple Network Paging Protocol(SNPP) <br> <div id="bxfpjr9" class=spctrl></div>   TCP 445=Microsoft-DS <br> <div id="779dnzr" class=spctrl></div>   TCP 455=Fatal Connections <br> <div id="hjl7zbh" class=spctrl></div>   TCP 456=Hackers paradise,FuseSpark <br> <div id="9dx7lbf" class=spctrl></div>   TCP 458=Ҏ公司QuickTime <br> <div id="nh7jrlt" class=spctrl></div>   TCP 513=Grlogin <br> <div id="dz77zr9" class=spctrl></div>   TCP 514=RPC Backdoor <br> <div id="nhj7zr7" class=spctrl></div>   TCP 520=Rip <br> <div id="hzh7hx7" class=spctrl></div>   TCP 531=Rasmin,Net666 <br> <div id="7xxprzz" class=spctrl></div>   TCP 544=kerberos kshell <br> <div id="vvhjbr7" class=spctrl></div>   TCP 546=DHCP Client <br> <div id="9xrtvvv" class=spctrl></div>   TCP 547=DHCP Server <br> <div id="r9bv79l" class=spctrl></div>   TCP 548=Macintosh文g服务 <br> <div id="rvpztll" class=spctrl></div>   TCP 555=Ini-Killer,Phase Zero,Stealth Spy <br> <div id="9lfxrzn" class=spctrl></div>   TCP 569=MSN <br> <div id="jvnxxbn" class=spctrl></div>   TCP 605=SecretService <br> <div id="txr9fpf" class=spctrl></div>   TCP 606=Noknok8 <br> <div id="npz7jtb" class=spctrl></div>   TCP 660=DeepThroat <br> <div id="9fhrldt" class=spctrl></div>   TCP 661=Noknok8 <br> <div id="zlffxfx" class=spctrl></div>   TCP 666=Attack FTP,Satanz Backdoor,Back Construction,Dark Connection Inside 1.2 <br> <div id="pbvnpph" class=spctrl></div>   TCP 667=Noknok7.2 <br> <div id="dvp9vnd" class=spctrl></div>   TCP 668=Noknok6 <br> <div id="prjt7px" class=spctrl></div>   TCP 669=DP trojan <br> <div id="xhrbllt" class=spctrl></div>   TCP 692=GayOL <br> <div id="rxhjldd" class=spctrl></div>   TCP 707=Welchia,nachi <br> <div id="lxr7xhh" class=spctrl></div>   TCP 777=AIM Spy <br> <div id="h7rr7r9" class=spctrl></div>   TCP 808=RemoteControl,WinHole <br> <div id="xddnfhz" class=spctrl></div>   TCP 815=Everyone Darling <br> <div id="7nhpbjv" class=spctrl></div>   TCP 901=Backdoor.Devil <br> <div id="ffr7l7t" class=spctrl></div>   TCP 911=Dark Shadow <br> <div id="9dppztr" class=spctrl></div>   TCP 993=IMAP <br> <div id="r7jvffz" class=spctrl></div>   TCP 999=DeepThroat <br> <div id="d7d9ttl" class=spctrl></div>   TCP 1000=Der Spaeher <br> <div id="9j7xh9t" class=spctrl></div>   TCP 1001=Silencer,WebEx,Der Spaeher <br> <div id="9nxpr9p" class=spctrl></div>   TCP 1003=BackDoor <br> <div id="npzjrjl" class=spctrl></div>   TCP 1010=Doly <br> <div id="htl7hrh" class=spctrl></div>   TCP 1011=Doly <br> <div id="fjt7fd9" class=spctrl></div>   TCP 1012=Doly <br> <div id="x7hhbdv" class=spctrl></div>   TCP 1015=Doly <br> <div id="f77rtjt" class=spctrl></div>   TCP 1016=Doly <br> <div id="nrlldxp" class=spctrl></div>   TCP 1020=Vampire <br> <div id="zvx9nvv" class=spctrl></div>   TCP 1023=Worm.Sasser.e <br> <div id="ptdnxx7" class=spctrl></div>   TCP 1024=NetSpy.698(YAI) <br> <div id="7fzzjbt" class=spctrl></div>   TCP 1059=nimreg <br> <div id="fzbldlb" class=spctrl></div>   //TCP 1025=NetSpy.698,Unused Windows Services Block <br> <div id="fjltvlf" class=spctrl></div>   //TCP 1026=Unused Windows Services Block <br> <div id="hdvvxpb" class=spctrl></div>   //TCP 1027=Unused Windows Services Block <br> <div id="lzrrtdt" class=spctrl></div>   TCP 1028=应用层网x?<br> <div id="vtlbvx7" class=spctrl></div>   //TCP 1029=Unused Windows Services Block <br> <div id="ndx79xp" class=spctrl></div>   //TCP 1030=Unused Windows Services Block <br> <div id="l7dxppb" class=spctrl></div>   //TCP 1033=Netspy <br> <div id="lrrt7l9" class=spctrl></div>   //TCP 1035=Multidropper <br> <div id="zrtnf9n" class=spctrl></div>   //TCP 1042=Bla <br> <div id="pl7r7hz" class=spctrl></div>   //TCP 1045=Rasmin <br> <div id="vztjljb" class=spctrl></div>   //TCP 1047=GateCrasher <br> <div id="bh7fzrj" class=spctrl></div>   //TCP 1050=MiniCommand <br> <div id="fhztlt9" class=spctrl></div>   TCP 1058=nim <br> <div id="j9vxh7x" class=spctrl></div>   TCP 1069=Backdoor.TheefServer.202 <br> <div id="7l7zbdv" class=spctrl></div>   TCP 1070=Voice,Psyber Stream Server,Streaming Audio Trojan <br> <div id="hr7ppzz" class=spctrl></div>   TCP 1079=ASPROVATalk <br> <div id="tdnxphj" class=spctrl></div>   TCP 1080=Wingate,Worm.BugBear.B,Worm.Novarg.B <br> <div id="dppr7rj" class=spctrl></div>   //TCP 1090=Xtreme, VDOLive <br> <div id="l9rttll" class=spctrl></div>   //TCP 1092=LoveGate <br> <div id="xphbltl" class=spctrl></div>   //TCP 1095=Rat <br> <div id="bn7ljhr" class=spctrl></div>   //TCP 1097=Rat <br> <div id="vvnrjbn" class=spctrl></div>   //TCP 1098=Rat <br> <div id="hbdvphb" class=spctrl></div>   //TCP 1099=Rat <br> <div id="xzrjjb7" class=spctrl></div>   TCP 1109=Pop with Kerberos <br> <div id="9x9hp9v" class=spctrl></div>   TCP 1110=nfsd-keepalive <br> <div id="9z9przl" class=spctrl></div>   TCP 1111=Backdoor.AIMVision <br> <div id="nx79fzh" class=spctrl></div>   TCP 1155=Network File Access <br> <div id="pjbbllf" class=spctrl></div>   //TCP 1170=Psyber Stream Server,Streaming Audio trojan,Voice <br> <div id="t7fz7vv" class=spctrl></div>   //TCP 1200=NoBackO <br> <div id="bbddnvf" class=spctrl></div>   //TCP 1201=NoBackO <br> <div id="jtfxjjv" class=spctrl></div>   //TCP 1207=Softwar <br> <div id="nxztb7j" class=spctrl></div>   //TCP 1212=Nirvana,Visul Killer <br> <div id="dfxhz9t" class=spctrl></div>   //TCP 1234=Ultors <br> <div id="hr7nvnv" class=spctrl></div>   //TCP 1243=BackDoor-G, SubSeven, SubSeven Apocalypse <br> <div id="9xj79dl" class=spctrl></div>   //TCP 1245=VooDoo Doll <br> <div id="9bld7jb" class=spctrl></div>   //TCP 1269=Mavericks Matrix <br> <div id="fpr7brb" class=spctrl></div>   TCP 1270=Microsoft Operations Manager <br> <div id="vvzzjbl" class=spctrl></div>   //TCP 1313=Nirvana <br> <div id="xxp7ld7" class=spctrl></div>   //TCP 1349=BioNet <br> <div id="jldx7hj" class=spctrl></div>   TCP 1352=Lotus Notes <br> <div id="79px9ln" class=spctrl></div>   TCP 1433=Microsoft SQL Server <br> <div id="h999nnn" class=spctrl></div>   TCP 1434=Microsoft SQL Monitor <br> <div id="xzbr7ld" class=spctrl></div>   //TCP 1441=Remote Storm <br> <div id="xpzjlnv" class=spctrl></div>   //TCP 1492=FTP99CMP(BackOriffice.FTP) <br> <div id="df7fnnd" class=spctrl></div>   TCP 1503=NetMeeting T.120 <br> <div id="hzlnfnn" class=spctrl></div>   TCP 1512=Microsoft Windows Internet Name Service <br> <div id="rbvphbl" class=spctrl></div>   //TCP 1509=Psyber Streaming Server <br> <div id="bbvxfpz" class=spctrl></div>   TCP 1570=Orbix Daemon <br> <div id="dz7hhjp" class=spctrl></div>   //TCP 1600=Shivka-Burka <br> <div id="vzbb7l9" class=spctrl></div>   //TCP 1703=Exloiter 1.1 <br> <div id="tl7xhnp" class=spctrl></div>   TCP 1720=NetMeeting H.233 call Setup <br> <div id="tvlnfpp" class=spctrl></div>   TCP 1731=NetMeeting音频调用控制 <br> <div id="7t9ttf9" class=spctrl></div>   TCP 1745=ISA Server proxy autoconfig, Remote Winsock <br> <div id="nh7hzzz" class=spctrl></div>   TCP 1801=Microsoft Message Queue <br> <div id="pzlnfvd" class=spctrl></div>   //TCP 1807=SpySender <br> <div id="7lnfxbz" class=spctrl></div>   TCP 1906=Backdoor/Verify.b <br> <div id="zrd9ttl" class=spctrl></div>   TCP 1907=Backdoor/Verify.b <br> <div id="l7bdvtv" class=spctrl></div>   //TCP 1966=Fake FTP 2000 <br> <div id="dlvx7hz" class=spctrl></div>   //TCP 1976=Custom port <br> <div id="dpztl7l" class=spctrl></div>   //TCP 1981=Shockrave <br> <div id="hbdvvdv" class=spctrl></div>   TCP 1990=stun-p1 cisco STUN Priority 1 port <br> <div id="nzttndp" class=spctrl></div>   TCP 1990=stun-p1 cisco STUN Priority 1 port <br> <div id="bbvpx9d" class=spctrl></div>   TCP 1991=stun-p2 cisco STUN Priority 2 port <br> <div id="phj9hrj" class=spctrl></div>   TCP 1992=stun-p3 cisco STUN Priority 3 port,ipsendmsg IPsendmsg <br> <div id="zzbnnxp" class=spctrl></div>   TCP 1993=snmp-tcp-port cisco SNMP TCP port <br> <div id="htdnx9j" class=spctrl></div>   TCP 1994=stun-port cisco serial tunnel port <br> <div id="lpjjbdd" class=spctrl></div>   TCP 1995=perf-port cisco perf port <br> <div id="fzzzb7p" class=spctrl></div>   TCP 1996=tr-rsrb-port cisco Remote SRB port <br> <div id="h99t9tt" class=spctrl></div>   TCP 1997=gdp-port cisco Gateway Discovery Protocol <br> <div id="7nhj7zr" class=spctrl></div>   TCP 1998=x25-svc-port cisco X.25 service (XOT) <br> <div id="nnhrd9t" class=spctrl></div>   //TCP 1999=BackDoor, TransScout <br> <div id="7xht7zz" class=spctrl></div>   //TCP 2000=Der Spaeher,INsane Network <br> <div id="hjdnx7t" class=spctrl></div>   TCP 2002=W32.Beagle.AX @mm <br> <div id="rtnphjb" class=spctrl></div>   //TCP 2001=Transmisson scout <br> <div id="ntbdxxf" class=spctrl></div>   //TCP 2002=Transmisson scout <br> <div id="l7tdxfx" class=spctrl></div>   //TCP 2003=Transmisson scout <br> <div id="pz7btjb" class=spctrl></div>   //TCP 2004=Transmisson scout <br> <div id="hlvh7jt" class=spctrl></div>   //TCP 2005=TTransmisson scout <br> <div id="f7xpf9j" class=spctrl></div>   TCP 2011=cypress <br> <div id="drhrdvv" class=spctrl></div>   TCP 2015=raid-cs <br> <div id="ldxjb7t" class=spctrl></div>   //TCP 2023=Ripper,Pass Ripper,Hack City Ripper Pro <br> <div id="bp9rzt7" class=spctrl></div>   TCP 2049=NFS <br> <div id="7prtt9l" class=spctrl></div>   //TCP 2115=Bugs <br> <div id="pndxhhz" class=spctrl></div>   //TCP 2121=Nirvana <br> <div id="fprllfj" class=spctrl></div>   //TCP 2140=Deep Throat, The Invasor <br> <div id="frjlddn" class=spctrl></div>   //TCP 2155=Nirvana <br> <div id="hlllnfr" class=spctrl></div>   //TCP 2208=RuX <br> <div id="xrt7xhh" class=spctrl></div>   TCP 2234=DirectPlay <br> <div id="bfhzhbj" class=spctrl></div>   //TCP 2255=Illusion Mailer <br> <div id="7jlt7bd" class=spctrl></div>   //TCP 2283=HVL Rat5 <br> <div id="7nph7hj" class=spctrl></div>   //TCP 2300=PC Explorer <br> <div id="fvd9lfv" class=spctrl></div>   //TCP 2311=Studio54 <br> <div id="zlfh7b9" class=spctrl></div>   TCP 2556=Worm.Bbeagle.q <br> <div id="djrbtvf" class=spctrl></div>   //TCP 2565=Striker <br> <div id="vx9ff9h" class=spctrl></div>   //TCP 2583=WinCrash <br> <div id="xtn7bzz" class=spctrl></div>   //TCP 2600=Digital RootBeer <br> <div id="7zbtnvf" class=spctrl></div>   //TCP 2716=Prayer Trojan <br> <div id="hf7phpz" class=spctrl></div>   TCP 2745=Worm.BBeagle.k <br> <div id="dp9jjjr" class=spctrl></div>   //TCP 2773=Backdoor,SubSeven <br> <div id="zj7bndp" class=spctrl></div>   //TCP 2774=SubSeven2.1&2.2 <br> <div id="llnxpxr" class=spctrl></div>   //TCP 2801=Phineas Phucker <br> <div id="7hrhttd" class=spctrl></div>   TCP 2967=SSC Agent <br> <div id="lphjddd" class=spctrl></div>   //TCP 2989=Rat <br> <div id="vjbvnrv" class=spctrl></div>   //TCP 3024=WinCrash trojan <br> <div id="57dn7hb" class=spctrl></div>   TCP 3074=Microsoft Xbox game port <br> <div id="lrztnvn" class=spctrl></div>   TCP 3127=Worm.Novarg <br> <div id="vp7zr9n" class=spctrl></div>   TCP 3128=RingZero,Worm.Novarg.B <br> <div id="th7zzht" class=spctrl></div>   //TCP 3129=Masters Paradise <br> <div id="rjl7hnf" class=spctrl></div>   TCP 3132=Microsoft Business Rule Engine Update Service <br> <div id="bvhr9x7" class=spctrl></div>   //TCP 3150=Deep Throat, The Invasor <br> <div id="9nhz9pz" class=spctrl></div>   TCP 3198=Worm.Novarg <br> <div id="ptvfp7l" class=spctrl></div>   //TCP 3210=SchoolBus <br> <div id="ldpz7h7" class=spctrl></div>   TCP 3268=Microsoft Global Catalog <br> <div id="rln7tj7" class=spctrl></div>   TCP 3269=Microsoft Global Catalog with LDAP/SSL <br> <div id="jvnxzjb" class=spctrl></div>   TCP 3332=Worm.Cycle.a <br> <div id="x9llvnv" class=spctrl></div>   TCP 3333=Prosiak <br> <div id="n7pxpfx" class=spctrl></div>   TCP 3535=Microsoft Class Server <br> <div id="nz9jdvv" class=spctrl></div>   TCP 3389=l端 <br> <div id="dhrblrl" class=spctrl></div>   //TCP 3456=Terror <br> <div id="hlvxprj" class=spctrl></div>   //TCP 3459=Eclipse 2000 <br> <div id="l7nfnpp" class=spctrl></div>   //TCP 3700=Portal of Doom <br> <div id="nvxj7lt" class=spctrl></div>   //TCP 3791=Eclypse <br> <div id="rdfx7j7" class=spctrl></div>   //TCP 3801=Eclypse <br> <div id="9rtbvv7" class=spctrl></div>   TCP 3847=Microsoft Firewall Control <br> <div id="7zzrlbb" class=spctrl></div>   TCP 3996=Portal of Doom,RemoteAnything <br> <div id="dp9xxvx" class=spctrl></div>   TCP 4000=腾讯QQ客户?<br> <div id="r9n7vnf" class=spctrl></div>   TCP 4060=Portal of Doom,RemoteAnything <br> <div id="dv9xhvp" class=spctrl></div>   TCP 4092=WinCrash <br> <div id="hp7hzzh" class=spctrl></div>   TCP 4242=VHM <br> <div id="bdfhz7x" class=spctrl></div>   TCP 4267=SubSeven2.1&2.2 <br> <div id="xfzj99j" class=spctrl></div>   TCP 4321=BoBo <br> <div id="bldfxxp" class=spctrl></div>   TCP 4350=Net Device <br> <div id="trtd7bl" class=spctrl></div>   TCP 4444=Prosiak,Swift remote <br> <div id="ftvfxfx" class=spctrl></div>   TCP 4500=Microsoft IPsec NAT-T, W32.HLLW.Tufas <br> <div id="rj7jjbd" class=spctrl></div>   TCP 4567=File Nail <br> <div id="7jtl9r9" class=spctrl></div>   TCP 4661=Backdoor/Surila.f <br> <div id="drrd79d" class=spctrl></div>   TCP 4590=ICQTrojan <br> <div id="7ph9dv9" class=spctrl></div>   TCP 4899=Remote Administrator服务?<br> <div id="nd7nppn" class=spctrl></div>   TCP 4950=ICQTrojan <br> <div id="f7fz7ht" class=spctrl></div>   TCP 5000=WindowsXP服务?Blazer 5,Bubbel,Back Door Setup,Sockets de Troie <br> <div id="xh7jbhj" class=spctrl></div>   TCP 5001=Back Door Setup, Sockets de Troie <br> <div id="xxhzhht" class=spctrl></div>   TCP 5002=cd00r,Shaft <br> <div id="9h7ffpj" class=spctrl></div>   TCP 5011=One of the Last Trojans (OOTLT) <br> <div id="7nvbljb" class=spctrl></div>   TCP 5025=WM Remote KeyLogger <br> <div id="9dfv77t" class=spctrl></div>   TCP 5031=Firehotcker,Metropolitan,NetMetro <br> <div id="vptvfhh" class=spctrl></div>   TCP 5032=Metropolitan <br> <div id="jtlf7rh" class=spctrl></div>   TCP 5190=ICQ Query <br> <div id="tvxzrr7" class=spctrl></div>   TCP 5321=Firehotcker <br> <div id="b97dxfp" class=spctrl></div>   TCP 5333=Backage Trojan Box 3 <br> <div id="jvf7xhp" class=spctrl></div>   TCP 5343=WCrat <br> <div id="txrtlln" class=spctrl></div>   TCP 5400=Blade Runner, BackConstruction1.2 <br> <div id="jdvxzzb" class=spctrl></div>   TCP 5401=Blade Runner,Back Construction <br> <div id="lnnxzrr" class=spctrl></div>   TCP 5402=Blade Runner,Back Construction <br> <div id="tlvppjh" class=spctrl></div>   TCP 5471=WinCrash <br> <div id="5v99jjj" class=spctrl></div>   TCP 5512=Illusion Mailer <br> <div id="brbx7lj" class=spctrl></div>   TCP 5521=Illusion Mailer <br> <div id="zzt9jbt" class=spctrl></div>   TCP 5550=Xtcp,INsane Network <br> <div id="fppzjtv" class=spctrl></div>   TCP 5554=Worm.Sasser <br> <div id="rd7tbrr" class=spctrl></div>   TCP 5555=ServeMe <br> <div id="l99fzrt" class=spctrl></div>   TCP 5556=BO Facil <br> <div id="fzbldnf" class=spctrl></div>   TCP 5557=BO Facil <br> <div id="7hjrdtl" class=spctrl></div>   TCP 5569=Robo-Hack <br> <div id="9vnxj99" class=spctrl></div>   TCP 5598=BackDoor 2.03 <br> <div id="fzrtl9b" class=spctrl></div>   TCP 5631=PCAnyWhere data <br> <div id="9hbdxtf" class=spctrl></div>   TCP 5632=PCAnyWhere <br> <div id="vphrrtl" class=spctrl></div>   TCP 5637=PC Crasher <br> <div id="7hzbd7j" class=spctrl></div>   TCP 5638=PC Crasher <br> <div id="tvpxz9p" class=spctrl></div>   TCP 5678=Remote Replication Agent Connection <br> <div id="lnpfpjr" class=spctrl></div>   TCP 5679=Direct Cable Connect Manager <br> <div id="xtd9rp9" class=spctrl></div>   TCP 5698=BackDoor <br> <div id="v79xfdf" class=spctrl></div>   TCP 5714=Wincrash3 <br> <div id="rn9nfxz" class=spctrl></div>   TCP 5720=Microsoft Licensing <br> <div id="pdvnl7r" class=spctrl></div>   TCP 5741=WinCrash3 <br> <div id="fxzjjjv" class=spctrl></div>   TCP 5742=WinCrash <br> <div id="vfpjjdd" class=spctrl></div>   TCP 5760=Portmap Remote Root Linux Exploit <br> <div id="bxzjjld" class=spctrl></div>   TCP 5880=Y3K RAT <br> <div id="dpbblfv" class=spctrl></div>   TCP 5881=Y3K RAT <br> <div id="lpjbdt9" class=spctrl></div>   TCP 5882=Y3K RAT <br> <div id="n799x9z" class=spctrl></div>   TCP 5888=Y3K RAT <br> <div id="rdnfpxj" class=spctrl></div>   TCP 5889=Y3K RAT <br> <div id="l7prlnn" class=spctrl></div>   TCP 5900=WinVnc <br> <div id="xrtd7vh" class=spctrl></div>   TCP 6000=Backdoor.AB <br> <div id="v9fvnxh" class=spctrl></div>   TCP 6006=Noknok8 <br> <div id="jdphzzj" class=spctrl></div>   TCP 6073=DirectPlay8 <br> <div id="vzldxxh" class=spctrl></div>   TCP 6129=Dameware Nt Utilities服务?<br> <div id="l9pprr9" class=spctrl></div>   TCP 6272=SecretService <br> <div id="7rll9rr" class=spctrl></div>   TCP 6267=q外女生 <br> <div id="tzrrlvn" class=spctrl></div>   TCP 6400=Backdoor.AB,The Thing <br> <div id="7lnfzbj" class=spctrl></div>   TCP 6500=Devil 1.03 <br> <div id="p79nxpz" class=spctrl></div>   TCP 6661=Teman <br> <div id="jphzrll" class=spctrl></div>   TCP 6666=TCPshell.c <br> <div id="5jlfxnh" class=spctrl></div>   TCP 6667=NT Remote Control,Wise 播放器接收端?<br> <div id="7hjj9rj" class=spctrl></div>   TCP 6668=Wise Videoq播端口 <br> <div id="xzjt7vd" class=spctrl></div>   TCP 6669=Vampyre <br> <div id="thrbb7r" class=spctrl></div>   TCP 6670=DeepThroat,iPhone <br> <div id="j9ddvxp" class=spctrl></div>   TCP 6671=Deep Throat 3.0 <br> <div id="7ht799x" class=spctrl></div>   TCP 6711=SubSeven <br> <div id="nxb9fhp" class=spctrl></div>   TCP 6712=SubSeven1.x <br> <div id="bnzjrtj" class=spctrl></div>   TCP 6713=SubSeven <br> <div id="bp7pp7j" class=spctrl></div>   TCP 6723=Mstream <br> <div id="jlx9nvn" class=spctrl></div>   TCP 6767=NT Remote Control <br> <div id="fprdvdv" class=spctrl></div>   TCP 6771=DeepThroat <br> <div id="frr77zb" class=spctrl></div>   TCP 6776=BackDoor-G,SubSeven,2000 Cracks <br> <div id="dh7pzrj" class=spctrl></div>   TCP 6777=Worm.BBeagle <br> <div id="n7fz9d9" class=spctrl></div>   TCP 6789=Doly Trojan <br> <div id="97b9tvd" class=spctrl></div>   TCP 6838=Mstream <br> <div id="jnxbttf" class=spctrl></div>   TCP 6883=DeltaSource <br> <div id="znprrdt" class=spctrl></div>   TCP 6912=Shit Heep <br> <div id="fxrj9nn" class=spctrl></div>   TCP 6939=Indoctrination <br> <div id="7lxxp7r" class=spctrl></div>   TCP 6969=GateCrasher, Priority, IRC 3 <br> <div id="rfh9fpj" class=spctrl></div>   TCP 6970=RealAudio,GateCrasher <br> <div id="nnzjtbj" class=spctrl></div>   TCP 7000=Remote Grab,NetMonitor,SubSeven1.x <br> <div id="9d9rr9f" class=spctrl></div>   TCP 7001=Freak88 <br> <div id="77xnxnx" class=spctrl></div>   TCP 7201=NetMonitor <br> <div id="drhrjbn" class=spctrl></div>   TCP 7215=BackDoor-G, SubSeven <br> <div id="lxfzr79" class=spctrl></div>   TCP 7001=Freak88,Freak2k <br> <div id="nb7bd7f" class=spctrl></div>   TCP 7300=NetMonitor <br> <div id="bxhhbl7" class=spctrl></div>   TCP 7301=NetMonitor <br> <div id="fztl7f9" class=spctrl></div>   TCP 7306=NetMonitor,NetSpy 1.0 <br> <div id="lpprjrl" class=spctrl></div>   TCP 7307=NetMonitor, ProcSpy <br> <div id="n7jtlb9" class=spctrl></div>   TCP 7308=NetMonitor, X Spy <br> <div id="fzb7dnf" class=spctrl></div>   TCP 7323=Sygate服务器端 <br> <div id="bhrrlv9" class=spctrl></div>   TCP 7424=Host Control <br> <div id="xtdvfzz" class=spctrl></div>   TCP 7511=聪明基因 <br> <div id="blfp77h" class=spctrl></div>   TCP 7597=Qaz <br> <div id="9tvdn7l" class=spctrl></div>   TCP 7609=Snid X2 <br> <div id="vh9bj99" class=spctrl></div>   TCP 7626=冰河 <br> <div id="nfzjbj7" class=spctrl></div>   TCP 7777=The Thing <br> <div id="fd77hh9" class=spctrl></div>   TCP 7789=Back Door Setup, ICQKiller <br> <div id="bhzhr77" class=spctrl></div>   TCP 7983=Mstream <br> <div id="7pjbvld" class=spctrl></div>   TCP 8000=腾讯OICQ服务器端,XDMA <br> <div id="f9fhhph" class=spctrl></div>   TCP 8010=Wingate,Logfile <br> <div id="v97ddvv" class=spctrl></div>   TCP 8011=WAY2.4 <br> <div id="t7xppfh" class=spctrl></div>   TCP 8080=WWW 代理,Ring Zero,Chubo,Worm.Novarg.B <br> <div id="p7l77rt" class=spctrl></div>   TCP 8102=|络偷 <br> <div id="jfzblvv" class=spctrl></div>   TCP 8181=W32.Erkez.D@mm <br> <div id="hxrlvtn" class=spctrl></div>   TCP 8520=W32.Socay.Worm <br> <div id="n7frrbl" class=spctrl></div>   TCP 8594=I-Worm/Bozori.a <br> <div id="vdlvxzz" class=spctrl></div>   TCP 8787=BackOfrice 2000 <br> <div id="7bdnffv" class=spctrl></div>   TCP 8888=Winvnc <br> <div id="vzbtnxh" class=spctrl></div>   TCP 8897=Hack Office,Armageddon <br> <div id="nhrjvtt" class=spctrl></div>   TCP 8989=Recon <br> <div id="rbdxhhf" class=spctrl></div>   TCP 9000=Netministrator <br> <div id="jlvlnhf" class=spctrl></div>   TCP 9325=Mstream <br> <div id="bhp7ppp" class=spctrl></div>   TCP 9400=InCommand 1.0 <br> <div id="9npbrvf" class=spctrl></div>   TCP 9401=InCommand 1.0 <br> <div id="tdx7lnd" class=spctrl></div>   TCP 9402=InCommand 1.0 <br> <div id="vrtdn7j" class=spctrl></div>   TCP 9535=Remote Man Server <br> <div id="7f9bljv" class=spctrl></div>   TCP 9872=Portal of Doom <br> <div id="bxhztll" class=spctrl></div>   TCP 9873=Portal of Doom <br> <div id="fdzpzbl" class=spctrl></div>   TCP 9874=Portal of Doom <br> <div id="prbvd7d" class=spctrl></div>   TCP 9875=Portal of Doom <br> <div id="t7xph7z" class=spctrl></div>   TCP 9876=Cyber Attacker <br> <div id="tz9jjjd" class=spctrl></div>   TCP 9878=TransScout <br> <div id="xhrtvnf" class=spctrl></div>   TCP 9989=Ini-Killer <br> <div id="bxfhj7l" class=spctrl></div>   TCP 9898=Worm.Win32.Dabber.a <br> <div id="r9pzjrj" class=spctrl></div>   TCP 9999=Prayer Trojan <br> <div id="ltblvdf" class=spctrl></div>   TCP 10067=Portal of Doom <br> <div id="fjlld9n" class=spctrl></div>   TCP 10080=Worm.Novarg.B <br> <div id="xbdnxxp" class=spctrl></div>   TCP 10084=Syphillis <br> <div id="bnp7797" class=spctrl></div>   TCP 10085=Syphillis <br> <div id="dp7p9pp" class=spctrl></div>   TCP 10086=Syphillis <br> <div id="jp9hzpt" class=spctrl></div>   TCP 10101=BrainSpy <br> <div id="lfjrl9z" class=spctrl></div>   TCP 10167=Portal Of Doom <br> <div id="jtv7ldd" class=spctrl></div>   TCP 10168=Worm.Supnot.78858.c,Worm.LovGate.T <br> <div id="xpbvfxp" class=spctrl></div>   TCP 10520=Acid Shivers <br> <div id="9ppvp7t" class=spctrl></div>   TCP 10607=Coma trojan <br> <div id="tdfh979" class=spctrl></div>   TCP 10666=Ambush <br> <div id="jxhr9rb" class=spctrl></div>   TCP 11000=Senna Spy <br> <div id="fpbtv9b" class=spctrl></div>   TCP 11050=Host Control <br> <div id="ljjd7n7" class=spctrl></div>   TCP 11051=Host Control <br> <div id="pbblnvh" class=spctrl></div>   TCP 11223=Progenic,Hack '99KeyLogger <br> <div id="f79hrzr" class=spctrl></div>   TCP 11320=IMIP Channels Port <br> <div id="hnfz7jt" class=spctrl></div>   TCP 11831=TROJ_LATINUS.SVR <br> <div id="fpr7pzp" class=spctrl></div>   TCP 12076=Gjamer, MSH.104b <br> <div id="p7999nf" class=spctrl></div>   TCP 12223=Hack'99 KeyLogger <br> <div id="f9vdvfx" class=spctrl></div>   TCP 12345=GabanBus, NetBus 1.6/1.7, Pie Bill Gates, X-bill <br> <div id="dx7j79x" class=spctrl></div>   TCP 12346=GabanBus, NetBus 1.6/1.7, X-bill <br> <div id="bfrjjhr" class=spctrl></div>   TCP 12349=BioNet <br> <div id="xjtdndv" class=spctrl></div>   TCP 12361=Whack-a-mole <br> <div id="zlpv79r" class=spctrl></div>   TCP 12362=Whack-a-mole <br> <div id="hnvdfzb" class=spctrl></div>   TCP 12363=Whack-a-mole <br> <div id="fzttndp" class=spctrl></div>   TCP 12378=W32/Gibe@MM <br> <div id="dfxphrz" class=spctrl></div>   TCP 12456=NetBus <br> <div id="vpzzlln" class=spctrl></div>   TCP 12623=DUN Control <br> <div id="tfzbltv" class=spctrl></div>   TCP 12624=Buttman <br> <div id="7lvfxjh" class=spctrl></div>   TCP 12631=WhackJob, WhackJob.NB1.7 <br> <div id="jvx7nlz" class=spctrl></div>   TCP 12701=Eclipse2000 <br> <div id="bdvfzjb" class=spctrl></div>   TCP 12754=Mstream <br> <div id="xhbdxxp" class=spctrl></div>   TCP 13000=Senna Spy <br> <div id="jrt79fv" class=spctrl></div>   TCP 13010=Hacker Brazil <br> <div id="pp7vx79" class=spctrl></div>   TCP 13013=Psychward <br> <div id="xrzjbdd" class=spctrl></div>   TCP 13223=Tribal Voice的聊天程序PowWow <br> <div id="fpbnvff" class=spctrl></div>   TCP 13700=Kuang2 The Virus <br> <div id="7nxp7pp" class=spctrl></div>   TCP 14456=Solero <br> <div id="9b7ttbt" class=spctrl></div>   TCP 14500=PC Invader <br> <div id="dvnzztl" class=spctrl></div>   TCP 14501=PC Invader <br> <div id="9p7dd9b" class=spctrl></div>   TCP 14502=PC Invader <br> <div id="9h9nxxf" class=spctrl></div>   TCP 14503=PC Invader <br> <div id="pbdx7x9" class=spctrl></div>   TCP 15000=NetDaemon 1.0 <br> <div id="xrbdn79" class=spctrl></div>   TCP 15092=Host Control <br> <div id="n7td7rj" class=spctrl></div>   TCP 15104=Mstream <br> <div id="rffxjjd" class=spctrl></div>   TCP 16484=Mosucker <br> <div id="xbjj97p" class=spctrl></div>   TCP 16660=Stacheldraht (DDoS) <br> <div id="dxj9rzh" class=spctrl></div>   TCP 16772=ICQ Revenge <br> <div id="bz9zrjh" class=spctrl></div>   TCP 16959=Priority <br> <div id="9lxxbbb" class=spctrl></div>   TCP 16969=Priority <br> <div id="vfnfxzx" class=spctrl></div>   TCP 17027=提供q告服务的Conducent"adbot"׃n软g <br> <div id="xjtnvpz" class=spctrl></div>   TCP 17166=Mosaic <br> <div id="rfzttrd" class=spctrl></div>   TCP 17300=Kuang2 The Virus <br> <div id="jd7nfn7" class=spctrl></div>   TCP 17490=CrazyNet <br> <div id="txrld9x" class=spctrl></div>   TCP 17500=CrazyNet <br> <div id="ndnxrb9" class=spctrl></div>   TCP 17569=Infector 1.4.x + 1.6.x <br> <div id="h7h7nnf" class=spctrl></div>   TCP 17777=Nephron <br> <div id="t9zrlln" class=spctrl></div>   TCP 18753=Shaft (DDoS) <br> <div id="7rdtvvd" class=spctrl></div>   TCP 19191=蓝色火焰 <br> <div id="ztlfpxr" class=spctrl></div>   TCP 19864=ICQ Revenge <br> <div id="frt7vfh" class=spctrl></div>   TCP 20000=Millennium II (GrilFriend) <br> <div id="7vnvpzr" class=spctrl></div>   TCP 20001=Millennium II (GrilFriend) <br> <div id="dxprjt7" class=spctrl></div>   TCP 20002=AcidkoR <br> <div id="ptlvnvh" class=spctrl></div>   TCP 20034=NetBus 2 Pro <br> <div id="7nxp9hx" class=spctrl></div>   TCP 20168=Lovgate <br> <div id="ph7rbjj" class=spctrl></div>   TCP 20203=Logged,Chupacabra <br> <div id="jbdnfnh" class=spctrl></div>   TCP 20331=Bla <br> <div id="nzjjt7l" class=spctrl></div>   TCP 20432=Shaft (DDoS) <br> <div id="hldnp99" class=spctrl></div>   TCP 20808=Worm.LovGate.v.QQ <br> <div id="jjblddf" class=spctrl></div>   TCP 21335=Tribal Flood Network,Trinoo <br> <div id="hbdxhzp" class=spctrl></div>   TCP 21544=Schwindler 1.82,GirlFriend <br> <div id="b7rbdbf" class=spctrl></div>   TCP 21554=Schwindler 1.82,GirlFriend,Exloiter 1.0.1.2 <br> <div id="tfrjdlt" class=spctrl></div>   TCP 22222=Prosiak,RuX Uploader 2.0 <br> <div id="bnprh9r" class=spctrl></div>   TCP 22784=Backdoor.Intruzzo <br> <div id="9xxpjrr" class=spctrl></div>   TCP 23432=Asylum 0.1.3 <br> <div id="xrltvnx" class=spctrl></div>   TCP 23444=|络公牛 <br> <div id="5ttnxxz" class=spctrl></div>   TCP 23456=Evil FTP, Ugly FTP, WhackJob <br> <div id="9pjjzbl" class=spctrl></div>   TCP 23476=Donald Dick <br> <div id="frzbtvv" class=spctrl></div>   TCP 23477=Donald Dick <br> <div id="nfhz7hx" class=spctrl></div>   TCP 23777=INet Spy <br> <div id="7blvxdt" class=spctrl></div>   TCP 26274=Delta <br> <div id="n7bln7z" class=spctrl></div>   TCP 26681=Spy Voice <br> <div id="vhrbtbv" class=spctrl></div>   TCP 27374=Sub Seven 2.0+, Backdoor.Baste <br> <div id="7frrhld" class=spctrl></div>   TCP 27444=Tribal Flood Network,Trinoo <br> <div id="nh7rjvn" class=spctrl></div>   TCP 27665=Tribal Flood Network,Trinoo <br> <div id="xtdnfnh" class=spctrl></div>   TCP 29431=Hack Attack <br> <div id="9ttbdnx" class=spctrl></div>   TCP 29432=Hack Attack <br> <div id="p7ppp9z" class=spctrl></div>   TCP 29104=Host Control <br> <div id="r7jlvvp" class=spctrl></div>   TCP 29559=TROJ_LATINUS.SVR <br> <div id="j9bb7jj" class=spctrl></div>   TCP 29891=The Unexplained <br> <div id="9lllvfr" class=spctrl></div>   TCP 30001=Terr0r32 <br> <div id="vvztrbb" class=spctrl></div>   TCP 30003=Death,Lamers Death <br> <div id="dvxrl79" class=spctrl></div>   TCP 30029=AOL trojan <br> <div id="rdfpppj" class=spctrl></div>   TCP 30100=NetSphere 1.27a,NetSphere 1.31 <br> <div id="h7tbnfx" class=spctrl></div>   TCP 30101=NetSphere 1.31,NetSphere 1.27a <br> <div id="9rdv7lb" class=spctrl></div>   TCP 30102=NetSphere 1.27a,NetSphere 1.31 <br> <div id="lfzp99d" class=spctrl></div>   TCP 30103=NetSphere 1.31 <br> <div id="fnvnfp7" class=spctrl></div>   TCP 30303=Sockets de Troie <br> <div id="dzl7jdv" class=spctrl></div>   TCP 30722=W32.Esbot.A <br> <div id="phbddd7" class=spctrl></div>   TCP 30947=Intruse <br> <div id="lh7hhjr" class=spctrl></div>   TCP 30999=Kuang2 <br> <div id="rnph9tb" class=spctrl></div>   TCP 31336=Bo Whack <br> <div id="xjlvdvv" class=spctrl></div>   TCP 31337=Baron Night,BO client,BO2,Bo Facil,BackFire,Back Orifice,DeepBO,Freak2k,NetSpy <br> <div id="jfxhprz" class=spctrl></div>   TCP 31338=NetSpy,Back Orifice,DeepBO <br> <div id="lvp9dnd" class=spctrl></div>   TCP 31339=NetSpy DK <br> <div id="7vhzjtd" class=spctrl></div>   TCP 31554=Schwindler <br> <div id="rtdxppr" class=spctrl></div>   TCP 31666=BOWhack <br> <div id="zrtl7xp" class=spctrl></div>   TCP 31778=Hack Attack <br> <div id="7v9dfl9" class=spctrl></div>   TCP 31785=Hack Attack <br> <div id="pfv9vph" class=spctrl></div>   TCP 31787=Hack Attack <br> <div id="9lff9ll" class=spctrl></div>   TCP 31789=Hack Attack <br> <div id="dxhrbtn" class=spctrl></div>   更新旉: 2007q???<br> <div id="rvnhxhr" class=spctrl></div>   TCP 31791=Hack Attack <br> <div id="9tbd7hb" class=spctrl></div>   TCP 31792=Hack Attack <br> <div id="bxhrbld" class=spctrl></div>   TCP 32100=PeanutBrittle <br> <div id="7blnvhp" class=spctrl></div>   TCP 32418=Acid Battery <br> <div id="tlnx7zz" class=spctrl></div>   TCP 33333=Prosiak,Blakharaz 1.0 <br> <div id="9p9prb9" class=spctrl></div>   TCP 33577=Son Of Psychward <br> <div id="jdnphrr" class=spctrl></div>   TCP 33777=Son Of Psychward <br> <div id="9p7nzh7" class=spctrl></div>   TCP 33911=Spirit 2001a <br> <div id="nhb7h9p" class=spctrl></div>   TCP 34324=BigGluck,TN,Tiny Telnet Server <br> <div id="n9przjv" class=spctrl></div>   TCP 34555=Trin00 (Windows) (DDoS) <br> <div id="9dxxb79" class=spctrl></div>   TCP 35555=Trin00 (Windows) (DDoS) <br> <div id="7nhzjtl" class=spctrl></div>   TCP 36794=Worm.Bugbear-A <br> <div id="htdnffh" class=spctrl></div>   TCP 37651=YAT <br> <div id="j3dpptd" class=spctrl></div>   TCP 40412=The Spy <br> <div id="nhz7xzz" class=spctrl></div>   TCP 40421=Agent 40421,Masters Paradise.96 <br> <div id="nffzbbb" class=spctrl></div>   TCP 40422=Masters Paradise <br> <div id="tn9jl9v" class=spctrl></div>   TCP 40423=Masters Paradise.97 <br> <div id="ddfxpxj" class=spctrl></div>   TCP 40425=Masters Paradise <br> <div id="pzltvfn" class=spctrl></div>   TCP 40426=Masters Paradise 3.x <br> <div id="nrtbdxv" class=spctrl></div>   TCP 41666=Remote Boot <br> <div id="rbvnfxl" class=spctrl></div>   TCP 43210=Schoolbus 1.6/2.0 <br> <div id="7vfxxhx" class=spctrl></div>   TCP 44444=Delta Source <br> <div id="p7rldvn" class=spctrl></div>   TCP 44445=Happypig <br> <div id="rjtd79f" class=spctrl></div>   TCP 45576=未知代理 <br> <div id="r9rrtvv" class=spctrl></div>   TCP 47252=Prosiak <br> <div id="t9zjl99" class=spctrl></div>   TCP 47262=Delta <br> <div id="bxr7hbr" class=spctrl></div>   TCP 47624=Direct Play Server <br> <div id="nhhtl99" class=spctrl></div>   TCP 47878=BirdSpy2 <br> <div id="97vvdxn" class=spctrl></div>   TCP 49301=Online Keylogger <br> <div id="x9pfxrj" class=spctrl></div>   TCP 50505=Sockets de Troie <br> <div id="9hbrtn7" class=spctrl></div>   TCP 50766=Fore, Schwindler <br> <div id="fbdfhjb" class=spctrl></div>   TCP 51966=CafeIni <br> <div id="pjbdxnx" class=spctrl></div>   TCP 53001=Remote Windows Shutdown <br> <div id="vjjd7vn" class=spctrl></div>   TCP 53217=Acid Battery 2000 <br> <div id="nb9dlxx" class=spctrl></div>   TCP 54283=Back Door-G, Sub7 <br> <div id="f99h9xx" class=spctrl></div>   TCP 54320=Back Orifice 2000,Sheep <br> <div id="dbbdfhz" class=spctrl></div>   TCP 54321=School Bus .69-1.11,Sheep, BO2K <br> <div id="7dfxhpp" class=spctrl></div>   TCP 57341=NetRaider <br> <div id="tvxzzhz" class=spctrl></div>   TCP 58008=BackDoor.Tron <br> <div id="txrjd9n" class=spctrl></div>   TCP 58009=BackDoor.Tron <br> <div id="pht7btt" class=spctrl></div>   TCP 58339=ButtFunnel <br> <div id="7btvhjj" class=spctrl></div>   TCP 59211=BackDoor.DuckToy <br> <div id="dtt7hx7" class=spctrl></div>   TCP 60000=Deep Throat <br> <div id="rbvp7zh" class=spctrl></div>   TCP 60068=Xzip 6000068 <br> <div id="nxrdddd" class=spctrl></div>   TCP 60411=Connection <br> <div id="h7rb7z9" class=spctrl></div>   TCP 60606=TROJ_BCKDOR.G2.A <br> <div id="phr9r7j" class=spctrl></div>   TCP 61466=Telecommando <br> <div id="rnxh7jt" class=spctrl></div>   TCP 61603=Bunker-kill <br> <div id="9xzrltt" class=spctrl></div>   TCP 63485=Bunker-kill <br> <div id="xl9lt7d" class=spctrl></div>   TCP 65000=Devil, DDoS <br> <div id="nxr9npz" class=spctrl></div>   TCP 65432=Th3tr41t0r, The Traitor <br> <div id="nfhzzzl" class=spctrl></div>   TCP 65530=TROJ_WINMITE.10 <br> <div id="ptx7jhp" class=spctrl></div>   TCP 65535=RC,Adore Worm/Linux <br> <div id="rdnf7pz" class=spctrl></div>   TCP 69123=ShitHeep <br> <div id="fzhr9tb" class=spctrl></div>   TCP 88798=Armageddon,Hack Office <br> <div id="xbdlnnh" class=spctrl></div>   UDP 1=Sockets des Troie <br> <div id="tfxzbt9" class=spctrl></div>   UDP 9=Chargen <br> <div id="tdnh7zz" class=spctrl></div>   UDP 19=Chargen <br> <div id="bf9nphp" class=spctrl></div>   UDP 69=Pasana <br> <div id="bxzzbjt" class=spctrl></div>   UDP 80=Penrox <br> <div id="zrbnnh7" class=spctrl></div>   UDP 371=ClearCase版本理软g <br> <div id="xrb7vxf" class=spctrl></div>   UDP 445=公共Internet文gpȝ(CIFS) <br> <div id="txzprt7" class=spctrl></div>   UDP 500=Internet密钥交换 <br> <div id="7prb9h9" class=spctrl></div>   UDP 1025=Maverick's Matrix 1.2 - 2.0 <br> <div id="77dv9rz" class=spctrl></div>   UDP 1026=Remote Explorer 2000 <br> <div id="bnx7hpx" class=spctrl></div>   UDP 1027=HP服务,UC聊天软g,Trojan.Huigezi.e <br> <div id="lhjtlbn" class=spctrl></div>   UDP 1028=应用层网x?KiLo,SubSARI <br> <div id="xt9xxfv" class=spctrl></div>   UDP 1029=SubSARI <br> <div id="xj79pfp" class=spctrl></div>   UDP 1031=Xot <br> <div id="v7p9x9t" class=spctrl></div>   UDP 1032=Akosch4 <br> <div id="9dhhzp7" class=spctrl></div>   UDP 1104=RexxRave <br> <div id="pz99rx9" class=spctrl></div>   UDP 1111=Daodan <br> <div id="zldn7fp" class=spctrl></div>   UDP 1116=Lurker <br> <div id="vzjbtdv" class=spctrl></div>   UDP 1122=Last 2000,Singularity <br> <div id="nxhbdbl" class=spctrl></div>   UDP 1183=Cyn,SweetHeart <br> <div id="pb7nxn7" class=spctrl></div>   UDP 1200=NoBackO <br> <div id="jlfn97f" class=spctrl></div>   UDP 1201=NoBackO <br> <div id="9rb9hzr" class=spctrl></div>   UDP 1342=BLA trojan <br> <div id="zr7phtt" class=spctrl></div>   UDP 1344=Ptakks <br> <div id="p9fxzr7" class=spctrl></div>   UDP 1349=BO dll <br> <div id="tdvfxzz" class=spctrl></div>   UDP 1512=Microsoft Windows Internet Name Service <br> <div id="bnvpjr7" class=spctrl></div>   UDP 1561=MuSka52 <br> <div id="f7f7tlt" class=spctrl></div>   UDP 1772=NetControle <br> <div id="frjtnxp" class=spctrl></div>   UDP 1801=Microsoft Message Queue <br> <div id="jfxzjll" class=spctrl></div>   UDP 1978=Slapper <br> <div id="jfptffn" class=spctrl></div>   UDP 1985=Black Diver <br> <div id="j7tvlxd" class=spctrl></div>   UDP 2000=A-trojan,Fear,Force,GOTHIC Intruder,Last 2000,Real 2000 <br> <div id="zvnxphj" class=spctrl></div>   UDP 2001=Scalper <br> <div id="blx9nd7" class=spctrl></div>   UDP 2002=Slapper <br> <div id="xhljb7z" class=spctrl></div>   UDP 2015=raid-cs <br> <div id="vhzb9td" class=spctrl></div>   UDP 2018=rellpack <br> <div id="ln9v79t" class=spctrl></div>   UDP 2130=Mini BackLash <br> <div id="rzjlf77" class=spctrl></div>   UDP 2140=Deep Throat,Foreplay,The Invasor <br> <div id="h7fpfn7" class=spctrl></div>   UDP 2222=SweetHeart,Way,Backdoor/Mifeng.t <br> <div id="9npf7xx" class=spctrl></div>   UDP 2234=DirectPlay <br> <div id="hbtd7xh" class=spctrl></div>   UDP 2339=Voice Spy <br> <div id="jlvfppp" class=spctrl></div>   UDP 2702=Black Diver <br> <div id="dxjbvvn" class=spctrl></div>   UDP 2989=RAT <br> <div id="tht9blb" class=spctrl></div>   UDP 3074=Microsoft Xbox game port <br> <div id="t7nxf79" class=spctrl></div>   UDP 3132=Microsoft Business Rule Engine Update Service <br> <div id="xrdn7fx" class=spctrl></div>   UDP 3150=Deep Throat <br> <div id="lxxrzbz" class=spctrl></div>   UDP 3215=XHX <br> <div id="d7hjbzt" class=spctrl></div>   UDP 3268=Microsoft Global Catalog <br> <div id="fzbldll" class=spctrl></div>   UDP 3269=Microsoft Global Catalog with LDAP/SSL <br> <div id="z7fhxxp" class=spctrl></div>   UDP 3333=Daodan <br> <div id="bfrbtxx" class=spctrl></div>   UDP 3535=Microsoft Class Server <br> <div id="bdn7prh" class=spctrl></div>   UDP 3801=Eclypse <br> <div id="9tvnzbb" class=spctrl></div>   UDP 3996=Remote Anything <br> <div id="rnxh9zb" class=spctrl></div>   UDP 4128=RedShad <br> <div id="7j7nxfp" class=spctrl></div>   UDP 4156=Slapper <br> <div id="97ddjbt" class=spctrl></div>   UDP 4350=Net Device <br> <div id="xtlldf9" class=spctrl></div>   UDP 4500=Microsoft IPsec NAT-T, sae-urn <br> <div id="l7zhhtl" class=spctrl></div>   UDP 5419=DarkSky <br> <div id="zt9vfnf" class=spctrl></div>   UDP 5503=Remote Shell Trojan <br> <div id="pv7bbnx" class=spctrl></div>   UDP 5555=Daodan <br> <div id="phldvdf" class=spctrl></div>   UDP 5678=Remote Replication Agent Connection <br> <div id="vnpbj7t" class=spctrl></div>   UDP 5679=Direct Cable Connect Manager <br> <div id="njrrjdd" class=spctrl></div>   UDP 5720=Microsoft Licensing <br> <div id="lbbd9jb" class=spctrl></div>   UDP 5882=Y3K RAT <br> <div id="p7j7fnn" class=spctrl></div>   UDP 5888=Y3K RAT <br> <div id="lbbdnxp" class=spctrl></div>   UDP 6073=DirectPlay8 <br> <div id="nbtxrrh" class=spctrl></div>   UDP 6112=Battle.net Game <br> <div id="p99r9hr" class=spctrl></div>   UDP 6666=KiLo <br> <div id="zvpzjt7" class=spctrl></div>   UDP 6667=KiLo <br> <div id="pttvfxj" class=spctrl></div>   UDP 6766=KiLo <br> <div id="lx7rbbd" class=spctrl></div>   UDP 6767=KiLo,UandMe <br> <div id="zb7fvvd" class=spctrl></div>   UDP 6838=Mstream Agent-handler <br> <div id="txhrtzb" class=spctrl></div>   UDP 7028=未知木马 <br> <div id="fpzltff" class=spctrl></div>   UDP 7424=Host Control <br> <div id="nhhhz7v" class=spctrl></div>   UDP 7788=Singularity <br> <div id="hltvxpp" class=spctrl></div>   UDP 7983=MStream handler-agent <br> <div id="dx9pxpn" class=spctrl></div>   UDP 8012=Ptakks <br> <div id="hjv99xp" class=spctrl></div>   UDP 8090=Aphex's Remote Packet Sniffer <br> <div id="jddnfxj" class=spctrl></div>   UDP 8127=9_119,Chonker <br> <div id="vprrt7t" class=spctrl></div>   UDP 8488=KiLo <br> <div id="vp9zrjr" class=spctrl></div>   UDP 8489=KiLo <br> <div id="l9nnnfx" class=spctrl></div>   UDP 8787=BackOrifice 2000 <br> <div id="n9xpxhz" class=spctrl></div>   UDP 8879=BackOrifice 2000 <br> <div id="hl7n7jr" class=spctrl></div>   UDP 9325=MStream Agent-handler <br> <div id="7rldfln" class=spctrl></div>   UDP 10000=XHX <br> <div id="ptnfffn" class=spctrl></div>   UDP 10067=Portal of Doom <br> <div id="pzblpfr" class=spctrl></div>   UDP 10084=Syphillis <br> <div id="btdv7lt" class=spctrl></div>   UDP 10100=Slapper <br> <div id="thhrbl7" class=spctrl></div>   UDP 10167=Portal of Doom <br> <div id="rtnnfzz" class=spctrl></div>   UDP 10498=Mstream <br> <div id="n99rbzl" class=spctrl></div>   UDP 10666=Ambush <br> <div id="n9frpzr" class=spctrl></div>   UDP 11225=Cyn <br> <div id="7ht7f9v" class=spctrl></div>   UDP 12321=Protoss <br> <div id="pjjtldx" class=spctrl></div>   UDP 12345=BlueIce 2000 <br> <div id="7r9fprd" class=spctrl></div>   UDP 12378=W32/Gibe@MM <br> <div id="fblfp77" class=spctrl></div>   UDP 12623=ButtMan,DUN Control <br> <div id="rb9ld7d" class=spctrl></div>   UDP 11320=IMIP Channels Port <br> <div id="dprbbfx" class=spctrl></div>   UDP 15210=UDP remote shell backdoor server <br> <div id="ln7lvll" class=spctrl></div>   UDP 15486=KiLo <br> <div id="9vjj9fx" class=spctrl></div>   UDP 16514=KiLo <br> <div id="tpzj9vn" class=spctrl></div>   UDP 16515=KiLo <br> <div id="xztldfx" class=spctrl></div>   UDP 18753=Shaft handler to Agent <br> <div id="rddfxfp" class=spctrl></div>   UDP 20433=Shaft <br> <div id="779ldz9" class=spctrl></div>   UDP 21554=GirlFriend <br> <div id="jdfz7jb" class=spctrl></div>   UDP 22784=Backdoor.Intruzzo <br> <div id="xjj9hhr" class=spctrl></div>   UDP 23476=Donald Dick <br> <div id="jp9ppxb" class=spctrl></div>   UDP 25123=MOTD <br> <div id="plnx7fj" class=spctrl></div>   UDP 26274=Delta Source <br> <div id="jvnprhz" class=spctrl></div>   UDP 26374=Sub-7 2.1 <br> <div id="lhhrtd7" class=spctrl></div>   UDP 26444=Trin00/TFN2K <br> <div id="ldfpjbt" class=spctrl></div>   UDP 26573=Sub-7 2.1 <br> <div id="ptnxpzr" class=spctrl></div>   UDP 27184=Alvgus trojan 2000 <br> <div id="7dnvfh7" class=spctrl></div>   UDP 27444=Trinoo <br> <div id="pnxfxp9" class=spctrl></div>   UDP 29589=KiLo <br> <div id="9zrb9jz" class=spctrl></div>   UDP 29891=The Unexplained <br> <div id="nzzrbl7" class=spctrl></div>   UDP 30103=NetSphere <br> <div id="xhrlltt" class=spctrl></div>   UDP 31320=Little Witch <br> <div id="jffh7bl" class=spctrl></div>   UDP 31335=Trin00 DoS Attack <br> <div id="ldfnzrt" class=spctrl></div>   UDP 31337=Baron Night, BO client, BO2, Bo Facil, BackFire, Back Orifice, DeepBO <br> <div id="fhjd7zb" class=spctrl></div>   UDP 31338=Back Orifice, NetSpy DK, DeepBO <br> <div id="bvpzj7b" class=spctrl></div>   UDP 31339=Little Witch <br> <div id="xbdnphz" class=spctrl></div>   UDP 31340=Little Witch <br> <div id="j7x7tbv" class=spctrl></div>   UDP 31416=Lithium <br> <div id="lxpzr77" class=spctrl></div>   UDP 31787=Hack aTack <br> <div id="xhzbddd" class=spctrl></div>   UDP 31789=Hack aTack <br> <div id="7ppjrrj" class=spctrl></div>   UDP 31790=Hack aTack <br> <div id="7jdn9bl" class=spctrl></div>   UDP 31791=Hack aTack <br> <div id="j7dlnxh" class=spctrl></div>   UDP 33390=未知木马 <br> <div id="9xzz9nn" class=spctrl></div>   UDP 34555=Trinoo <br> <div id="fbtdv7z" class=spctrl></div>   UDP 35555=Trinoo <br> <div id="9x7nnvx" class=spctrl></div>   UDP 43720=KiLo <br> <div id="pbtvnvp" class=spctrl></div>   UDP 44014=Iani <br> <div id="jfphrbd" class=spctrl></div>   UDP 44767=School Bus <br> <div id="hvhrtvd" class=spctrl></div>   UDP 46666=Taskman <br> <div id="r7xhxh7" class=spctrl></div>   UDP 47262=Delta Source <br> <div id="zdfpppp" class=spctrl></div>   UDP 47624=Direct Play Server <br> <div id="tr9j7hx" class=spctrl></div>   UDP 47785=KiLo <br> <div id="htddxpj" class=spctrl></div>   UDP 49301=OnLine keyLogger <br> <div id="hdfh9p7" class=spctrl></div>   UDP 49683=Fenster <br> <div id="xbdp7hp" class=spctrl></div>   UDP 49698=KiLo <br> <div id="flblnpz" class=spctrl></div>   UDP 52901=Omega <br> <div id="vr9jjjr" class=spctrl></div>   UDP 54320=Back Orifice <br> <div id="lpzr979" class=spctrl></div>   UDP 54321=Back Orifice 2000 <br> <div id="bp7hjjj" class=spctrl></div>   UDP 54341=NetRaider Trojan <br> <div id="lxjbbjt" class=spctrl></div>   UDP 61746=KiLO <br> <div id="fv7tbtj" class=spctrl></div>   UDP 61747=KiLO <br> <div id="pbvfh7t" class=spctrl></div>   UDP 61748=KiLO <br> <div id="zdxjbjj" class=spctrl></div>   UDP 65432=The Traitor <div id="znhb7jb" class=bpctrl></div> <h2 class=""> <div id="rl9xxhx" class=text_edit>[<a onclick="userLogin(3,0);Detect.url='http://baike.baidu.com/edit/id=642103&dl=4';Detect.id=642103;return false;" ><u>~辑本段</u></a>]</div> <a name=4></a>怎样查看端口</h2>   一台服务器有大量的端口在用,怎么来查看端口呢Q有两种方式Q?一U是利用pȝ内置的命令,一U是利用W三方端口扫描Y件?<br> <div id="prd79xx" class=spctrl></div>   1.?#8220;netstat Qan”查看端口状?<br> <div id="nrz79nn" class=spctrl></div>   在Windows 2000/XP中,可以在命令提C符下?#8220;netstat -an”?看系l端口状态,可以列出pȝ正在开攄端口号及其状态. <br> <div id="vztnxnf" class=spctrl></div>   2.用第三方端口扫描软g <br> <div id="97l9zrb" class=spctrl></div>   W三方端口扫描Y件有许多Q界面虽然千差万别,但是功能却是cM 的。这里以“Fport” Q可到http://www.ccert.edu.cn/tools/index.php?type_t=7或http://www.cci dnet.com/soft/cce下蝲Qؓ例讲解?#8220;Fport”在命令提C符下用,q行l果 ?#8220;netstat -an”怼Q但是它不仅能够列出正在使用的端口号及类型,q可 以列出端口被哪个应用E序使用?br> <div id="bxjbntv" class=spctrl></div>   3.?#8220;netstat -n”命oQ以数字格式昄地址和端口信息? <div id="9jdnxpx" class=bpctrl></div> <h2 class=""> <div id="xvffrjb" class=text_edit>[<a onclick="userLogin(3,0);Detect.url='http://baike.baidu.com/edit/id=642103&dl=5';Detect.id=642103;return false;" ><u>~辑本段</u></a>]</div> <a name=5></a>端口号很多是奇数的原?/h2>   如果仔细查这些标准的单服务以及其他标准的TCP/IP服务Q如Telnet、FTP?SMTP{)的端口号Ӟ我们发现它们都是奇数。这是有历史原因的,因ؓq些端口号都是从NCP端口h生出来的QNCPQ即|络控制协议Q是ARPANET的运输层协议Q是TCP的前w)。NCP是单工的Q不是全双工的,因此每个应用E序需要两个连接,需预留一对奇数和偶数端口受当TCP和UDP成ؓ标准的运输层协议Ӟ每个应用E序只需要一个端口号Q因此就使用了NCP中的奇数?<br> <img src ="http://www.shnenglu.com/prayer/aggbug/80940.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/prayer/" target="_blank">Prayer</a> 2009-04-24 14:37 <a href="http://www.shnenglu.com/prayer/archive/2009/04/24/80940.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>TCP的流量控?http://www.shnenglu.com/prayer/archive/2009/04/20/80527.htmlPrayerPrayerMon, 20 Apr 2009 05:12:00 GMThttp://www.shnenglu.com/prayer/archive/2009/04/20/80527.htmlhttp://www.shnenglu.com/prayer/comments/80527.htmlhttp://www.shnenglu.com/prayer/archive/2009/04/20/80527.html#Feedback0http://www.shnenglu.com/prayer/comments/commentRss/80527.htmlhttp://www.shnenglu.com/prayer/services/trackbacks/80527.html本文档的Copyleft归yfydz所有,使用GPL发布Q可以自由拷贝,转蝲Q{载时请保
持文档的完整性,严禁用于M商业用途?br>msn: yfydz_no1@hotmail.com
来源Q?a >http://yfydz.cublog.cn
参考文? RFC2581, RFC3390
 
1. 前言
 
TCP是具备流控和可靠q接能力的协议,为防止TCP发生拥塞或ؓ提高传输效率Q在|?br>l发展早期就提出了一些相关的TCP控和优化算法,而且也被RFC2581规定是每?br>TCP实现时要实现的?/div>
 
本文中,为求方便把将“TCP分组D?segment)”都直接称?#8220;?#8221;?/div>
 
2. 慢启?slow start)和拥塞避?Congestion Avoidance)
 
慢启动和拥塞避免是属于TCP发送方必须(MUST)要实现的Q防止TCP发送方向网l传入大量的H发数据造成|络d?/div>

先介l几个相兛_敎ͼ是在通信双方中需要考虑但不在TCP包中体现的一些参敎ͼ

拥塞H口(congestion windowQcwnd)Q是指发送方在接收到Ҏ的ACK认前向允许|络发送的数据量,数据发送后Q拥塞窗口羃;接收到对方的ACK后,拥塞H口相应增加Q拥塞窗口越大,可发送的数据量越大?/strong>拥塞H口初始值的RFC2581中被规定Z过发送方MSS的两倍,而且不能过两个TCP包,在RFC3390中更C初始H口大小的设|方法?/div>

通告H口(advertised windowQrwnd)Q是指接收方所能接收的没来得及发ACK认的数据量Q接收方数据接收后,通告H口~小Q发送ACK后,通告H口相应扩大?/strong>

慢启动阈?slow start threshold, ssthresh)Q用来判断是否要使用慢启动或拥塞避免法来控制流量的一个参敎ͼ也是随通信q程不断变化的?/div>

当cwnd < ssthreshӞ拥塞H口值已l比较小了,表示未经认的数据量增大Q需要启动慢启动法Q当cwnd > ssthreshӞ可发送数据量大,需要启动拥塞避免算法?/div>

拥塞H口cwnd是根据发送的数据量自动减的Q但扩大需要根据对方的接收情况q行扩大Q慢启动和拥塞避免算法都是描q如何扩大该值的?/strong>

在启动慢启动法ӞTCP发送方接收到对方的ACK后拥塞窗口最多每ơ增加一个发送方MSS字节的数|当拥塞窗口超qsshresh后或观察到拥塞才停止法?/div>

启动拥塞避免法Ӟ拥塞H口在一个连接往q时间RTT内增加一个最大TCP包长度的量,一般实现时用以下公式计:
      cwnd += max(SMSS*SMSS/cwnd, 1)            Q?.1)
SMSS为发送方MSS?/div>

TCP发送方到数据包丢失时Q需要调整ssthreshQ一般按下面公式计算Q?/div>
      ssthresh = max (FlightSize / 2, 2*SMSS)    (2.2)
其中FlightSize表示已经发送但q没有被认的数据量?/div>
 
3. 快速重?fast retransmit)和快速恢?fast recovery)

TCP接收Ҏ到错序的TCP包时要发送复制的ACK包回应,提示发送方可能出现|络丢包Q发送方
收到q箋3个重复的ACK包后启动快速重传算法,Ҏ认号快速重传那个可能丢q包而不必等
重传定时器超时后再重传,普通的重传是要{到重传定时器超时还没收到ACK才进行的。这个算
法是TCP发送方应该(SHOULD)实现的,不是必须。TCP发送方q行了快速重传后q入快速恢复阶D?br>Q直到没再接攉复的ACK包?/div>

快速重传和快速恢复具体过EؓQ?br>1. 当收到第3个重复的ACK包时Qssthreh值按公式2.2重新讄Q?/div>
2. 重传丢失的包后,拥塞窗口cwnd讄为sshresh+3*SMSSQh工扩大了拥塞H口Q?/div>
3. 对于每个接收到的重复的ACK包,cwnd相应增加SMSSQ扩大拥塞窗口;
4. 如果新的拥塞H口cwnd值和接收方的通告H口值允许的话,可以l箋发新包;
5. 当收C一个ACK认了新数据Ӟcwnd大小调整为sshreshQ减窗口;Ҏ收方
   来说Q接收到重发的TCP包后p发此ACK认当前接收的数据?/div>
 
4. l论
q些法重点在于保持|络的可靠性和可用性,防止|络d造成的网l崩溃,是相?br>比较保守的?/div>

5. 附录讨论

A? q些法都是针对通信双方的事, 但如果从开发防火墙{中间设备的角度来看,
     中间讑֤有必要考虑q些?
端木: q个...我好象也看不出必要性,因ؓ法的参数都是在双方内部而不在TCP数据?br>      中体?..但应该会让中间设备轻杄Q这个就象在马\开车,q些法是交规
      让你开得规矩点Q交警只兛_你开车的情况Q而不你开的是什么RQ开得好交警
      也轻松。好车可以让你很Ҏ开好,但差车也可以开好?/div>

A? q些法原型提出也很早了, 最早是88q的? 当时|络都处于初U阶D? 有个
     9600bps的猫很牛了, 计算机性能也很? 因此实施q些法q有点用; 但现
     在过了快20q了, 癑օ都快淘汰, 千兆, 万兆|络都快普及? 即PC机的内存
     也都上G?再规矩这U几KU别的数据量有意思么? 好象现在喷气式战斗机都?/div>
     W?代了, 再研I螺旋桨战斗有意思么?
端木: q个...q个p病毒库了, 里面不也有无数的DOS时代的病? 你以后这辈子估计
      都见不着的,但没有哪个防病毒厂商会把q些病毒从库中剔除,库是只增不减的?br>      有这么个东西也是一P正因为^时没用,谁也不注意,知道了就可以吹一吹,
      其拿去唬唬人是很有效的Q?/div>

A? 你真无聊!
端木: You got it! 不无聊干吗写博客?

端木: 搞技术有时候是很悲哀的一件事Q必ȝ扯七大姑八大姨的很多老东西,也就是向?br>      兼容Q到一定程度将成ؓq一步发展的最大障,讲一个从smth看到的不是笑?/div>
      的笑话:

    C铁\的铁轨间距是4英尺8?英寸Q铁轨间距采用了电R轮距的标准,而电车轮?br>的标准则沿袭了马车的轮距标准?
    马R的轮距ؓ何是4英尺8?英寸Q原来,英国的马路辙q的宽度?英尺8?英寸?br>如果马R改用其他寸的轮距,轮子很快׃在英国的老马路上撞坏?
    英国马\的辙q宽度又从何而来Q这可以上溯到古|马时期。整个欧z?包括英国)的老\都是|马Zؓ其军队铺讄Q?英尺8?英寸正是|马战R的宽度?
    |马战R的宽度又是怎么来的Q答案很单,它是牵引一辆战车的两匹马的屁股的d度?
    D子到这里还没有l束。美国航天飞机的火箭助推器也摆脱不了马屁股的U缠———火助推器造好之后要经q铁路运送,而铁路上必然有一些隧道,隧道的宽度又是根据铁轨的宽度而来。代表着端U技的火助推器的宽度,竟然被两匚w的屁股的d度决定了?


Prayer 2009-04-20 13:12 发表评论
]]>TCP/IP之TCP协议Q?Q:量控制Q滑动窗口协议)http://www.shnenglu.com/prayer/archive/2009/04/20/80519.htmlPrayerPrayerMon, 20 Apr 2009 03:34:00 GMThttp://www.shnenglu.com/prayer/archive/2009/04/20/80519.htmlhttp://www.shnenglu.com/prayer/comments/80519.htmlhttp://www.shnenglu.com/prayer/archive/2009/04/20/80519.html#Feedback0http://www.shnenglu.com/prayer/comments/commentRss/80519.htmlhttp://www.shnenglu.com/prayer/services/trackbacks/80519.html
2、窗口有3U动作:展开Q右边向叻IQ合拢(左边向右Q,收羃Q右边向左)q三U动作受接收端的控制?br>
合拢Q表C已l收到相应字节的认?br>
展开Q表C允许缓存发送更多的字节

收羃Q非怸希望出现的,某些实现是禁止的Q:表示本来可以发送的Q现在不能发送;但是如果收羃的是那些已经发出的,׃有问题;Z避免Q收端会{待到缓存中有更多缓存空间时才进行通信?br>
发端H口的大取决于收端的窗口大rwndQTCP报文的窗口大字D)和拥塞窗口大cwndQ见拥塞控制Q?br>
发端H口大小 = min{ rwnd , cwnd };

3、关闭窗口:H口~回有个例外Q就是发送rwnd=0表示暂时不愿意接收数据。这U情况下Q发端不是把H口收羃Q二是停止发送数据。(Z比避免死锁,会用一些探报定时发送试探,见定时器一节)

4、问题:某些时候,׃发端或收端的数据很慢Q会引v大量?字节数据痛惜Q浪费很多资源?br>
Q?Q、发端的q程产生数据很慢时候,时不时的来个1字节数据Q那么TCP׃1字节1字节的发送,效率很低?br>
解决ҎQNagle法Q:

a、将W一块数据发出去

b、然后等到发送缓存有_多的数据Q最大报文段长度Q,或者等到收端确认的ACK时再发送数据?br>
c、重复b的过E?br>
Q?Q、收端进E由于消耗数据很慢,所以可能会有这么一U情况,收端会发送其H口大小?的信息,然后有是1字节的传?br>
解决办法Q?U)

a、ClarkҎQ在接收~存的一半变I,或者有_I间放最大报文长度之前,宣告接收H口大小?

b、推q确认:在对收到的报文段认之前{待到够的接收~存Q或者等待到一个时间段Q现在一般定?00msQ?br>



Prayer 2009-04-20 11:34 发表评论
]]>
量控制和拥塞控?/title><link>http://www.shnenglu.com/prayer/archive/2009/04/20/80517.html</link><dc:creator>Prayer</dc:creator><author>Prayer</author><pubDate>Mon, 20 Apr 2009 03:30:00 GMT</pubDate><guid>http://www.shnenglu.com/prayer/archive/2009/04/20/80517.html</guid><wfw:comment>http://www.shnenglu.com/prayer/comments/80517.html</wfw:comment><comments>http://www.shnenglu.com/prayer/archive/2009/04/20/80517.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/prayer/comments/commentRss/80517.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/prayer/services/trackbacks/80517.html</trackback:ping><description><![CDATA[拥塞QCongestionQ指的是在包交换|络中由于传送的包数目太多,而存贮{发节点的资源有限而造成|络传输性能下降的情c拥塞的一U极端情冉|死锁QDeadlockQ,退出死锁往往需要网l复位操作?<br>量控制QFlow ControlQ指的是在一条通道上控制发送端发送数据的数量及速度使其不超q接收端所能承受的能力Q这个能力主要指接收端接收数据的速率及接收数据缓冲区的大。通常采用停等法或滑动H口法控制流量?<br><strong>量控制是针对端pȝ中资源受限而设|的</strong>Q拥塞控制是针对中间节点资源受限而设|的? <img src ="http://www.shnenglu.com/prayer/aggbug/80517.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/prayer/" target="_blank">Prayer</a> 2009-04-20 11:30 <a href="http://www.shnenglu.com/prayer/archive/2009/04/20/80517.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>socket服务器端如何判断q接已经断开http://www.shnenglu.com/prayer/archive/2009/04/14/79903.htmlPrayerPrayerTue, 14 Apr 2009 08:27:00 GMThttp://www.shnenglu.com/prayer/archive/2009/04/14/79903.htmlhttp://www.shnenglu.com/prayer/comments/79903.htmlhttp://www.shnenglu.com/prayer/archive/2009/04/14/79903.html#Feedback0http://www.shnenglu.com/prayer/comments/commentRss/79903.htmlhttp://www.shnenglu.com/prayer/services/trackbacks/79903.html在阻塞模式下  recvq回值是0的时?nbsp; 客户端就退Z



Prayer 2009-04-14 16:27 发表评论
]]>如何判断socket已经断开http://www.shnenglu.com/prayer/archive/2009/04/14/79900.htmlPrayerPrayerTue, 14 Apr 2009 08:22:00 GMThttp://www.shnenglu.com/prayer/archive/2009/04/14/79900.htmlhttp://www.shnenglu.com/prayer/comments/79900.htmlhttp://www.shnenglu.com/prayer/archive/2009/04/14/79900.html#Feedback5http://www.shnenglu.com/prayer/comments/commentRss/79900.htmlhttp://www.shnenglu.com/prayer/services/trackbacks/79900.htmlq个问题在思考测试,询问同事之后Q找C一个方法,可以做到q一炏V?br>当?select()函数试一个socket是否可读Ӟ如果select()函数q回gؓ1Q且使用recv()函数d的数据长度ؓ0 Ӟp明该socket已经断开?br>Z更好的判定socket是否断开Q我判断当recv()q回值小于等?Ӟsocketq接断开。但是还需要判?errno是否{于 EINTR 。如果errno == EINTR 则说明recv函数是由于程序接收到信号后返回的Qsocketq接q是正常的,不应close掉socketq接?br>
PSQ对于堵塞socket的recv函数会在以下三种情况下返回:
Q?Qrecv到数据时Q会q回?br>Q?Q在整个E序接收ChQ返?1?strong>errno = EINTR?/在程序的起始阶段Q屏蔽掉信号的除外。部分信可是屏蔽不掉的?br>Q?Qsocket出现问题Ӟq回-1.具体错误码看 man recv()
Q?Q一定要?man 说明Q很详细Q很有帮助?br>q种Ҏl过长时间测试后Q是有效的。所以写出来让大家参考一下,请大家发表意见?

Prayer 2009-04-14 16:22 发表评论
]]>
FreeBSD6.3下双|卡l定详细q程 http://www.shnenglu.com/prayer/archive/2009/04/13/79778.htmlPrayerPrayerMon, 13 Apr 2009 02:38:00 GMThttp://www.shnenglu.com/prayer/archive/2009/04/13/79778.htmlhttp://www.shnenglu.com/prayer/comments/79778.htmlhttp://www.shnenglu.com/prayer/archive/2009/04/13/79778.html#Feedback0http://www.shnenglu.com/prayer/comments/commentRss/79778.htmlhttp://www.shnenglu.com/prayer/services/trackbacks/79778.htmlq几天公叔R的服务器要用bondingQ主要是做双|卡的冗余,|上说的最多的是《FreeBSD上双|卡l定提高带宽的做法》,研究了一下,把结?l大家说_ linux的很单,q里׃说了Q照|上的资料就行了。freebsd的有点小隑ֺQ搞了几天,最初用lagg模块Q照手册里的“链\聚合与故障{U?#8221; 部分做,做是做成的但是就是不能冗余,拔掉|络׃通了Q最后决定用ng_fecg来做Q下面是q程?br minmax_bound="true">

FreeBSD上双|卡l定提高带宽的做法里Q第3部分Q《在FreeBSD5上用ng_fec实现双网卡绑定》,脚本的第一句就?sbin/kldload ng_fecQ要加蝲ng_fec Q如果你没有安装此模块,是加载不上的?br minmax_bound="true">
#使用kldstat查看模块Q没有ng_fecQ需要安装ƈ加蝲(不用?v参数Q否则出来一堆,看都看不q来)
# kldstat   
Id Refs Address            Size     Name
1    1 0xffffffff80100000 8a2e40   kernel

#cd /usr/src/sys/modules/netgraph/
把下面三个模块安装了
netgraph fec socket
安装Ҏ如下Q直接进入到相应的目录,然后Q?br minmax_bound="true">#make
#make install
#ls /boot/modules
ng_fec.ko netgraph.ko ng_socket.ko

#vi /boot/defaults/loader.conf
扑ֈng_fecQether,socketq改成YES,让它可以自带加蝲(l测试不改系l也能自动加?
ng_ether_load="YES"
ng_fec_load="YES"
ng_socket_load="YES"
然后重启pȝ?br minmax_bound="true">再用kldstat查看加蝲情况
-bash-3.2$ kldstat
Id Refs Address            Size     Name
1    4 0xffffffff80100000 8a2e40   kernel
2    1 0xffffffff809a3000 104400   ng_fec.ko
3    3 0xffffffff80aa8000 10f0d8   netgraph.ko
4    1 0xffffffff811cb000 104000   ng_socket.ko


#vi /etc/fec.sh
#!/bin/sh
/usr/sbin/ngctl mkpeer fec dummy fec
/usr/sbin/ngctl msg fec0: add_iface '"bce0"'
/usr/sbin/ngctl msg fec0: add_iface '"bce1"'
/usr/sbin/ngctl msg fec0: set_mode_inet
/sbin/ifconfig fec0 promisc
/sbin/ifconfig bce0 promisc
/sbin/ifconfig bce1 promisc
/sbin/ifconfig fec0 此处写IP netmask 0xfffffe00
/sbin/ifconfig fec0 media 1000baseTX mediaopt full-duplex
/sbin/ifconfig fec0 up
/sbin/route add default 此外写默认网?br minmax_bound="true">
#vi /etc/rc.local
/etc/fec.sh

记得把rc.conf讄|卡的语句屏蔽掉Q然后重启系l?br minmax_bound="true">

#ifconfig
bce0: flags=28943 mtu 1500
        options=3b
        ether 00:1e:0b:ed:64:1c
        media: Ethernet autoselect (1000baseTX )
        status: active
bce1: flags=28943 mtu 1500
        options=3b
        ether 00:1e:0b:ed:64:1c
        media: Ethernet autoselect (1000baseTX )
        status: active
lo0: flags=8049 mtu 16384
        inet 127.0.0.1 netmask 0xff000000
fec0: flags=28943 mtu 1500
        inet xxx.xxx.xxx.xxx netmask 0xfffffe00 broadcast xxx.xxx.xxx.255
        ether 00:1e:0b:ed:64:1c
        media: Ethernet none
        status: active



Prayer 2009-04-13 10:38 发表评论
]]>
socketl定|卡http://www.shnenglu.com/prayer/archive/2009/04/13/79776.htmlPrayerPrayerMon, 13 Apr 2009 02:35:00 GMThttp://www.shnenglu.com/prayer/archive/2009/04/13/79776.htmlhttp://www.shnenglu.com/prayer/comments/79776.htmlhttp://www.shnenglu.com/prayer/archive/2009/04/13/79776.html#Feedback0http://www.shnenglu.com/prayer/comments/commentRss/79776.htmlhttp://www.shnenglu.com/prayer/services/trackbacks/79776.html如果机器上有多块|卡Q两个网卡处在不同的|段中,q在我们实验室还是很常见的,两个|卡有不同的默认|关。socket需要绑定相应的|卡Q将数据包发送到指定的网卡上?/p>

上一D|试代码:


#include <sys/socket.h>
#include <net/if.h>
struct ifreq interface;
struct socket sock;
/* Management net interface name */
#define IFNAME "eth1"
 
/* Acquire socket here ... */
 
strncpy(interface.ifr_ifrn.ifrn_name, IFNAME, \
IFNAMSIZ);
if (setsockopt(sock, SOL_SOCKET, SO_BINDTODEVICE, \
(char *)&interface, sizeof(interface)) < 0) {
perror("SO_BINDTODEVICE failed");
/* Deal with error... */
}

参考:
http://blog.chinaunix.net/u/270/showart_234383.html
http://tuxology.net/2008/05/15/forcing-connections-through-a-specific-interface/

文章出处QDIY部落(http://www.diybl.com/course/6_system/linux/Linuxjs/20090314/161536.html)



Prayer 2009-04-13 10:35 发表评论
]]>
޹þþۺ| ۺɫۺϾþۺ| þˬˬƬAV| ĻþӰԺ| þó˹Ʒ| 99þþùƷţ| þһٸ| þ޹˾Ʒ| þþƵ| þþۺϾɫۺ98| þþþƷҰ| þseֻоƷ| ޹㽶ˬAVƬþ| þþþø߳ëƬȫ| ˾Ʒþһav | þZYZԴվĶ| þ99Ļþ| ŷձþùʵҶ԰| ޾Ʒþһ| ƷѾþþþӰԺ| 99þҹҹƷ| þerƷѹۿ2| ˾þۺӰԺ| ŷۺҹҹþ| ƷһþaaaƬ| Ʒ99þþþþլ | þùۺϾƷ| þۺɫHEZYO| žžƷ99þþ㽶| ۺϳ˾þС˵| þ99Ʒþþþþþò| ɫۺϾþҹɫƷ| ŷþþþ| þþƷһ99| ˾þav| þۺϾɫۺŷȥ| þþþþþۺձ| ɫۺϾþ| 㽶þþþþúݺɫ| þþƷA㽶| ŷþۺŷ|