XMPP 3920 ×î¿¿Æ×µÄÖÐÎÄ·­ÒëÎĵµ

XMPP 3920 ×î¿¿Æ×µÄÖÐÎÄ·­ÒëÎĵµ£¨Ò»£©

xmppЭÒéÖ® ¿ÉÀ©Õ¹ÏûÏ¢³öϯЭÒ飺ºËÐÄ RFC 3920

ͻ񻣼

´ËÎĵµ¶¨ÒåÁË¿ÉÀ©Õ¹ÏûÏ¢³öϯЭÒ飨XMPP£©µÄºËÐÄÌØÐÔ£ºÐ­ÒéʹÓÃXMLÔªËØÔÚÈÎÒâÁ½¸öÍøÂç¶Ëµã¼ä½üʵʱµÄ½»»»½á¹¹»¯ÐÅÏ¢¡£µ±XMPPΪ½»»»XMLÊý¾ÝÌṩһ°ã»¯£¬¿ÉÀ©Õ¹µÄ¿ò¼Üʱ£¬ËüÖ÷ÒªÓÃÓÚ½¨Á¢Âú×ãRFC2779µÄ¼´Ê±ÏûÏ¢Óë³öϯӦÓõÄÐèÇó¡£ 1 ½éÉÜ 1.1 ¸ÅÒª

XMPPÊÇÒ»¸ö¿ª·ÅµÄ¿ÉÀ©Õ¹±ê¼ÇÓïÑÔ[XML]ЭÒ飬ÓÃÓÚ½üʵʱµÄÏûÏ¢¡¢³öϯÓëÇëÇó-ÏìÓ¦·þÎñ¡£»ù±¾Óï·¨ÓïÒå×î³õÊÇÓÉJabber¿ªÔ´ÉçÇøÔÚ1999Ä꿪 ·¢µÄ¡£2002Ä꣬XMPP¹¤×÷×éÊÚȨ¿ª·¢Ò»¸öJabberЭÒéµÄ¸Äд±¾£¬½«ÊÊÓÃÓÚIETFµÄ¼´Ê±ÏûÏ¢£¨IM£©Óë³öϯ¼¼Êõ¡£ ×÷ΪXMPP¹¤×÷×éµÄ³É¹û£¬´ËÎĵµ¶¨ÒåÁËXMPP 1.0µÄºËÐÄÄÚÈÝ£»Ìṩ¼´Ê±ÏûÏ¢Óë³öϯ¹¦ÄܵÄÀ©Õ¹ÐèÇó¶¨ÒåÔÚRFC2779[IM-REQS]ÖУ¬ÓÉXMPP£º¼´Ê±ÏûÏ¢Óë³öϯ[XMPP-IM]Ö¸¶¨¡£ 1.2 ÊõÓï

ÎĵµÖеĴóд¹Ø¼ü×Ö£º\\NOT\\\\NOT\\\NOT\\\\ÔÚBCP14, ÔÚRFC 2119 [TERMS]ÖÐÃèÊö¡£ 2 Ò»°ã¼Ü¹¹ 2.1 ¸ÅÊö

ËäÈ»XMPP²¢Î´ÓëÈκÎÌØ¶¨ÍøÂç¼Ü¹¹½áºÏ£¬µ«µ½Ä¿Ç°ÎªÖ¹£¬Ëü´óÖÂÉÏÒѾ­ÓÉÒ»¸ö¿Í»§-·þÎñÆ÷µÄ¼Ü¹¹ÊµÏÖÁË¡£ÆäÖУ¬¿Í»§¶ËÀûÓÃXMPP·ÃÎÊ»ùÓÚ[TCP]Á¬½ÓµÄÒ»¸ö·þÎñÆ÷£¬²¢ÇÒ£¬·þÎñÆ÷¼äҲͨ¹ýTCPÁ¬½Ó½øÐб˴˼äµÄͨÐÅ¡£ XMPP

Client------------Server------------Server TCP TCP

