<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        不同局域網間的P2P通信技術

        來源:懂視網 責編:小采 時間:2020-11-09 07:58:15
        文檔

        不同局域網間的P2P通信技術

        不同局域網間的P2P通信技術:P2P(Peer-to-Peer)即對等網絡。P2P(Peer to Peer)網絡結構區別于Client/Server結構或Browser/Server結構最顯著的特點是整個網絡不存在中心節點(或中心服務器),其中的每一個節點(peer)大都同時具有信息消費者、信息提供者和信息通訊等三方面的功能。
        推薦度:
        導讀不同局域網間的P2P通信技術:P2P(Peer-to-Peer)即對等網絡。P2P(Peer to Peer)網絡結構區別于Client/Server結構或Browser/Server結構最顯著的特點是整個網絡不存在中心節點(或中心服務器),其中的每一個節點(peer)大都同時具有信息消費者、信息提供者和信息通訊等三方面的功能。

        P2P(Peer-to-Peer)即對等網絡。P2P(Peer to Peer)網絡結構區別于Client/Server結構或Browser/Server結構最顯著的特點是整個網絡不存在中心節點(或中心服務器),其中的每一個節點(peer)大都同時具有信息消費者、信息提供者和信息通訊等三方面的功能。

        P2P(Peer-to-Peer)即對等網絡。P2P(Peer to Peer)網絡結構區別于Client/Server結構或Browser/Server結構最顯著的特點是整個網絡不存在中心節點(或中心服務器),其中的每一個節點(peer)大都同時具有信息消費者、信息提供者和信息通訊等三方面的功能。

        NAT(Net Address Translation):網絡地址轉換,即局域網通常通過一個具有公網IP的代理網關服務器連到internet共享上網。局域往內的機器并不具有公網IP地址,只有內網IP地址,若要和internet上的HTTP服務器通信,代理網關便會創建一個端口來和這個網內機器通信,并通過該端口和HTTP服務器交換數據。最終,網內機器-->代理網關-->HTTP服務器,在一個會話期間,各自的端口保持了映射關系,特別是代理網關和網內機器的端口映射,使得代理網關不會把接收到的數據包發錯對象。局域網內的機器在網關處,就是靠NAT來映射端口實現internet連接。因此,NAT也稱為端口映射。端口映射之后,在一個會話期間保持,對于TCP連接是直到連接斷開才銷毀,而對于UDP,卻存在一個不定的生存期。
        如果兩臺機器A和B,分別處于兩個局域網內,要通過internet通信,即為P2P連接通信。目前的internet使用IPV4,采用32位IP地址,主要被用來進行C/S形式的通信,需要共享的資源集中放于internet服務器上,IPV4對于P2P分布式資源共享的支持,極不友好。首先,32位IP地址已經不敷使用,公網IP地址日趨緊張,只能使用局域網共享公網IP的方式,局域網正是為了臨時應對IP耗盡而出現的,長遠的解決辦法是研究IPV6。其次,分別處于兩個局域網內的機器要通信,由于對方沒有公網IP,直接呼叫對方是不可能的,必須借助第三方中介間接地通信,解決方法有如下幾種:
        1、實現局域網內的數據鏈路層協議,就是設計一個類時TCP/IP的協議,由它來代替TCP/IP協議,由它直接基于網卡硬件獲取數據。這是十分復雜的。
        2、依靠internet上的公網服務器中轉數據,但對于大數據量的中轉,顯然受到服務器和網絡的負載極限的限制。
        3、依靠internet上的公網服務器做媒介,將這兩臺分別處于不同局域網的機器相互通知給對方,在它們建立連接之后,服務器即脫離關系。這種方式下,服務器把A的NAT端口映射關系告訴B,又把B的NAT端口映射關系告訴A,這樣AB相互知道對方的端口映射關系之后,就能建立連接。因為A和B各自的端口映射關系是靠各自的代理網關動態建立的,動態建立的映射端口不得告知對方。
        4、上面的第三種辦法,也可以采用靜態端口映射方式,這樣就無需中介服務器對A和B做介紹。在各方自的代理網關上,可以在代理工具里將某個端口(如1002)和局域網內的某臺機器(如內網IP為192.168.18.23,端口1003)做好靜態映射,這樣,代理網關會自動地將出入于1002端口的數據發往192.168.18.23的1003端口。當然,通信之前,必須對對方的端口映射關系做配置。有多少臺網內機器要通信,就得映射多少個不同的端口,同時在另一個局域網內的機器就要做多少個配置。在局域網內搭建HTTP、FTP等服務器就是通過靜態映射端口來實現的,這個端口一般不是HTTP、FTP的默認80和23,所以對這類站點的訪問往往會在URL里加上端口號。

        由此所知,上述前兩種辦法在簡單應用中是不可取的,只有后兩種可行。它們又各有缺點,第三種動態映射端口,需要增加中介服務器,第四種靜態映射端口,在需要通信的各方機器很多的情況下,做手工端口映射和配置都是很繁瑣的,并且一方添加一臺機器,就需要在其余對方增加配置。
        采用動態和靜態相結合的辦法是可以推想的,然而其可行性還必須經過測試。可以這樣設計,為了讓所有通信機器彼此知曉并定位。我們可以在局域網里,只對一臺機器在代理網關處做靜態端口映射,本局域網內的機器都向它登記。而兩個局域網各自只做一項對對方的映射配置。兩個局域網之間,沒有靜態映射端口的機器要通信,就靠有映射的機器來擔當“介紹”。

        就局域網和NAT的問題實際上還很多,比如各自的局域網的結構不同,局域網里可能又有子局域網,局域網可能是NAT代理結構,但也可能是HTTP代理,Sock4、Sock5代理等結構,NAT又分嚴格的和非嚴格NAT,嚴格NAT限制很多,更不便于P2P。不過,軟件不能實現的地方,可以考慮改變硬件結構,例如將嚴格NAT變為非嚴格NAT。如果硬件改變不得,那么Internet整體上就有10%的系統不能實現P2P,除非等到正處于研發的IPv6協議出來。P2P要解決的唯一技術難題是如何發現、定位和尋址對方,就是如何穿透NAT、HTTP、Sock等代理和如何穿透防火墻找到對方并建立起通信的問題。由于絕大多數局域網是NAT代理結構,所以前面對NAT論述比較詳細,也是網上討論最多的話題,相比之下,穿透Http、Sock代理就簡單一些。此外,穿透NAT發現對等點的辦法還有一些,例如多播,但由于現有Internet對多播并不友好,同時多播是無連接和不可靠的,其實現有難度。許多軟件都是按照上述一些技術實現了P2P通信,著名的有MSN、QQ和BitTorrent下載軟件等。

        我們不希望在IP層實現我們的P2P,而是希望在應用層,利用Windows提供的Socket建立P2P,至多下到用原始Raw Socket來寫P2P。首先看,我們對于公網有服務器做“中介(非中轉)”的P2P怎么實現。

        原理講述:
        例如AB兩臺機器分別處于兩個不同的局域網后,由Server做中介,先看連接過程。
        A首先連接服務器,采用UDP發包給Server,這個包包括了A的用戶信息,類似于QQ的QQ號、呢稱等。Server方,可以用CSocket::GetPeerName()得到A的IP及端口,但得到的IP和端口應該是A的代理網關的公網PublicIP及其映射端口NatPort,該映射端口就是A的代理網關為A的本次UDP通信臨時分配的Nat端口。可以斷言,得到的端口一定不是A的內網IP和內網UDP端口。
        服務器然后將A的公網IP、映射端口、用戶信息等保存到(內存列表或者數據庫),這樣標志著A已經上線。服務器馬上將其它在線的用戶信息發回給A,包括其它用戶的代理網關的公網IP及Nat端口。A同樣將在線用戶的這些信息保存并顯示為列表,期待A用戶做出選擇。
        對于B,同樣有上述的上線過程。
        當A用戶做出選擇,要和在線的B用戶通信時,A首先發UDP包給B的公網IP及Nat端口,并立即發一個UDP包給服務器,讓服務器去通知B,叫B給A也發一個UDP包。換句話說,1、A發包給PublicB, 2、A發包給Server,3、Server發包給PublicB,4、B發包給PublicA。
        上面的敘述用到了"Public"字樣,它代表代理網關的公網IP及其映射端口。
        由于A和B各自的網關都保存了各自的端口映射關系,發到網關的數據,網關會按照這個映射關系轉發給A和B。當A和B都分別收到對方發來的UDP包以后,連接宣告成功,服務器即可以脫離,AB即可以用UDP通信。

        何以如此麻煩?

        A在發UDP包給Server上線時,A的網關(A.Gate)就分配一個Nat端口(A.NatPort)給A,用于A和Server間的本次UDP會話,但A的網關明確標記,這個Nat端口,僅能用于A和Server之間的UDP通信,不能挪著它用。并且,這個臨時分配的端口,只能保持一個很短的時效,也許是一兩秒吧。這個時間內,如果A與Server沒有任何通信,那么這個映射端口就宣告無效。下次,A和Server又要通信時,A的網關又會重新分配一個新的端口。這段表明三點:
        1、A與Server的通信,需要A網關分配Nat端口來中轉。
        2、Nat端口只能用于A和Server間的通信。
        3、Nat端口存在生存期,長時間A和Server無通信,該端口即宣告無效。
        就是這些麻煩,使得我們的連接過程必須繞很多彎。
        A和B的通信,就是借助事先AB分別與Server連接時,在各自的網關處建立的端口映射來通信。為避免上面的2、3點麻煩,A和B在初次連接時,必須幾乎同時向對方發包。
        如果A、B不同時發包給對方,它們各自的網關就會慮掉對方的包,因為該包不是Server發來的包,叫做不請自來的包。
        并且,即便AB各自的網關不慮掉非Server發來的包,它們各自的Nat端口也有一個時效。那么A與Server,B與Server就不得不發心跳包,以維持各自的映射端口,保證其不失效。
        上面的過程中,如果A和B建立連接失敗,可以循環這個過程,直到一個有限的次數之后,仍不能連接則宣告失敗。

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        不同局域網間的P2P通信技術

        不同局域網間的P2P通信技術:P2P(Peer-to-Peer)即對等網絡。P2P(Peer to Peer)網絡結構區別于Client/Server結構或Browser/Server結構最顯著的特點是整個網絡不存在中心節點(或中心服務器),其中的每一個節點(peer)大都同時具有信息消費者、信息提供者和信息通訊等三方面的功能。
        推薦度:
        標簽: 不同 技術 通信
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲免费人成在线视频观看| 亚洲国产成人a精品不卡在线| 亚洲欧洲国产精品香蕉网| 国产午夜亚洲精品不卡免下载| 最近免费中文字幕大全视频 | 最近最好的中文字幕2019免费 | 亚洲国产一区明星换脸| 免费观看久久精彩视频| 国产亚洲视频在线观看| 激情五月亚洲色图| 精品亚洲AV无码一区二区三区| 亚洲欧洲精品久久| 亚洲理论片在线中文字幕| 亚洲另类古典武侠| 亚洲精品永久在线观看| 鲁啊鲁在线视频免费播放| 免费人成再在线观看网站| 一级特黄aaa大片免费看| fc2免费人成在线| 日本黄色动图免费在线观看| 久久久久久久久久国产精品免费 | 久久久久亚洲精品影视 | 免费观看激色视频网站(性色)| 亚洲一区免费观看| 岛国av无码免费无禁网站| 亚洲色欲色欲www在线播放| 热99re久久免费视精品频软件| 另类专区另类专区亚洲| 狠狠综合久久综合88亚洲| 久9热免费精品视频在线观看| 亚洲婷婷综合色高清在线| 成人啪精品视频免费网站| 深夜福利在线免费观看| 亚洲精品亚洲人成在线观看| 亚洲成人免费在线| 欧美日韩亚洲精品| 久久久久久a亚洲欧洲AV| 青青青国产免费一夜七次郎| 在线播放免费人成毛片乱码| 亚洲AV无码国产精品色| AV在线播放日韩亚洲欧|