關(guān)于NAT和P2P約會

關(guān)于NAT和P2P約會

NAT是什么擂找?

簡介

網(wǎng)絡地址轉(zhuǎn)換(NAT,NetworkAddress Translation)屬接入廣域網(wǎng)(WAN)技術(shù)霹俺,它將內(nèi)網(wǎng)地址轉(zhuǎn)換為外網(wǎng)地址嗡载,能夠讓多個的內(nèi)網(wǎng)地址共用一個外網(wǎng)地址來連接互聯(lián)網(wǎng)揽咕。

出現(xiàn)的原因

IPv4公網(wǎng)地址不夠用。

基本設計思想

IP不夠端口來湊拗踢。NAT設備將內(nèi)網(wǎng)的不同地址(1. IP不同岩臣;2.IP相同但端口不同)轉(zhuǎn)換為外網(wǎng)同一個IP的不同端口溜嗜,從而就減少了對外網(wǎng)地址的需求量。

NAT行為類型

按照RFC 4787的分類方法架谎,NAT主要有兩種行為:

  1. mapping Behavior(映射行為):即炸宵,內(nèi)網(wǎng)地址向外發(fā)送數(shù)據(jù)時,NAT設備按照什么規(guī)則來創(chuàng)建或重用端口谷扣。
  2. Filtering Behavior(過濾行為):即土全,當外網(wǎng)地址向NAT映射的地址發(fā)送數(shù)據(jù)時,NAT設備按照什么規(guī)則來過濾數(shù)據(jù)会涎。

每種行為有三種類型:

  1. Endpoint-Independent(地址端口都不依賴型)
  2. Address-Dependent(地址依賴型)
  3. Address and Port-Dependent(地址端口依賴型)

為方便理解裹匙,先假設一個已建立的NAT關(guān)系:內(nèi)網(wǎng)地址A:a<——>NAT設備B:b<——>外網(wǎng)地址C:c。

映射行為 解釋說明(內(nèi)網(wǎng)向外網(wǎng)發(fā)送數(shù)據(jù)時的行為)
地址端口都不依賴型 內(nèi)網(wǎng)地址A:a向外網(wǎng)發(fā)送數(shù)據(jù)末秃,不管外網(wǎng)地址是多少概页,NAT設備都會映射為B:b。
地址依賴型 A:a向外網(wǎng)發(fā)送數(shù)據(jù)练慕,只要外網(wǎng)的IP地址為c惰匙,不管端口是多少,NAT設備就會映射為B:b铃将;否則映射為其它地址项鬼。
地址端口依賴型 A:a向外網(wǎng)發(fā)送數(shù)據(jù),只有當外網(wǎng)的IP地址為c且端口為3劲阎,NAT設備才會映射為B:b秃臣;否則映射為其它地址。
過濾行為 解釋說明(外網(wǎng)向內(nèi)網(wǎng)發(fā)送數(shù)據(jù)時的行為)
地址端口都不依賴型 B:b收到外網(wǎng)數(shù)據(jù)哪工,不管外網(wǎng)的IP和端口是多少,NAT設備都會轉(zhuǎn)發(fā)給A:a弧哎。換句話說雁比,來者不拒。
地址依賴型 B:b收到外網(wǎng)數(shù)據(jù)撤嫩,只要外網(wǎng)的IP地址為c偎捎,不管端口是多少,NAT設備就會轉(zhuǎn)發(fā)給A:a;否則茴她,過濾掉寻拂。
地址端口依賴型 B:b收到外網(wǎng)數(shù)據(jù),只有外網(wǎng)的IP地址為c且端口為3丈牢,NAT設備才會轉(zhuǎn)發(fā)給A:a祭钉;否則,過濾掉己沛。

說明:NAT映射后慌核,如果沒有數(shù)據(jù)交互,會在一段時間內(nèi)被釋放掉申尼。

P2P約會

背景

因為NAT的存在垮卓,所以兩個不同局域網(wǎng)內(nèi)的終端A和終端B想要建立點對點的通信就會遇到障礙,原因:

  1. 不知道對方經(jīng)過NAT轉(zhuǎn)換后的公網(wǎng)地址师幕;
  2. 即使知道對方的公網(wǎng)地址粟按,但由于NAT過濾行為的限制,數(shù)據(jù)也可能因被過濾掉而無法傳達給對方霹粥;

下面介紹一種在某些情況下可以建立點對點通信的方法灭将,我們擬人化地稱之為P2P約會,約會過程需要借助一個約會服務器來進行牽線蒙挑。

實現(xiàn)步驟和原理

步驟1:注冊

約會雙方A和B要先注冊到約會服務器宗侦,并定時向約會服務器發(fā)送心跳包來維持NAT不會被刷新掉。

注冊成功后忆蚀,約會服務器能夠獲取終端的信息矾利,主要包括:

  1. 身份唯一標示符
  2. 內(nèi)網(wǎng)地址(例如:A:a和B:b)
  3. 外網(wǎng)地址 (例如:A1:a1和B1:b1)

步驟2:約會請求

當A想要和B約會時

  1. A先向約會服務器請求要和B進行約會;
  2. 約會服務器向A提供B的聯(lián)系方式(內(nèi)網(wǎng)地址B:b和外網(wǎng)地址B1:b1)馋袜;
  3. 另外男旗,約會服務器把A的約會請求轉(zhuǎn)告給B,并向B提供A的聯(lián)系方式(內(nèi)網(wǎng)地址A:a和外網(wǎng)地址A1:a1)欣鳖;

步驟3:互發(fā)PING消息

  1. 后面的事情就和約會服務器沒有任何關(guān)系了察皇,A和B同時嘗試分別向?qū)Ψ降膬?nèi)外網(wǎng)地址發(fā)送PING消息;

    ?

    ?

    ?

    說明

    • 對于終端A泽台,a1是和約會服務器打的洞什荣,a2是向B發(fā)送PING消息打的洞。a1和a2可能是同一個洞怀酷,也可能不是稻爬,這取決于NAT設備的映射行為類型,當映射行為類型是“地址端口都不依賴型”時蜕依,a1等于a2桅锄;
    • 對于終端B琉雳,和終端A同理。

什么情況下可以一方可以收到另一方的PING消息友瘤?

  1. 雙方在同一個局域網(wǎng)內(nèi)翠肘;
  2. 雖然不在一個局域網(wǎng)內(nèi),但滿足以下幾種情況辫秧;

(此處以A向B發(fā)送的PING消息進行講解束倍,反之亦然。)

  • 情況一:B1的NAT過濾行為屬于“地址端口都不依賴型”茶没,其他條件不限
  • 情況二:B1的NAT過濾行為屬于“地址依賴型”肌幽,且b1==b2(即B1的NAT映射行為類型屬于“地址端口都不依賴型”),其他條件不限
  • 情況三:B1的NAT過濾行為屬于”地址端口依賴型“抓半,且b1==b2(即B1的NAT映射行為類型屬于“地址端口都不依賴型”)喂急,且a1==a2(即,A1的NAT映射類型屬于”地址端口都不依賴型“)笛求,其他條件不限

步驟三:響應PONG

當一方收到另一方的PING消息后廊移,就響應PONG消息。當任意一方收到對方的PONG消息探入,就說明雙方已經(jīng)打通可以進行雙向交互的通道狡孔,即約會成功。

步驟四:do what you want

當約會成功后蜂嗽,A和B就可以進行直接通信了苗膝,根據(jù)業(yè)務需要想做啥就做啥,比如下載文件等植旧。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末辱揭,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子病附,更是在濱河造成了極大的恐慌问窃,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件完沪,死亡現(xiàn)場離奇詭異域庇,居然都是意外死亡,警方通過查閱死者的電腦和手機覆积,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進店門听皿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人宽档,你說我怎么就攤上這事写穴。” “怎么了雌贱?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵啊送,是天一觀的道長。 經(jīng)常有香客問我欣孤,道長馋没,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任降传,我火速辦了婚禮篷朵,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘婆排。我一直安慰自己声旺,他們只是感情好,可當我...
    茶點故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布段只。 她就那樣靜靜地躺著腮猖,像睡著了一般。 火紅的嫁衣襯著肌膚如雪赞枕。 梳的紋絲不亂的頭發(fā)上澈缺,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天,我揣著相機與錄音炕婶,去河邊找鬼姐赡。 笑死,一個胖子當著我的面吹牛柠掂,可吹牛的內(nèi)容都是我干的项滑。 我是一名探鬼主播,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼涯贞,長吁一口氣:“原來是場噩夢啊……” “哼枪狂!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起肩狂,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤摘完,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后傻谁,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體孝治,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年审磁,在試婚紗的時候發(fā)現(xiàn)自己被綠了谈飒。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,852評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡态蒂,死狀恐怖杭措,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情钾恢,我是刑警寧澤手素,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布鸳址,位于F島的核電站,受9級特大地震影響泉懦,放射性物質(zhì)發(fā)生泄漏稿黍。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一崩哩、第九天 我趴在偏房一處隱蔽的房頂上張望巡球。 院中可真熱鬧,春花似錦邓嘹、人聲如沸酣栈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽矿筝。三九已至,卻和暖如春鲸阻,著一層夾襖步出監(jiān)牢的瞬間跋涣,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人盒刚。 一個月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像沛贪,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子震贵,可洞房花燭夜當晚...
    茶點故事閱讀 45,851評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 一利赋、什么是NAT?為什么要使用NAT猩系? NAT是將私有地址轉(zhuǎn)換為合法IP地址的技術(shù)媚送,通俗的講就是將內(nèi)網(wǎng)與內(nèi)網(wǎng)通信時...
    莫太極閱讀 1,651評論 0 9
  • Teredo 原理概述 http://www.ipv6bbs.cn/thread-144-1-1.html (出處...
    我是葉問小盆友閱讀 1,986評論 0 1
  • 什么是NAT NAT(Network Address Translation),網(wǎng)絡地址轉(zhuǎn)換寇甸。是1994年提出的塘偎。...
    賊厲害閱讀 10,244評論 5 13
  • 我又談戀愛了,比我大十歲拿霉,有錢吟秩,依舊不愛。因為寂寞而饑不擇食绽淘,因為理智而保持距離涵防。老王說,什么時候你能放下防備沪铭,才...
    堅強的花束子閱讀 256評論 0 0
  • wephone創(chuàng)始人壮池,跳樓自殺偏瓤。香港教育長的孩子跳樓自殺。這兩件事并沒有什么關(guān)聯(lián)椰憋,但都有一個特點硼补,他們兩個都是非常...
    薩拉zanetti閱讀 278評論 0 0