ÏÂͼΪ´Ë¼Ü¹¹µÄ¸ß²ãÊÓͼ£¨¡°-¡±±íʾʹÓÃXMPPͨÐÅ£¬¡°=¡±±íʾʹÓÃÈÎºÎÆäËüЭ

ÒéͨÐÅ£©

C1----S1---S2---C3 |

C2----+--G1===FN1===FC1 ·ûºÅ±íʾÈçÏ£º

1£© C1£¬C2£¬C3 = XMPP¿Í»§¶Ë 2£© S1£¬S2 = XMPP·þÎñÆ÷

3£© G1 = Íø¹Ø£ºÔÚXMPPÓëÍⲿЭÒ飨·ÇXMPP£©µÄÏûÏ¢ÍøÂç¼äת»»¡£ 4£© FN1 = ÍⲿÏûÏ¢ÍøÂç 5£© C1 = ÍⲿÏûÏ¢ÍøÂçµÄ¿Í»§¶Ë 2.2 ·þÎñÆ÷

·þÎñÆ÷×÷ΪXMPPͨÐŵ£µ±ÖÇÄܳéÏó²ã¡£ËüµÄÖ÷ÒªÔðÈÎÊÇ£º

1£© ¹ÜÀíÁ¬½ÓÆäËüʵÌåµÄ»á»°£¬ÒÔXMLÁ÷¸ñʽ£¨µÚ4½Ú£©ÔÚÒÑÊÚȨµÄ¿Í»§¶Ë¡¢·þÎñÆ÷ÒÔ¼°ÆäËüʵÌå¼äÀ´»Ø´«ËÍ¡£

2£© ͨ¹ýXMLÁ÷ÔÚʵÌå¼ä·ÓɾßÓкÏÊʵØÖ·µÄXML½Ú£¨µÚ9½Ú£©¡£

´ó¶àÊýÓëXMPP¼æÈݵķþÎñÆ÷ÉèÏëÓÐÄÜÁ¦´æ´¢¿Í»§¶ËµÄÊý¾Ý£¨Àý£º»ùÓÚXMPP¼´Ê±ÏûÏ¢Óë³öϯӦÓõÄÓû§µÄÁªÏµÁÐ±í£©£»ÔÚÕâÖÖÇé¿öÏ£¬XMLÊý¾ÝÓÉ·þÎñÆ÷×ÔÉí´ú±í¿Í»§¶ËÖ±½Ó´¦Àí£¬²¢²»Â·Óɵ½ÆäËüʵÌå¡£ 2.3 ¿Í»§¶Ë

´ó¶àÊý¿Í»§¶Ëͨ¹ý[TCP]Á¬½ÓÖ±½ÓÁ¬µ½·þÎñÆ÷£¬²¢ÇÒʹÓÃXMPP£¬³ä·ÖÀûÓÃÓÉ·þÎñÆ÷¼°ÈκÎÏà¹Ø·þÎñËùÌṩµÄ¹¦ÄÜ¡£¶àÖÖ×ÊÔ´£¨ÀýÈ磺É豸»òλÖã©¿ÉÄÜ´ú±í ÿ¸ö±»ÊÚȨ¿Í»§¶ËͬʱÁ¬µ½·þÎñÆ÷ÉÏ¡£Ã¿¸ö×ÊÔ´¾ùÓɶ¨ÒåÔÚµØÖ··½°¸£¨µÚ3½Ú£©ÏµÄXMPPµØÖ·µÄ×ÊÔ´±êʶ·ûÀ´Çø±ð£¨ÀýÈ磺< [url=mailto:node@domain/home]node@domain/home[/url]> vs. <[url=mailto:node@domain/work]node@domain/work[/url]>£©¡£¿Í»§¶ËÓë·þÎñÆ÷µÄÍÆ¼öÁ¬ ½Ó¶Ë¿ÚΪ5222£¬ÒÑÓÉIANA×¢²á£¨²Î¿¼¶Ë¿Ú±àºÅ£¨15.9½Ú£©£©¡£ 2.4 Íø¹Ø

