ÄÚÈÝ·¢²¼¸üÐÂʱ¼ä : 2025/4/11 1:37:41ÐÇÆÚÒ» ÏÂÃæÊÇÎÄÕµÄÈ«²¿ÄÚÈÝÇëÈÏÕæÔĶÁ¡£
OSIP2ÐÒéջѧϰ×ܽá
1¡¢Osip2ÐÒéÕ»½éÉÜ
Osip2ÊÇÒ»¸ö¿ª·ÅÔ´´úÂëµÄsipÐÒéÕ»,ÊÇ¿ªÔ´´úÂëÖ⻶àʹÓÃCÓïÑÔдµÄÐÒéÕ»Ö®Ò»£¬Ëü¾ßÓжÌС¼ò½àµÄÌص㡣ËüµÄºËÐÄÌØÐÔΪsipÐÒéÊý¾ÝµÄ½âÎöºÍÊÂÎñµÄ¹ÜÀí¡£Êý¾Ý°üµÄÊÕ·¢¡¢RTP Á÷µÄ´¦ÀíµÈ£¬²¢²»ÔÚOsip2ÖÐÍê³É¡£Ó¦ÓóÌÐòʹÓÃOsip ʱÐèÒªµ¥¶ÀȥʵÏÖÕâЩģ¿é¡£Osip2µÄȱµãÊÇûÓкܺõÄÉϲãapi·â×°£¬Ê¹µÃÉϲãÓ¦ÓÃÔÚµ÷ÓÃÐÒéջʱºÜÆÆË飻ֻ×öµ½ÁËtransaction²ã´ÎµÄÐÒé¹ý³Ì½âÎö£¬È±ÉÙcall¡¢session¡¢dialogµÈ¹ý³ÌµÄ½âÎö£¬ÕâÒ²Ôö¼ÓÁËʹÓõÄÄѶȡ£
2¡¢Osip2ÐÒéÕ»Ìåϵ½á¹¹
OSIPÖ÷ÒªÓɽâÎöÄ£¿é¡¢¹¤¾ßÄ£¿éºÍ״̬»úÄ£¿é¹¹³É£¬ÆäºËÐÄÊÇ״̬»úÄ£¿é£®OSIP½á¹¹ÈçͼËùʾ£®
Ó¦ÓóÌÐò SIP½âÎö SRL½âÎö SDP½âÎö ״̬»úÄ£¿é ÓÐÏÞ״̬
2.1 Óï·¨½âÎöÆ÷
libosip¿âÔ´Âësrc/osipparser2Ϊ½âÎöÆ÷Ô´Â룬OSIP½âÎöÄ£¿éÖ÷ÒªÓÃÓÚ¶ÔSIPÇëÇóÓëÏìÓ¦½øÐзâ×°Óë½âÎö´¦Àí£¬·ÖΪSIP½âÎö¡¢URL½âÎöÓëSDP½âÎöÍê³É¶ÔsipÐÒéÏà¹Ø×ֶεĹ¹ÔìºÍ½âÎö¡£±ÈÈ磬½«½ô´ÕµÄ´æ´¢ÓÚÄÚ´æbufferÖеÄsip Êý¾Ý½âÎöµ½ÇåÎú¶¨ÒåµÄÊý¾Ý½á¹¹ÌåÖУ¬Ã¿Ò»¸ö×ֶδú±ísipÐÒéÖÐÓÐÒâÒåµÄÒ»¸öÍ·Óò¡£¡£SIP½âÎöÖ÷Òª¸ºÔðSIP±êÌâÍ·µÄ½âÎöÓë·â×°¡£SDP½âÎö³ýÁ˶ÔÊý¾Ý°üÖÐSDP»á»°¸÷ÀàÐͽøÐнâÎöÍ⻹°üº¬¶Ô¸÷ÀàÐ͵ijõʼ»¯ºÍÊͷŲÙ×÷ÒÔ¼°¶ÔÕû¸öSDP°üµÄһЩ»ù±¾²Ù×÷¡£URL½âÎöÖ÷Òª¸ºÔð¶ÔSIP URIÖаüº¬µÄhost£¬port£¬username£¬ passwordµÈÐÅÏ¢½øÐнâÎöÓëÉèÖá£
2.2 ÓÐÏÞ״̬»ú
SIP״̬»úÄ£¿é¸ºÔðÍê³É¶Ôij¸öÊÂÎñ״̬µÄά³Ö¼°´¦Àí¡£²¢ÇÒÔÚÌض¨µÄ״̬Ï´¥·¢ÏàÓ¦µÄʼþ»òÕ߻ص÷º¯Êý¡£OSIPÐÒéÕ»µÄ״̬»úÖ÷Òª·ÖΪ4ÀࣺINVITE¿Í»§¶ËÊÂÎñICT£¬·ÇINVITE¿Í»§¶ËÊÂÎñNICT£¬INVITE·þÎñÆ÷¶ËÊÂÎñIST£¬·ÇINVITE·þÎñÆ÷¶ËÊÂÎñNIST¡£
2.3 ¹¤¾ßÄ£¿é
OSIP¹¤¾ßÄ£¿é·ÖΪ¶Ô»°¹ÜÀí¹¤¾ßºÍSDPÐÉ̹¤¾ß¡£¶Ô»°¹ÜÀí¹¤¾ßʹÓû§Äܹ»¸ù¾ÝRFC3261¶Ôdialog½øÐвÙ×÷£¬½¨Á¢ÏàÓ¦dialog½á¹¹Ìå¡£²¢Í¨¹ý¶Ôdialog½á¹¹ÌåµÄÌí¼Ó¡¢É¾³ý¡¢²éѯʵÏÖ¶Ô»°¹ÜÀí¡£SDPÐÉ̹¤¾ß¸ºÔðÏòSIPÖÕ¶ËÓû§ÌṩÐÉÌcodecµÈ¹¦ÄÜ¡£
2.4 ÐÒéÕ»¿ò¼Ü
¿ò¼Ü²¢²»ÊÇÖ¸´úÂëµÄijһ²¿·Ö£¬¶øÊÇÖ¸ËüµÄ¹¹³ÉÐÎʽ¡£Ö÷ÒªÓÐÈý²¿·Ö£ºµ×²ãÌ×½Ó×Ö½ÓÊÕ/·¢ËÍ£¬Ä£¿é¼äͨÐŹܵÀ£¬Éϲãµ÷ÓÃapi½Ó¿Ú¡£
Osip2²¢²»ÊµÏֵײãÌ×½Ó×ֵĽÓÊÕ/·¢ËÍ£¬ÓÉeXosipʵÏÖ£¬ÏÖÔÚÖ»Ö§³ÖUDPµÄÁ´Â·Á¬½Ó¡£
1
DIALOG¹¤¾ß SDPÐÉ̹¤¾ß Ä£¿é¼äµÄͨÐŹܵÀ°üÀ¨£ºtransactionµÄÏûÏ¢¹ÜµÀ¡¢jeventµÄÏûÏ¢¹ÜµÀ¡£TransactionµÄÏûÏ¢¹ÜµÀÊÇÇý¶¯Æä״̬»úµÄ²¿¼þ£¬Í¨¹ý²»¶ÏµÄ½ÓÊÕÀ´×ԵײãÌ×½Ó×ÖµÄÔ¶¶ËÐÅÁ»òÕßÀ´×ÔÉϲãµ÷ÓõÄÖ¸Á¸ù¾ÝÉÏÊöµÄ״̬»úÖÆÀ´Çý¶¯Õâ¸ötransactionµÄÔËת¡£JeventµÄÏûÏ¢¹ÜµÀÊÇeXosipʵÏֵģ¬ÓÃÓڻ㱨µ×²ãʼþ£¬Ê¹µÃµ÷ÓóÌÐòÄÜ´¦Àí¸ÐÐËȤµÄʼþ¡£
Éϲãµ÷ÓõÄapi½Ó¿Ú´óÖÂÓÐÁ½ÀࣺsipÐÒéµÄµ÷ÓýӿںÍsdpÐÒéµÄµ÷Óýӿڡ£EXosip·â×°Á˴󲿷ֵÄsipÐÒéµ÷Óýӿڣ¬Ò»°ãÀ´Ëµ¶¼²»ÐèÒªÖ±½Óµ÷ÓÃosip2µÄ½Ó¿Úº¯Êý¡£½Ó¿Úº¯ÊýºÜ¶à£¬ÔÚÕâÀï¾Í²»ÏêÊöÁË£¬º¯Êý¶¨ÒåÇë²ÎÕÕÔ´´úÂ벿·ÖµÄ×¢ÊÍ¡£
2.5 osip2ÓësipÐÒé²ã´ÎµÄ¹Øϵ
LIBOSIP2¿ª·¢¿â²ã´Î¹Øϵ
2
3¡¢OSIP¹Ø¼üÊý¾Ý½á¹¹¼°Æä˵Ã÷
3.1 osip½á¹¹Ì嶨Òå
´Ó¸Ã½á¹¹ÌåµÄ¶¨Òå¿ÉÒÔ¿´³ö£¬osipÖ÷ÒªÓÐÁ½²¿·Ö¹¹³É£¬ÆäÒ»ÊÇÊÂÎñÁ´±í£¬¸÷¸ö״̬µÄÊÂÎñµÄʼþ¶¼¹ÒÔØÔÚ¸ÃÁ´±íÉÏ£»Æä¶þÊǻص÷º¯Êý,»Øµ÷º¯ÊýÖÐÇ°Èý¸öÊÇÄÚ²¿Ê¹Óã¬Ò²¾ÍÊÇosip ¿âÔÚ´¦ÀíÏûÏ¢µÄ¹ý³ÌÖУ¬Èç¹ûÆ¥Åäij¸ö״̬£¬¾ÍÖ´ÐжÔÓ¦µÄ»Øµ÷º¯Êý¡£Óû§¿ÉÒÔʹÓÃÕâЩ»Øµ÷º¯ÊýÏÔʾһЩ״̬£¬´¦ÀíһЩ´íÎóµÈ¡£×îºóÒ»¸öÊÇÏûÏ¢·¢Ëͻص÷º¯Êý£¬Ò²¾ÍÊÇosipÐèÒª·¢ËÍsipÊý¾Ý°üʱ£¬¾ÍÊÇͨ¹ý¸Ã»Øµ÷º¯ÊýÍê³ÉµÄ¡£
3.2 transition_t£ºtransition_t½á¹¹Ì嶨ÒåÁËÊÂÎñ
state ΪÊÂÎñµÄ״̬£¬type ÊÇÊÂÎñ¶ÔӦʼþµÄÀàÐÍ£¬method Ϊº¯ÊýÖ¸Õ룬¶¨ÒåÁ˵±Ç°×´Ì¬ÊÕµ½type ÀàÐÍʼþºóÓ¦¸ÃÖ´ÐеĶ¯×÷¡£next ºÍparent Ϊ¹¹³ÉÁ´±íºÍ¶ÓÁÐʱµÄÇ°ÏòºÍºóÏòÖ¸Õë¡£ÕâÊÇÒ»¸öͨÓõĽṹÌ壬Ҳ¾ÍÊÇ˵£¬ict¡¢ist¡¢nict£¬nist ¶¼ÊÇÓøýṹÌå±íʾÊÂÎñµÄ¡£
3.3 osip_message_config_t£º¸Ã½á¹¹ÌåÖ÷ÒªÓÃÓÚsipÏûÏ¢µÄ½âÎö
hname ΪsipÏûϢͷµÄijһ¸öÓòµÄÃû³Æ£¬±ÈÈçcseq¡¢from¡¢to »òÕßvia µÈ¡£setheader ÊÇ´¦Àí¸Ã²¿·ÖµÄº¯Êý¡£×îºóÒ»ÏîÊÇÒ»¸ö±êʶ£¬µ±±»ÉèÖÃΪ1ʱ£¬±íÃ÷µ±Ç°Í·ÓòÊý¾ÝÈç¹ûÎÞЧµÄ»°£¬¿ÉÒÔºöÂÔ£¬²»Ó°ÏìÕû¸öÏûϢͷµÄ´¦Àí¡£
3