路由器如何处理'众所周知的'来自主机的端口

时间:2015-11-06 16:21:17

标签: sockets routing

非常短的燃烧。让我们说user1连接到互联网并运行http服务器@ local。他需要设置端口转发才能工作。将所有传入请求从公共IP重定向到本地ip的端口80.

我的疑问是,User1打开了mozilla firefox,比方说,端口12343,由操作系统分配。 从这个,(192.168.0.14:12343)到google.com:80 ...有时我们的路由器将传入端口更改为另一个端口@ NAT。明确..  我的问题:路由器是否有任何端口转发设置来处理路由数据包..即,来自谷歌的请求:80到:12343。如果在任何协议套件层出错,请纠正我。我是新来的。

2 个答案:

答案 0 :(得分: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.1替换为192.168.1.1(例如,2.2.2.2),并为其提供一个端口 - 例如,54321它还在其映射表中创建一个条目,表明从外部为端口54321传入的所有流量都将转发到192.168.1.1,端口12345.StackOverflow服务器将流量视为来自网关,并作出响应到网关地址和端口。 Gatewat看到响应,查询映射表并将其转发到本地机器,浏览器可以看到它 - 因此我的答案显示在屏幕上。

答案 1 :(得分:0)

我认为这里与NAT无关。 NAT只是将内部本地地址(如192.168.1.1)转换为外部全局地址(如139.130.4.5)。我希望你对OSI模型有足够的了解。让我解释一下。当数据包到达传输层时,操作系统会为其分配一个随机端口号(范围为0-65535)(TCP或UDP)。但是,操作系统只能将数字从49152移植到65535,因为有几个端口已注册或用于某些特定进程。端口用于标识服务或进程。添加端口号后,数据包将被提供给网络层,从而添加数据包的源地址和目标地址。切换是在网络层中发生的过程。该交换机制负责​​数据包的源到目的地传送。 Internet使用分组交换。当您在此交换机制中发送数据包时,数据包将路由到源和目标之间的多个交换机。通过这些交换机发送的每个数据包都基于交换表或路由表进行路由。该表包含MAC地址和交换机的物理端口等详细信息,通过该端口接收和发送数据包。 这是路由器或交换机内发生的唯一端口转发。将数据包传送到指定的MAC地址是交换机的唯一职责。

您通过路由器发送的每个数据包都会根据路由表转到目的地。在该层中有几个协议可以使源到目的地的传递成为可能,其中一些是ARP,IP,RARP等。

此外,数据包在顶层向下移动时使用来自顶层的信息进行封装。因此,在接收方,数据包将在网络层进行解封装,然后将其移至传输层,然后解封装打包并将其发送到端口上相应的进程库。

所以,我所说的是与进程(端口号)和路由器的物理端口没有任何关联。确实,数据包通过路由器的物理端口传输,但它不知道发送数据包的进程。