Íø¹ØÊÇ·þÎñÆ÷¶ËµÄÒ»ÖÖÌØÊâ·þÎñ£¬ËüµÄÖ÷Òª¹¦ÄÜÊǽ«XMPP·­Òë³ÉÍⲿÏûϢϵͳËùʹÓõÄЭÒ飨·ÇXMPP£©£¬Ò²¿É½«Êý¾Ý·­Òë»ØXMPP¡£ÀýÈçEMAILÍø¹Ø £¨²Î¿¼[SMTP]£©£¬Internet Relay Chat£¨²Î¿¼[IRC]£©£¬SIMPLE£¨²Î¿¼[SIIMPLE]£¬Session Initiation Protocol for Instant Messaging and Presence Leveraging Extensions£©£¬¶ÌÏûÏ¢·þÎñ£¨SMS£©£¬ÒÅÁô

¼´Ê±ÏûÏ¢·þÎñ£¬ÖîÈçAIM£¬ICQ£¬MSN Messenger£¬Yahoo! Instant Messenger¡£Íø¹ØÓë·þÎñÆ÷¼äµÄͨÐÅ£¬Íø¹ØÓëÍⲿÏûϢϵͳ¼äµÄͨÐÅ£¬¾ùδÔÚ´ËÎĵµÖж¨Òå¡£ 2.5 ÍøÂç

ÓÉÓÚÿ¸ö·þÎñÆ÷ÓÉÍøÂçµØÖ·Ö¸¶¨£¬²¢ÇÒÓÉÓÚ·þÎñÆ÷Óë·þÎñÆ÷¼äµÄͨÐÅÊǿͻ§Óë·þÎñÆ÷ЭÒéµÄÖ±½ÓÀ©Õ¹£¬Êµ¼ÊÉÏ£¬ÏµÍ³ÓÉ»¥ÏàͨÐŵķþÎñÆ÷ÍøÂç×é³É¡£¾Ù¸öÀý ×Ó£¬<[url=mailto:juliet@example.com]juliet@example.com[/url]>ÄÜÓë&

lt;[url=mailto:romeo@example.net]romeo@example.net[/url]>½»»»ÏûÏ¢¡¢³öϯ£¬ÒÔ¼°ÆäËü ÐÅÏ¢¡£ÕâÊÇʹÓÃÍøÂçѰַ±ê×¼µÄÏûϢЭÒ飨ÀýÈç[SMTP]£©ËùÊìϤµÄģʽ¡£ÈÎÒâÁ½·þÎñÆ÷¼äµÄͨÐÅÊÇ¿ÉÑ¡µÄ¡£Èç¹û¿ÉͨÐÅ£¬´ËÀàͨОÍÓ¦µ±·¢ÉúÔڰ󶨵½ [TCP]Á¬½ÓµÄXMLÁ÷ÉÏ¡£·þÎñÆ÷¼äÁ¬½ÓµÄÍÆ¼ö¶Ë¿ÚΪ5269£¬ÓÉIANA×¢²á£¨²Î¿¼¶Ë¿Ú±àºÅ£¨15.9½Ú£©£© 3 Ѱַ·½°¸ 3.1 ¸ÅÊö

ʵÌå¿É±»¿´×÷ÊÇʹÓÃXMPP½øÐÐͨÐŵÄÈÎÒâÍøÂç¶Ëµã£¨ÀýÈ磺һ¸öÍøÂçÉϵÄID£©¡£ÈÎÒâ´ËÀàʵÌå¾ùÒÔÓëRFC2396[URI]Ò»ÖµĸñʽÀ´Î¨Ò»É趨µØÖ·¡£ ÓÉÓÚÀúÊ·Ô­Òò£¬XMPPʵÌåµÄµØÖ·³Æ×÷Jabber±êʶ·û»òJID¡£Ò»¸öÓÐЧJID°üº¬Ò»Ì×ÓÐÐòÔªËØ£ºÓò±êʶ·û£¬½áµã±êʶ·û£¬×ÊÔ´±êʶ·û¡£

