»ùÓڣӣɣÐÐÒéÈí½»»»Ä£Ð͵ÄÉè¼ÆÓëʵÏÖ_ͨÐŹ¤³Ì±ÏÒµÂÛÎÄ·¶ÎÄ
·¢²¼Ê±¼ä£º
2015-03-13
À´Ô´£º
ÈË´ó¾¼ÃÂÛ̳
»ùÓڣӣɣÐÐÒéÈí½»»»Ä£Ð͵ÄÉè¼ÆÓëʵÏÖ_ͨÐŹ¤³Ì±ÏÒµÂÛÎÄ·¶ÎÄ
ÕªÒª:±¾ÎÄÌá³öÁËÈí½»»»³öÏֵı³¾°ÒÔ¼°Èí½»»»¼¼ÊõÏà¹ØµÄÐÒé¡£ÒÔÃæÏò¶ÔÏóµÄ·½·¨ÔÚCiscoµÄVOCALÈí½»»»ÏµÍ³µÄ»ù´¡ÉÏ¿ª·¢ÁËÒ»¸öÆóÒµ¼¶Ó¦ÓõÄÈí½»»»Ä£ÐÍ£¬ÏµÍ³ÊÇ°´ÕÕÏÂÒ»´úÍøÂ磨NGN£©ÒÔ¼°Èí½»»»µÄ˼ÏëºÍ¼¼Êõ·ÏßÀ´Éè¼ÆºÍʵÏֵġ£
¹Ø¼ü´Ê:ÏÂÒ»´úÍøÂ磨NGN£©£»Èí½»»»£»SIPÐÒé
ÒýÑÔ
Ä¿Ç°´«Í³µÄ¹«ÖÚ½»»»µç»°Íø£¨PSTN£©ÉÏ´«ËÍ×ÅÐí¶àÊý¾ÝÒµÎñ£¬ÓÉÓÚ¿ìËÙÔö³¤µÄÊý¾ÝÒµÎñ¸ø²¢²»Êʺϴ«ËÍÊý¾ÝÒµÎñµÄµç»°ÍøÔì³ÉÁ˺ܴóµÄѹÁ¦¡£Òò´Ë£¬»ùÓÚ·Ö×é¼¼ÊõµÄÊý¾ÝÍøÓëµç·½»»»Íø×îÖձؽ«×ßÏòÈںϣ¬²úÉúÏÂÒ»´úÓÉÒµÎñÇý¶¯µÄÍøÂç¡£Èí½»»»ÊÇÏÂÒ»´úÍøÂç½»»»µÄºËÐÄ£¬Èç¹û˵´«Í³µçÐÅÍøÂçÊÇ»ùÓڳ̿ؽ»»»»úµÄÍøÂ磬¶øÏÂÒ»´úÍøÂçÔòÊÇ»ùÓÚÈí½»»»µÄÍøÂç¡£
1ϵͳ¿ª·¢µÄ¼¼Êõ»ù´¡
1.1Èí½»»»µÄ¸ÅÄî
ÎÒ¹úÐÅÏ¢²úÒµ²¿µçÐÅ´«ÊäÑо¿Ëù¶ÔÈí½»»»µÄ¶¨ÒåÊÇ£ºÈí½»»»ÊÇÍøÂçÑݽøÒÔ¼°ÏÂÒ»´ú·Ö×éÍøÂçµÄºËÐÄÉ豸֮һ£¬Ëü¶ÀÁ¢ÓÚ´«ËÍÍøÂ磬Ö÷ÒªÍê³Éºô½Ð¿ØÖÆ¡¢×ÊÔ´·ÖÅä¡¢ÐÒé´¦Àí¡¢Â·ÓÉ¡¢ÈÏÖ¤¡¢¼Æ·ÑµÈÖ÷Òª¹¦ÄÜ£¬Í¬Ê±¿ÉÒÔÏòÓû§ÌṩÏÖÓеç·½»»»»úËùÄÜÌṩµÄËùÓÐÒµÎñ£¬²¢ÏòµÚÈý·½Ìṩ¿É±à³ÌÄÜÁ¦¡£
1.2 SIPÐÒé½éÉÜ
»á»°³õʼ»¯ÐÒéSIP£¨Session Initiation Protocol£©ÊÇÒ»¸öÃæÏòInternet »áÒéºÍµç»°µÄ¼òµ¥ÐÅÁîÐÒ飬SIP×î³õÓÉIETF MMUSIC (Multiparty Multimedia Session Control) ¹¤×÷×éÌá³ö¡£ËüµÄÖ÷ҪĿµÄÊÇΪÁ˽â¾öIPÍøÖеÄ
ÐÅÁî¿ØÖÆ£¬ÒÔ¼°Í¬Èí½»»»»úµÄͨÐÅ£¬´Ó¶ø¹¹³ÉÐÂÒ»´úµÄͨÐÅƽ̨¡£
2 ϵͳµÄ×ÜÌåÉè¼ÆºÍʵÏÖ
2.1ϵͳµÄ²ã´Î½á¹¹
Èí½»»»²ÉÓÃÒµÎñÓë½»»»·ÖÀëµÄÉè¼Æ˼Ï룬ÔÚϵͳÉè¼Æ½á¹¹ÉϽ«Èí½»»»¼¼ÊõÓ¦ÓÃÉè¼ÆΪÈý²ã½á¹¹£¬µ×²ãΪÓû§½ÓÈë²ã£¬ÖмäΪ½»»»Ö§³Å²ã£¬×îÉÏÃæÊÇÒµÎñʵÏֲ㡣ϵͳµÄ²ã´Î½á¹¹Èçͼ1Ëùʾ¡£
2.2ºô½Ð¹ÜÀí·þÎñÆ÷µÄÉè¼ÆÓëʵÏÖ
ºô½Ð¹ÜÀí·þÎñÆ÷´¦ÓÚ¸ÃÌåϵ½á¹¹ÖеÄÍøÂç¿ØÖƲ㣬ËüÊÇÈí½»»»ÏµÍ³µÄºËÐIJ¿·Ö¡£ºô½Ð¹ÜÀí·þÎñÆ÷³ýÁËÍê³Éºô½Ð¿ØÖÆ¡¢Á¬½Ó¿ØÖƺÍÐÒé´¦Àí¹¦ÄÜÍ⣬»¹½«ÌṩÔÀ´ÓÉÍøÊØÉ豸ÌṩµÄ×ÊÔ´¹ÜÀí¡¢Â·ÓÉÒÔ¼°ÈÏÖ¤¡¢¼Æ·ÑµÈ¹¦ÄÜ¡£
Èí½»»»ÏµÍ³µÄÔËÐÐÐèÒªSIPÐÒéÕ»ºÍSDPÐÒéÕ»¡£¿Í»§¶ËÓ¦¸ÃÄܹ»²úÉúINVITEºÍACKÇëÇó£¬Äܹ»²úÉúºÍ½âÎöCall-ID£¬Content-Length£¬Content-Type£¬Cseq£¬FromºÍToÍ·²¿×ֶΡ£ºô½Ð¹ÜÀí·þÎñÆ÷Ó¦¸ÃÄܹ»½ÓÊÕINVITE£¬ACK£¬BYE£¬CANCELºÍREGISTERÇëÇó£¬Ó¦¸ÃÄܹ»²úÉúºÍ½âÎöCall-ID£¬Content-Length£¬Content-Type£¬Cseq£¬Expires£¬From£¬Max-Forwards£¬ViaºÍToÍ·²¿×ֶΡ£ÎªÁËÄܹ»Ê¹¿Í»§¶ËºÍ·þÎñ¶ËÄܹ»Ê¹ÓÃRTP´«ÊäÓïÒôÁ÷£¬SDPÐÒéÓ¦¸ÃÄܹ»²úÉúºÍ½âÎöv£¬o£¬s£¬c£¬t£¬mºÍaÍ·²¿×ֶΡ£
±¾ÏµÍ³ÒÔÃæÏò¶ÔÏóµÄ·½·¨Éè¼ÆÁËÒ»¸öÂú×ãϵͳҪÇóµÄ×îСSIPºÍSDPÐÒéÕ»¡£SIPÐÒéÕ»Ö§³ÖINVITE£¬ACK£¬BYE£¬REGISTERºÍCANCELÇëÇó£¬Ö§³Ö100£¬180£¬200£¬300£¬400£¬500ºÍ600״̬Ӧ´ð£¬Ö§³ÖSubject£¬Contact£¬Call-ID£¬Content-Length£¬Content-Type£¬Cseq£¬Expires£¬From£¬Max-Forwards£¬ViaºÍToÍ·²¿×ֶΡ£SDPÐÒéÕ»Ö§³Öv£¬o£¬s£¬c£¬t£¬mºÍaÍ·²¿×ֶΡ£SIPºÍSDPÖеÄÍ·²¿×ֶζ¼ÊÇÒÔÀàµÄÐÎʽʵÏֵģ¬ËùÖ§³ÖµÄÍ·²¿×ֶζ¼ÊÇ´ÓÒ»¸ö³éÏóÀàHeader¼Ì³Ð¶øÀ´¡£³éÏóÀàHeaderµÄ¶¨ÒåÈçÏ£º
class Header
{
public:
Header();
virtual ~Header() = 0;
virtual string encode() const = 0;