發(fā)布時(shí)間:2022-12-25 文章來源:深度系統(tǒng)下載 瀏覽:
網(wǎng)絡(luò)技術(shù)是從1990年代中期發(fā)展起來的新技術(shù),它把互聯(lián)網(wǎng)上分散的資源融為有機(jī)整體,實(shí)現(xiàn)資源的全面共享和有機(jī)協(xié)作,使人們能夠透明地使用資源的整體能力并按需獲取信息。資源包括高性能計(jì)算機(jī)、存儲資源、數(shù)據(jù)資源、信息資源、知識資源、專家資源、大型數(shù)據(jù)庫、網(wǎng)絡(luò)、傳感器等。 當(dāng)前的互聯(lián)網(wǎng)只限于信息共享,網(wǎng)絡(luò)則被認(rèn)為是互聯(lián)網(wǎng)發(fā)展的第三階段。 下面對SIP協(xié)議產(chǎn)生NAT穿透問題,作一些解釋;及提出解決的辦法。 2、SIP終端在NAT后面,其工作有可能出現(xiàn)問題。原因是SIP信令走的路徑,和媒體流走的路徑不一樣。 3、Full Cone 完全圓錐體NAT 4、restricted cone 受限制的圓錐體NAT 補(bǔ)充說明: 5、port restricted 端口受限制的圓錐體NAT 這個(gè)NAT只會接收從IP地址 213.123.324.34 且端口為 8000來的數(shù)據(jù),讓進(jìn)入到10.1.1.1:123。 6、對稱的NAT 這是關(guān)系描述最簡單的一個(gè) 7、RTP的問題 問題在于,SIP終端(UA)可能對NAT一無所知。因而在SDP中包含的IP地址,通常使用內(nèi)部的IP地址,也就是SIP終端知道的IP。這樣,當(dāng)通信的對方想與SIP終端通信時(shí),就查看SDP消息中的IP地址,但是什么也沒有得到,因?yàn)檫@里使用的是內(nèi)部IP地址。 下面舉個(gè)例子說明: INVITE sip:040600@192.168.20.2:5060 SIP/2.0. SIP消息的標(biāo)題頭,類似于郵件的標(biāo)題頭。從后往前看,從From行開始,看到第一個(gè)Via行,這是SIP終端自己認(rèn)為的IP地址,例如192.168.20.3。但是SIP代理服務(wù)器是聰明的,它知道這個(gè)消息是從哪里發(fā)過來的,它添加了rport和接收到的標(biāo)志: 也就是說,SIP代理服務(wù)器,知道發(fā)消息的SIP終端的公網(wǎng)地址是223.178.140.109:1024。 但是,可憐的老式的RTP被阻塞了,因?yàn)樗臉?biāo)題頭如下: SIP終端期望從端口 port m=38660 且IP地址IP c= 192.168.20.3來接收RTP數(shù)據(jù),而這個(gè)192.168.20.3:38660,就是通信的對方試圖發(fā)RTP數(shù)據(jù)的目的地址。 這就是SIP電話振鈴總是能夠聽到,而接起來卻沒有聲音的原因。 8 解決辦法 告訴SIP終端,不要如此傻地工作,而要想辦法知道NAT分配給自己的端口映射。 并將公網(wǎng)的IP地址:端口放到SDP消息中。這樣,SIP終端就問NAT....;蛘呤菃柟W(wǎng)的某個(gè)服務(wù)器,NAT分配給自己的映射是什么。 9 問NAT。 這種辦法就是使用UPnP協(xié)議,另外去參見UPnP的資料。 10 問公網(wǎng)上的某個(gè)服務(wù)器。 如STUN服務(wù)器。 產(chǎn)生的問題 因?yàn)镹AT的端口分配是動態(tài)的,因而有可能會改變。這樣,在發(fā)送了NAT探測消息后,要很快地發(fā)送出SIP消息。而且,SIP終端發(fā)送數(shù)據(jù)的端口和接收數(shù)據(jù)的端口要是一樣的。 注意受限制的圓錐體(包括端口受限制的圓錐體)NAT,它不讓回來的消息進(jìn)來,除非SIP終端先發(fā)了一個(gè)數(shù)據(jù)包給它。因而,SIP終端需要先發(fā)一個(gè)數(shù)據(jù)包給對方。這樣以后對方來的數(shù)據(jù),就可以進(jìn)入NAT內(nèi)部了(不過,不需要為這個(gè)操作擔(dān)心,有辦法的)。 上面的辦法在對稱的NAT后面,不能夠工作。因?yàn)椋瑢ΨQ的NAT,它在分配給SIP終端外部的IP:port時(shí),每次都變化(不同的對方不一樣)。也就是SIP終端在探測NAT時(shí),得到的IP:port,與它后來發(fā)SIP消息時(shí),分配的IP:port不一樣。這樣,對方來的語音數(shù)據(jù)就進(jìn)不來,因?yàn)閷Ψ降貌坏秸_的IP:port。 11、上面描述的過程,其實(shí)就是采用STUN協(xié)議時(shí),解決問題的過程。就是SIP終端向STUN服務(wù)器發(fā)探測NAT的數(shù)據(jù)包。 12、對稱的NAT 解決辦法 就是在公網(wǎng)上放一個(gè)中轉(zhuǎn)語音流的服務(wù)器。這個(gè)中轉(zhuǎn)語音流的服務(wù)器有時(shí)就是一個(gè)Out Bound proxy。注意,這個(gè)中轉(zhuǎn)語音流的服務(wù)器,可能會成為瓶頸。由于語音要經(jīng)過中轉(zhuǎn)語音流的服務(wù)器,所以路徑增長了,音質(zhì)會變差。所以,對稱的NAT,要SIP能夠工作,總之是個(gè)麻煩。 不過,目前大多數(shù)的NAT,都可以做“虛擬服務(wù)器的端口轉(zhuǎn)發(fā)”,即將SIP工作需要的端口轉(zhuǎn)發(fā)到SIP終端上去。如果在NAT設(shè)備上,做了“虛擬服務(wù)器的端口轉(zhuǎn)發(fā)”,則NAT會保留SIP工作需要的端口,專用于SIP終端,這樣SIP終端就相當(dāng)于是在一個(gè)Full Cone完全圓錐體的NAT后面,SIP用STUN工作沒有問題。SIP終端需要的端口數(shù)是這樣確定的,一個(gè)端口用于SIP信令,比如5060。RTP端口的數(shù)量,取決于通話的路數(shù)。一路通話需要2個(gè)RTP端口。每增加一路通話,則需要多2個(gè)端口。 將對稱的NAT,通過端口轉(zhuǎn)發(fā)的方式,變?yōu)橥耆珗A錐體的NAT,是解決NAT問題的最好辦法。首先應(yīng)當(dāng)用這種辦法來解決。沒有辦法映射端口,再想其它的辦法。當(dāng)然,建議大家不要買那種不能夠映射端口的寬帶路由器,那樣的路由器太差了。 【相關(guān)文章】
網(wǎng)絡(luò)的神奇作用吸引著越來越多的用戶加入其中,正因如此,網(wǎng)絡(luò)的承受能力也面臨著越來越嚴(yán)峻的考驗(yàn)―從硬件上、軟件上、所用標(biāo)準(zhǔn)上......,各項(xiàng)技術(shù)都需要適時(shí)應(yīng)勢,對應(yīng)發(fā)展,這正是網(wǎng)絡(luò)迅速走向進(jìn)步的催化劑。 |