SIP协议详解-INVITE消息发送过程
SIP协议的核心通信:INVITE消息发送揭秘
在VoIP的世界里,SIP协议作为信令控制的基石,主导着主叫与被叫之间的交互。当主叫启动通信,通过INVITE消息向被叫发起邀请,一场精密的交易过程就此展开。
交易的起航
首先,INVITE消息触发的是客户端交易(Client Transaction),它承载着请求,同时启动了至关重要的Timer A和B,这两个计时器负责监控响应的到达并执行特定策略。当服务器接收到请求后,会进入服务器交易(Server Transaction)阶段,将消息转发至交易用户(Transaction User,简称TU),并激活服务器内部的状态机进行处理。
交易用户的角色
TU是交易层服务的承载者,它可能对应于主叫的User Agent Client (UAC Core)、被叫的User Agent Server (UAS Core) 或代理Server Core。在传输层,被叫通过UDP或TCP接收来自主叫的INVITE消息,确保信息的准确传递。
保证信令的可靠性
Timer A是关键,它负责重发未得到响应的INVITE,即使在网络波动时也不放弃。同时,Timer B的存在是为了在网络条件不佳时防止过度重发,一旦超时,它会中止并报告问题。这种指数型延迟重试策略确保了请求和响应的及时同步。
细节中的微妙
在实际操作中,如果在200毫秒内没有收到TU的回应,主叫会在100 Trying状态发送,以防通信拥堵。然而,如果服务器预期TU很快会响应,它会直接回应,比如180 Ringing,此时UAS不会发送100 Trying。这个微妙的动态平衡,体现了SIP协议的智能设计。
总结与流程
总而言之,SIP协议通过Timer A和B的巧妙设计,确保了INVITE消息的可靠传递。当UAS Core收到INVITE,它会根据情况快速响应,整个过程由状态机的控制防止了重复和混乱。这就是SIP协议如何在VoIP通信中演绎其核心作用的秘密。
绛旓細鍦╒oIP鐨勪笘鐣岄噷锛SIP鍗忚浣滀负淇′护鎺у埗鐨勫熀鐭筹紝涓诲鐫涓诲彨涓庤鍙箣闂寸殑浜や簰銆傚綋涓诲彨鍚姩閫氫俊锛岄氳繃INVITE娑鎭悜琚彨鍙戣捣閭璇凤紝涓鍦虹簿瀵嗙殑浜ゆ槗杩囩▼灏辨灞曞紑銆備氦鏄撶殑璧疯埅 棣栧厛锛孖NVITE娑堟伅瑙﹀彂鐨勬槸瀹㈡埛绔氦鏄擄紙Client Transaction锛夛紝瀹冩壙杞界潃璇锋眰锛屽悓鏃跺惎鍔ㄤ簡鑷冲叧閲嶈鐨凾imer A鍜孊锛岃繖涓や釜璁℃椂鍣ㄨ礋璐g洃鎺у搷搴...
绛旓細SIP锛圫ession Initiation Protocol锛夋秷鎭富瑕佸垎涓轰袱绉嶇被鍨嬶細璇锋眰娑堟伅鍜屽搷搴旀秷鎭傝姹傛秷鎭槸浠庡鎴风鍚戞湇鍔″櫒鍙戦侊紝鐢ㄤ簬鎵ц鍛煎彨鎺у埗鎴栨敞鍐屾搷浣滐紱鍝嶅簲娑堟伅鍒欐槸鏈嶅姟鍣ㄥ杩欎簺璇锋眰鐨勫洖搴斻傚湪鍛煎彨鎺у埗涓紝涓昏鐨勮姹傜被鍨嬪寘鎷細INVITE: 鐢ㄤ簬鍙戣捣鍛煎彨锛屽苟瀵瑰嵆灏嗗缓绔嬬殑浼氳瘽杩涜璇︾粏鎻忚堪銆侫CK: 涓诲彨鏂圭‘璁ゅ凡鏀跺埌琚彨鏂...
绛旓細SIP鏄竴涓俊浠鍗忚锛屽畠瀵瑰簲浜庝紶缁熺數璇濈綉缁滀腑鐨勫懠鍙俊浠ゅ崗璁紙姣斿SS7 ISUP锛夈傛瀯寤轰竴涓畬鏁村濯掍綋閫氫俊鏋舵瀯杩橀渶瑕佺粨鍚堝叾浠栦竴浜涘崗璁紝蹇呰鐨勬湁锛歊TP锛岀敤浜庡獟浣撲紶杈擄紱RSVP锛岀敤浜嶲OS淇濊瘉绛夌瓑銆備細璇濈殑鍙戣捣涓庣鐞嗗涓嬶細SIP涓昏鐢ㄤ簬鍒涘缓銆佷慨鏀瑰拰缁堟涓涓細璇濄1銆佸彂璧锋柟鍚戠洰鐨勬柟鍙戦佷竴涓猄IP璇锋眰娑堟伅锛INVITE锛夛紝鍏朵腑...
绛旓細SIP鍗忚鑷韩鏄細璇濇帶鍒跺崗璁紝鏈INVITE銆丄CK绛夋柟娉曠敤浜庝細璇濇帶鍒讹紝鍖呮嫭璁惧鐩綍鏌ヨ鍜屽疄鏃惰棰戣鐪嬨係DP鎻忚堪浜嗗獟浣撲細璇濈殑璇︾粏淇℃伅锛屾槸SIP娑鎭綋鐨勯噸瑕佺粍鎴愰儴鍒嗭紝纭繚浜嗚法骞冲彴鐨勫獟浣撳崗鍟嗗拰鍏煎鎬с傜悊瑙B28181/SIP/SDP鍗忚鐨勫叧閿湪浜庢帉鎻IP璇锋眰鍜屽搷搴斻佷氦鏄擄紙Transaction锛夈佺敤鎴蜂唬鐞嗭紙UA锛夊拰浠g悊鏈嶅姟鍣ㄧ瓑姒傚康锛屼互...
绛旓細invite鍙戝嚭浼氳瘽璇锋眰锛100涓存椂鍥炲簲閫氱煡瀵规柟鎴戝凡缁忔敹鍒拌姹傦紝180琛ㄧず鎴戞鍦ㄥ鐞嗗乏杈圭殑璇濇満鍝嶉搩锛182琛ㄧず姝e湪鎺掗槦澶勭悊璇锋眰(杩欎釜鍦烘櫙鎴戞病鏈夎杩囷級,200灏辨槸瀹屾垚鑳藉姏鍗忓晢鐩稿簲invite璇锋眰锛孉CK琛ㄧず宸茬粡鎺ユ敹鍒板绔殑鑳藉姏鎵撳紑閫氶亾鍙戦佺爜娴侊紝bye灏辨槸缁撴潫閫氳瘽浜嗭紝200鏄bye鐨勫洖搴 ...
绛旓細100 trying鏄复鏃跺搷搴斻 姣斿鏈嶅姟鍣ㄧ粰浣犱竴鐧句釜鍥炲簲锛屾剰鎬濅綘鐨勮姹傚凡缁忔敹鍒帮紝搴﹀湪澶勭悊涓200 OK 鏄拡瀵圭煡SIP INVITE娑鎭亾锛屼綔涓篺inal reponse锛孲DP鐨勫唴瀹归儴鍒嗗弻鏂瑰凡缁忎笓浜ゆ崲瀹屾瘯銆180 ring 鏄尟閾冿紝浠h〃invite娑鎭凡缁忛佸埌鍒 琚彨渚э紝閫氱煡灞炰富鍙晶琚彨宸茬粡鎸搩銆183鍦180 鍓嶉潰锛 鍙互棰濆瀹屾垚涓娆DP...
绛旓細SIP鐨勮姹傚拰鍝嶅簲鐢辨槑纭殑缁撴瀯缁勬垚锛屽寘鎷姹傝銆佹姤澶村拰娑堟伅浣擄紝鍏朵腑璇锋眰澶存弿杩板懠鍙睘鎬э紝娑堟伅浣撳垯鎵胯浇鐫璇︾粏淇℃伅銆傚父瑙佺殑SIP鏂规硶鍖呮嫭INVITE銆丅YE绛夛紝浣撶幇浜嗗叾绠鍗曘佹槗鎵╁睍鍜屾槗瀹炵幇鐨勭壒鐐癸紝骞挎硾搴旂敤浜嶯GN鍜3G澶氬獟浣撻氫俊缃戠粶涓傚敖绠IP鍦ㄥ綋鍓嶅競鍦轰腑宸茬粡鍗犳嵁閲嶈鍦颁綅锛岄殢鐫鎶鏈殑鍙戝睍锛屽畠灏嗙户缁湪鏈潵鐨勭綉缁滈氫俊...
绛旓細re-invite鍜寀pdate閮芥槸鐢ㄦ潵鏇存柊鐢ㄦ埛浼氳瘽濯掍綋淇℃伅鐨勩傚尯鍒槸re-invite鍦ㄤ細璇濆缓绔嬪悗鏇存柊锛屽嵆鍓嶄竴涓猧nvite鐨凙CK鍚庝娇鐢紝update鍦ㄤ細璇濆缓绔嬫椂浣跨敤锛屽嵆鍓嶄竴涓猧nvite鐨200ok涔嬪墠銆
绛旓細鍦SIP鍗忚涓紝姣忎釜鐢ㄦ埛閮芥湁涓涓敮涓鐨凷IP鍦板潃锛岀被浼间簬鐢靛瓙閭欢鍦板潃銆傚綋鐢ㄦ埛鎯宠寤虹珛閫氫俊鏃讹紝灏遍渶瑕佸悜瀵规柟鐨凷IP鍦板潃鍙戦佷竴涓INVITE娑鎭傛帴鏀舵柟鏀跺埌INVITE娑堟伅鍚庯紝灏卞彲浠ラ氳繃SDP鍗忚鏉ョ‘瀹氫細璇濈殑閫氫俊鍙傛暟锛屼緥濡傞煶棰戝拰瑙嗛鏍煎紡銆両P鍦板潃銆佺鍙e彿绛夈傚鏋滄帴鏀舵柟鍚屾剰寤虹珛浼氳瘽锛屽氨浼氬悜鍙戦佹柟鍥炲涓涓200 OK娑堟伅锛...
绛旓細SIP鎶鏈嵆Session Initiation Protocol锛屾槸涓绉嶇敤浜庡缓绔嬨佺淮鎶ゅ拰缁堟璇煶銆佽棰戝拰娑堟伅浼氳瘽鐨勭綉缁滃崗璁SIP鍗忚涓昏鐢ㄤ簬IP鐢佃瘽銆佽闊冲拰瑙嗛浼氳绛夊疄鏃堕氫俊鍦烘櫙銆係IP鎶鏈彲浠ヤ娇鐢ㄦ埛鍦ㄤ换浣曟椂闂淬佷换浣曞湴鐐逛娇鐢ㄤ换浣曠粓绔澶囪繘琛屽疄鏃堕氫俊銆係IP鎶鏈殑宸ヤ綔鍘熺悊鏄粈涔堬紵SIP鎶鏈殑宸ヤ綔鍘熺悊鏄熀浜庡鎴风鍜屾湇鍔″櫒涔嬮棿鐨勪氦浜掋傚綋...