請問如何在NAT之下,讓語音連線建立 |
缺席
|
JerryKuo
版主 發表:42 回覆:571 積分:322 註冊:2003-03-10 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 各位大大 如題,小弟碰到一個問題,若pc在有NAT的router之後,使用ICQ,AIM,MSN 等一些即時聊天軟體時,都不能建立語音交談連線,逛過一些網站都得不 到有效的解決方法,所以想請問是否有人做過這一方面的程式,提供參考 的解決之道或資料.. JerryKuo 你好: (1)我並沒有做過這方面的程式,所以,只能就我所知道的告訴你 (> --
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
Jasonwong
版主 發表:49 回覆:931 積分:581 註冊:2006-10-27 發送簡訊給我 |
|
JerryKuo
版主 發表:42 回覆:571 積分:322 註冊:2003-03-10 發送簡訊給我 |
|
ddy
站務副站長 發表:262 回覆:2105 積分:1169 註冊:2002-07-13 發送簡訊給我 |
我想你需要的是取得那些Service 所使用的Port
在DOS 視窗下有個指令Netstat 可以得知目前在你的電腦上正在使用的協定與port 你可以觀察,看看是那些port 在傳送語言…等相關資料,你再將其開放
試試看
----------------------------------
C:\Documents and Settings\DAVID>netstat Active Connections Proto Local Address Foreign Address State TCP david:1032 localhost:3402 TIME_WAIT TCP david:3404 localhost:1032 TIME_WAIT TCP david:1052 baym-cs56.msgr.hotmail.com:1863 ESTABLISHED TCP david:1054 knight.fcu.edu.tw:http CLOSE_WAIT TCP david:1091 202-39-43-241.HINET-IP.hinet.net:1755 ESTABLISHED TCP david:2457 61-218-122-234.HINET-IP.hinet.net:ftp CLOSE_WAIT TCP david:2518 baym-sb52.msgr.hotmail.com:1863 ESTABLISHED TCP david:3403 61-218-122-234.HINET-IP.hinet.net:pop3 TIME_WAIT TCP david:3406 g.msn.com:http TIME_WAIT TCP david:3407 baym-sb65.msgr.hotmail.com:1863 ESTABLISHED TCP david:3408 svcs.microsoft.com:http TIME_WAIT TCP david:3410 165.193.214.6:http CLOSE_WAIT發表人 - ddy 於 2003/03/25 18:07:21 |
JerryKuo
版主 發表:42 回覆:571 積分:322 註冊:2003-03-10 發送簡訊給我 |
傳訊息 : 使用的都是同一個port1,也就是初始port1,在這地方NAT都能支援
互傳檔案 : 各家軟體使用不同的方式建立傳輸
第一種:先傳到server再轉傳給對方,不過這很少人會用,這樣server
會很危險,我猜應該也不可行.
第二種:大部分都用這一種,就是雙方協議開port2傳輸,此時port2就
是動態的,所以使用ALG,在router 建立一個port mapping
session,這樣檔案能經由port2傳輸檔案
語音連線 : 就比較複雜,必需經過兩次的協議,開port3建立連線,這地方又分好
幾種,略-.-..抱歉 這是我用sniffer看到的結果...不過我的結果還是:..無計可施..
|
tender
初階會員 發表:23 回覆:90 積分:37 註冊:2002-09-26 發送簡訊給我 |
|
JerryKuo
版主 發表:42 回覆:571 積分:322 註冊:2003-03-10 發送簡訊給我 |
NAT(network address translation)是定義於RFC 1631, 它是在 router 中進行一個更換 IP header 的動作, 讓更多台電腦能"共用"一個IP 連上 Internet 的技術.這項技術的發展主要是因應於32 bits的實體位址不敷使用, 為了讓32 bit的位址可以再繼續沿用, 所以才有NAT,IPv6..等新技術的產生, NAT是其中最簡易又能有效解決位址不夠的方法,許多的 router 目前有都有支援 NAT 這項功能,也就是俗稱IP 分享器。大概的方法:
三台電腦各分配三個私有ip(ip1,ip2,ip3), router是一台有實體ip(Gip)的伺服器,三台電腦接在router之後端。在internet上,外界的client只看得到Gip,看不到ip1,ip2,ip3。而三台電腦與外界連線時,依照原來的方式傳送封包給要連線的外界client, 為了讓對方能回傳得回來,封包經過router時,會把source ip改成Gip,如此對方才傳得回來。在這裡有一個問題,如何分辨封包是給ip1, ip2, ip3呢? 答案:使用tcp header中的 port區分,每個私有ip與外界連線時,都會先開一個port, listen對方的回應, 而router收這封包就會建立一個port mapping session table,允許外界封包可以由此進入, router根據封包的port分配給各個私有ip。這樣的router有很多好處:
1.建立一個網域,只需要少數的Gip,因應不敷使用的Gip
2.外界只看得到Gip,而不能直接存取內部的私有ip
3...
上述只簡單的講解NAT,其實還有NAPT(network address & port translation),bi-direction NAT,更詳細的請參照rfc 1631 ALG(application layer gateway):顧名思義ALG跟應用層有關,舉個最簡單的例子:FTP ,一般我們要連線FTP SERVER,都是經過PORT 21與SERVER溝通建立連線,有NAT功能的ROUTER能根據IP,TCP HEADER開放PORT 21,讓封包進出,可是當要傳輸檔案時,CLIENT和FTP SERVER會另外建立一個檔案傳輸埠,這個PORT是有雙方協議而得,協議資訊藏於封包的資料,而不是檔頭區,所以ROUTER不能知道要開放什麼PORT,雖然CLIENT開放PORT 1,但ROUTER不開放MAPPING PORT, 則永遠不能建立連線,因為傳回的封包在ROUTER就被當做不知名的東西丟掉,所以ALG就是為解決NAT這一項缺點,根據封包的資料區,找出PORT值,命令ROUTER開放,使得資料順利傳輸。因為每個應用軟體若要額外開PORT,而PORT值都藏於不同的地方,所以每個應用軟體都直接要有一個ALG。
|
tender
初階會員 發表:23 回覆:90 積分:37 註冊:2002-09-26 發送簡訊給我 |
|
JerryKuo
版主 發表:42 回覆:571 積分:322 註冊:2003-03-10 發送簡訊給我 |
我可能沒有講得很清楚,抱歉 1.NAT,ALG是在ROUTER做的,我想這ROUTER可以比做是一台SERVER 2.並不是每個應用程式都需要ALG,NAT這個演算法也是近幾年才廣為使用於ROUTER,讓更多電腦能共用一個實體IP,節省實體IP的使用量。所以在之前發展出的應用軟體,並沒有考慮到會有NAT的出現,使得如果應用程式支援直接資料對傳,讓兩個CLIENT端可以互傳檔案,這兩個CLIENT協議出檔案互傳的額外PORT,這個額外開的PORT和原先建立的連結埠並不一樣,所以ROUTER並不會允許資料由這個PROT進出,所以有ALG出現解決NAT這方面的問題。
就我寫過和看過的ALG就有好幾種,ICQ,AIM,SIP,MSN,IRC,...等這些應用
程式都是很受歡迎的,這些軟體大部都是先在一台聊天server上聊天,一旦兩個CLIENT要互傳檔案,只要其中之一個CLIENT是透過NAT ROUTER連線,在他這端開了一個PORT,告訴對方他的IP和PORT,對方根據他傳來的資料,做一個連線動作給IP和PORT,但這個IP是NAT ROUTER之後私有IP,INTERNET上沒有這個IP,所以連線資料一定送不到,為了使NAT ROUTER都能在這些程式下正常運作,才會有這方面的ALG加在ROUTER之中,把開PORT的CLIENT所以傳出去的連線資料IP,改成ROUTER的IP,並開啟PORT MAPPING讓對方回應的資料得以進出。
NAT問題的發生,是在於網路應用程式功能,如果應用程式沒有需要額外開PORT傳輸資料,就不會發生連線失敗的情形,也不用ALG去解決。有的應用程式會直接把額外開的PORT設死,這樣只要在ROUTER設定VIRTURL SERVER或是DMZ就可以解決NAT的問題。
NAT的問題以前是在ROUTER用ALG來解決,現在"好像"可以直接在應用程式解決,加上UPNP,但我對它不太了解。^^
|
yckuo
高階會員 發表:55 回覆:389 積分:238 註冊:2003-03-07 發送簡訊給我 |
|
JerryKuo
版主 發表:42 回覆:571 積分:322 註冊:2003-03-10 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |