穿NAT的方法的核心思想及實現

2021-04-06 20:55:15 字數 1840 閱讀 5733

本來題目是幾種,不過寫到這裡的時候,其中的一些東西已經被其它文章所含概了,所以這裡只談nat的穿透的核心思想:punch技術,我稱之為對穿.

(1)先來說對穿的工作原理

在這裡我用兩個都是在port restrict cone nat後面的uac做例子,假設乙個是 a,乙個是d。兩個nat 分別是b和c。

先來說對穿的過程

step1:uac a通過a的porta向stun伺服器傳送資料報,得到本socket的nat的外網ip和埠portnat,注意,此時,這個portnat已經和stun的ip和port繫結在了一起,這個斷口將拒絕一切非stun的ip和對應埠的資料報。

step2:現在,假設另一ip(為e),通過某種方法(如sip server)得到了此ip和portnat,在t1時刻,開始不停通過porte向此ip和portnat傳送資料報。很不幸的,根據port restrict cone nat的原理,這些資料報將被nat全部拒絕,因為此時,這個portnat已經被繫結給了stun的ip和port,因此他拒絕一切非stun的ip和port發來的資料報,而e發來這些資料報不符合這個port的通過要求,因此這些資料被nat全部過濾掉,也更不可能到達a。

step3:在t2時刻a在次通過a的porta向e的ip和埠porte傳送了若干個資料報。這是關鍵,然後如何呢?讓我們來分析一下:

對於nat來說,a的傳送port沒有改變,因此根據cone nat的原理,它仍然用在step1中開啟的埠portnat向e傳送資料報。對應的,nat的此port的幫定也就發生了變化,它允許來自e的porte埠的資料報通過nat,到達a。這也就意味著,t2時刻以後的來自e的資料報a都可以接收到。

(2)sip中rtp流的對穿過程

應該說,如果你理解了上面穿透過程,以下的東西是很好理解的。

首先,a通過sip信令得到d在nat c的ip和rtp接收埠portd,並且開始向此ip和port傳送rtp流。同樣的d也隨後想a的nat b的ip和port傳送rtp流。

理想的情況,在a或d傳送的rtp流還沒有到達對方之前,a,d都已經開始了傳送rtp流,這樣,a和d傳送出來的資料就都不會被對方的nat拒絕。遺憾的是這是很難做到的,通常都是一方到達,而另一放的資料還沒有開始傳送,而在現實中,這種情況佔了絕大部分。

假設d傳送過來的rtp流已經到達了a所在nat b的rtp接收埠,而此時,a還沒有通過此埠向d傳送資料,那麼這些包將被無情的拒絕。而一旦a通過這個埠傳送了資料,那麼以後d傳送來的資料,能夠全部通過nat,到達a,這也就完成了rtp的穿越。同樣的情況也發生在nat c,a傳送的資料也可以通過c到達d。

(3)對稱nat下,對穿失敗的原因所在

實際上,對稱nat失去了可以對穿的基礎:port不變。下面說下失敗過程。

當a通過本地埠pa向stun伺服器傳送資料報,得到本埠在nat上的影射埠pb,並把此埠作為rtp接收流的port。通過sip信令,這個port被告之給了d,d隨後向這個port傳送資料報,此時,a通過本地埠pa向d傳送資料報。如果是cone nat,nat仍然會用a向stun傳送資料的埠傳送資料,可是,遺憾的是,對於對稱nat,nat會重新開啟乙個新的port,用來傳送給d的這些資料。也就是說,a期望這些資料通過最開始得到的影射埠pb來向d傳送這些資料報,而nat卻沒有這麼做。所以,d發來的資料永遠能不能滿足進入規則,這些包將被永遠丟棄。

(4)額外的一些思考

前面已經說過,在實際的應用中,一方的資料報都會在另外一放開始傳送資料出去之前到達對方,這也就意味著這些資料報將被丟失。所以,在音訊rtp傳輸中,你有可能只聽到聲音「喂」的後一半,雖然有些不舒服,但畢竟影響不大,還是可以被人接受的。

另乙個方法是在開始接通之前,傳送冗餘資料,直到接收到對方來的資料之後才開始發真正的資料報,但這樣又給**的編寫提出了要求,也增加了系統的不穩定因素。

穿NAT的方法的核心思想及實現

本來題目是幾種,不過寫到這裡的時候,其中的一些東西已經被其它文章所含概了,所以這裡只談 的穿透的核心思想 punch技術,我稱之為對穿 先來說對穿的工作原理 在這裡我用兩個都是在port restrict cone 後面的 做例子,假設乙個是 乙個是 兩個 分別是 和 先來說對穿的過程 通過 的po...

排序方法的核心思想總結

總結一下排序演算法中的核心思想 1.bubblesort 冒泡法的核心是雙重迴圈 第一層迴圈表明需要輪次的次數,他的變數i只是標記輪換了多少次,與交換沒有直接關係,在乙個陣列中,需要輪次數為a.length 1次,所以i的取值可設定為1 a.length 1。第二層迴圈的變數表示的為a j 與a j...

ERP的核心思想

erp enterprise resource planning,企業資源計畫系統 的概念,是美國gartner group公司於1990年提出的,其確切定義是 mrp 企業製造資源計畫 下一代的製造業系統和資源計畫軟體。除了mrp 已有的生產資源計畫,製造 財務 銷售 採購等功能外,還有質量管理,...