2015-11-06 45 views
-1

很短的問題。假設user1已連接到互聯網並運行http server @ local。他需要設置端口轉發才能工作。重定向所有傳入的請求從公共ip到本地ip的端口80.路由器如何處理來自主機的「知名」端口

我的疑問是,User1打開mozilla firefox,可以說,端口12343,由os分配。 從此((192.168.0.14:12343)到google.com:80 ...有時我們的路由器將傳入端口更改爲另一個端口@NAT。清除.. 我的問題:是否有任何端口轉發設置在路由器處理路由數據包..即,請求從谷歌:80至:12343。如果在任何協議套件層出錯,請糾正我的錯誤。我是新來的。

回答

2

當通過NAT建立連接時,NAT維護內部端口和外部端口之間的映射。也就是說,當數據包從外部到達端口54321時,NAT知道將其轉發到內部網絡IP 192.168.0.1,端口12345.

爲了進一步解釋,讓我們詳細討論一下。我們來談談透明NAT。透明NAT是不需要對locla軟件進行任何特殊配置的(例如,與HTTP代理服務器不同)。它們通常用作網關,以便操作系統知道將網絡流量路由到這樣的網關(幾乎所有家庭路由器都以此模式工作)。

當某人從桌面 - 本地地址192.169.1.1,本地端口12345,遠程地址stackoverflow.com,遠程端口80 - OS將網絡指向網絡網關(192.168.1.0)打開網頁時。

網關看到來自192.168.1.1,端口12345的流量。在數據包上,它用它的外部IP(例如2.2.2.2)替換192.168.1.1,並給它一個端口 - 比方說54321。它也是在其映射表中創建一個條目,指示從外部端口54321傳入的所有流量將被轉發到192.168.1.1端口12345. StackOverflow服務器將流量視爲來自網關,並回應網關地址和端口。 Gatewat看到響應,諮詢映射表並將其轉發到本地機器,瀏覽器可以看到它 - 因此我的答案顯示在屏幕上。

+0

可以讓你更清楚一點。即,NAT包含一個當前被推送或調用的端口數據庫,並且只接受來自其數據庫中的端口的<目標端口>連接。是不是??? – Tibin

+0

不,爲什麼?我誤解了這個問題嗎? NAT不知道有哪些知名端口。 – SergeyA

+0

不..我在這裏得到了一個小火花..如果可能的話,解釋這一行。 NAT維護內部端口和外部端口之間的映射。,y 54321逆轉爲12345 – Tibin

0

我認爲這裏與NAT無關。 NAT只是將內部本地地址(如192.168.1.1)轉換爲外部全局地址(如139.130.4.5)。我希望你對OSI模型有足夠的瞭解。讓我解釋一下。當數據包到達傳輸層時,操作系統會爲其分配一個隨機端口號(範圍從0到65535),TCP或UDP。但是,操作系統只能從49152到65535端口號碼,因爲幾個端口已註冊或用於某些特定過程。端口用於標識服務或進程。在添加端口號後,將數據包發送給網絡層,並添加數據包的源地址和目標地址。交換是一個發生在網絡層的過程。這種交換機制負責​​從源到目的地傳遞數據包。互聯網使用分組交換。當您在此交換機制中發送數據包時,數據包將被路由到源和目標之間的多個交換機。每個通過這些交換機發送的數據包都基於交換表或路由表進行路由。該表包含諸如通過其接收和發送分組的交換機的MAC地址和物理端口的細節。 這是在路由器或交換機內發生的唯一端口。將數據包發送到指定的MAC地址是交換機的唯一職責。

通過路由器發送的每個數據包都會根據路由表進入其目標。有幾種協議在這一層工作,使源到目的地交付成爲可能,其中一些是ARP,IP,RARP等。

另外,當數據包向下移動層時,數據包被來自頂層的信息封裝。因此,在接收端,數據包將進入網絡層,然後進行解封裝,然後移到傳輸層,傳輸層然後將封裝解封裝並將其發送到端口上的相應處理基礎。

所以,我說的是沒有連接一個進程(端口號)和路由器的物理端口。確實,數據包通過路由器的物理端口傳播,但它不知道發送數據包的過程。

相關問題