JIDµÄÓï·¨¶¨ÒåÈçÏ£¬Ê¹ÓÃÔö¹ã°Í˹¿Æ·¶Ê½[ABNF]£¨Augmented Backus-Naur Form£©¡££¨Ipv4µØÖ·ÓëIpv6µØÖ·¹æÔò¶¨ÒåÔÚ[Ipv6]µÄ¸½Â¼B£»·ûºÏ½áµã¹æÔòµÄÔÊÐí×Ö·ûÐòÁÐÓÉNodeprep profile of [STRINGPREP]¶¨Ò壬±àÈë±¾ÎĵµµÄ¸½Â¼A£»·ûºÏ×ÊÔ´¹æÔòµÄÔÊÐí×Ö·ûÐòÁÐÓÉResourceprep profile of [STRINGPREP]¶¨Ò壬±àÈë±¾ÎĵµµÄ¸½Â¼B£»×ÓÓò¹æÔò²Î¿¼¹ú¼Ê»¯Óò±êʶµÄ¸ÅÄÔÚ[IDNA]ÖÐÓÐÊö£©¡£

jid = [ node \ domain = fqdn / address-literal

fqdn = (sub-domain 1*(\ sub-domain = (internationalized domain label) address-literal = IPv4address / IPv6address

ËùÓÐJID¾ù»ùÓÚǰÊö¹æÔò¡£´Ë½á¹¹×îÆÕͨµÄÓ÷¨¾ÍÊÇÓû§ÒÔ

<[url=mailto:user@host/resource]user@host /resource[/url]>ÐÎʽ±êʶһ¸ö¼´Ê±ÏûÏ¢Óû§¡¢Óû§Á¬½ÓµÄ·þÎñÆ÷¡¢Óû§Á¬½ÓµÄ×ÊÔ´£¨ÀýÈç£ºÌØ±ðµÄ¿Í»§¶Ë£©¡£

È»¶ø£¬½áµãÀàÐÍ¿ÉÄܲ»½öÊǿͻ§¶Ë£¬¾Ù¸öÀý×Ó£¬Ò»¸öÌṩ¶àÓû§ÁÄÌì·þÎñµÄÌØ±ðÁÄ

ÌìÊÒ£¬¿ÉÒÔÒÔ< [url=mailto:room@service]room@service[/url]>£¨¡°room¡±ÊÇÁÄÌìÊÒÃû£¬¡°service¡±ÊǶàÓà »§ÁÄÌì·þÎñµÄÖ÷»úÃû£©×÷ΪµØÖ·¡£²¢ÇÒ£¬´ËÁÄÌìÊÒµÄÌØ±ðÓµÓÐÕß¿ÉÄÜÒÔ< [url=mailto:room@service/nick]room@service/nick[/url]>£¨¡°nick¡±ÊÇ´ËÓµÓÐÕߵķ¿¼ä êdzƣ©×÷µØÖ·£¬Ðí¶àÆäËüJIDÀàÐ;ùÓпÉÄÜ£¨ÀýÈ磺¿ÉÄÜÊÇÒ»¸ö·þÎñÆ÷¶Ë½Å±¾»ò·þÎñ£©¡£

JID£¨½áµã±êʶ·û£¬Óò±êʶ·û£¬×ÊÔ´±êʶ·û£©µÄÿ¸ö¿ÉÔÊÐí²¿·Ö³¤¶È²»×¼³¬¹ý1023×Ö½Ú£¬½á¹û£¬×î´ó×ܳ¤¶È£¨°üÀ¨[url=mailto:¡®@¡¯]¡®@¡¯[/url]£¬¡®/¡¯·Ö¸ô·û£©Îª3071×Ö½Ú¡£ 3.2 Óò±êʶ·û

Óò±êʶ·ûÊÇ»ù±¾±êʶ·û£¬ÇÒÊÇJIDÖнöÓеÄÒ»¸ö±ØÐëµÄÔªËØ£¨½öÓÐÓò±êʶ·ûµÄJIDÊÇÓÐЧµÄ£©¡£Ëüͨ³£±íÊ¾ÍøÂçÍø¹ØÓë¡°Ö÷ÒªµÄ¡±·þÎñÆ÷£¬¾ßÓÐΪÆäËüʵÌå¼äµÄ Á¬½Ó½øÐÐXML·ÓÉÓëÊý¾Ý¹ÜÀíµÄÄÜÁ¦¡£È»¶ø£¬ÓÉÓò±êʶ·û×÷Ϊ²Î¿¼µÄʵÌå²¢²»×ÜÊÇ·þÎñÆ÷£¬Ëü¿ÉÄÜÊÇÒ»ÏîÒÔ·þÎñÆ÷×ÓÓòΪµØÖ·µÄ·þÎñ£¬Ìṩ¶àÓÚ·þÎñÆ÷£¨Àý£º¶àÓà »§ÁÄÌì·þÎñ£¬Óû§Ä¿Â¼£¬»òÍⲿÏûϢϵͳµÄÒ»¸öÍø¹Ø£©µÄ¹¦ÄÜ¡£

ÿ¸ö·þÎñÆ÷»ò·þÎñµÄÓò±êʶ·û½«Í¨¹ýÍøÂç½øÐÐͨÐÅ£¬Ëü¿ÉÄÜÊÇIPµØÖ·£¬²¢Ó¦µ±ÊÇÍêÈ«ºÏ·¨µÄÓòÃû£¨²Î¿¼[DNS]£©¡£Óò±êʶ·û±ØÐëÊÇÒ»¸ö¡°¹ú¼Ê»¯µÄÓòÃû¡±£¬¶¨ ÒåÔÚ[IDNA]£¬Nameprep [NAMEPREP] profile of stringprep [STRINGPREP]¿ÉÒÔÎÞ´íÓ¦ÓᣱȽÏÁ½¸öÓò±êʶ·û֮ǰ£¬·þÎñÆ÷±ØÐ루¿Í»§¶ËÊÇÓ¦¸Ã£©Ê×ÏȶԱêÇ©£¨¶¨ÒåÔÚ[IDNA]£©Ó¦ÓÃNameprep profile£¬ÒÔ²¹×ãÿ¸ö±êʶ·û¡£ 3.3 ½Úµã±êʶ·û

½áµã±êʶ·ûÊÇÒ»¸ö¿ÉÑ¡µÄ¸¨Öú±êʶ·û£¬·ÅÔÚÓò±êʶ·û֮ǰ£¬ºóÒÔ

[url=mailto:¡®@¡¯]¡®@¡¯[/url]×Ö·û·Ö¸ô¡£Ëüͨ³£±íʾʵÌåÇëÇóÓëʹÓÃÓÉ·þ ÎñÆ÷»òÍø¹Ø£¨ÀýÈ磺һ¸ö¿Í»§¶Ë£©ÌṩµÄÍøÂç·ÃÎÊ£¬ËäÈ»ËüÒ²ÄܱíʾÆäËüÖÖÀàµÄʵÌ壨ÀýÈ磺ÓжàÓû§ÁÄÌì·þÎñ¹¦ÄܵÄÁÄÌìÊÒ£©¡£Óɽáµã±êʶ·û±íʾµÄʵÌ壬ÔÚÌØ¶¨ ÓòÉÏÏÂÎÄÖУ¬ÔÚXMPP¼´Ê±ÏûÏ¢Óë³öϯӦÓÃÖб»¼ÓÒÔµØÖ·£¬´ËÀàµØÖ·³Æ×÷¡°bare JID¡±£¬ÐÎʽΪ<[url=mailto:node@domain]node@domain[/url]>

½áµã±êʶ·û±ØÐëÏñthe Nodeprep profile of [STRINGPREP]ÕâÑù¸ñʽ»¯£¬¿ÉÒÔÎÞ´íÓ¦ÓᣱȽÏÁ½¸ö½áµã±êʶ·û֮ǰ£¬·þÎñÆ÷±ØÐ루¿Í»§¶ËÓ¦¸Ã£©Ê×ÏȶÔÿ¸ö±êʶ·ûÓ¦ÓÃNameprep profile¡£ 3.4 ×ÊÔ´±êʶ·û

ÁªÏµ¿Í·þ£º779662525#qq.com(#Ìæ»»Îª@)