我正在尝试了解与网络端口相关的内容,因为我不太清楚。
问题是,为什么不能对传入和传出流量使用相同的端口号?
这个问题是由于一些关于 NAT 端口转发的建议而产生的。
据我所知,IP 数据包标头包含源地址和目标地址的字段,我想这就是您确定数据包是传入还是传出所需的全部信息。
我意识到这是一个简单的问题。如果有您可以向我指出的学习资源,您认为这些资源有助于从基础知识建立对网络的更深入理解,我会很感激这些链接,即使有很多东西需要学习。
谢谢。
我正在尝试了解与网络端口相关的内容,因为我不太清楚。
问题是,为什么不能对传入和传出流量使用相同的端口号?
这个问题是由于一些关于 NAT 端口转发的建议而产生的。
据我所知,IP 数据包标头包含源地址和目标地址的字段,我想这就是您确定数据包是传入还是传出所需的全部信息。
我意识到这是一个简单的问题。如果有您可以向我指出的学习资源,您认为这些资源有助于从基础知识建立对网络的更深入理解,我会很感激这些链接,即使有很多东西需要学习。
谢谢。
你可以,有些协议可以(isakmp),但它不是很灵活。有两个缺点:
最终,使用众所周知的端口作为目标端口和临时端口提供最大的灵活性。
物理端口可以并且用于接收和发送,除非该端口已被专门配置为半双工。
我认为您感到困惑的是与物理端口无关的实际端口源和目标。
当涉及到 NAT 时,目的端口号和源端口号会有所不同。位于提供服务的服务器上的目标端口号,例如用于 HTTP 的端口 80。软件将在此端口号上接收许多连接请求,并且软件将需要为进入的每个连接区分不同的进程。
源端口号将是一个随机选择的上层端口,不用于任何特定服务,这将驻留在客户端设备上,因为它们是连接的源。这也有助于软件区分为不同客户端建立的各种连接。想象一下有数百个同时连接的 HTTP 服务器,更不用说浏览器将在端口 80 本身作为目的地进行的不同连接。当数据回来时,它依靠源端口号告诉软件数据在堆栈模型的上层中的目的地。
NAT 使用源端口号来管理进行 NAT 的不同连接。如果它们都使用相同的源端口,那么使用它的表的 NAT 将无法区分不同的连接,并且知道它需要将数据转发到本地网络上的哪里。所以源端口被映射到一个只要 TCP 连接仍然存在,就在 NAT 内部的本地 IP 地址。
为了更好地了解正在发生的事情并了解为什么源端口不能相同,请查看此资源:
http://www.firewall.cx/networking-topics/protocols/tcp/133-tcp-source-destination-ports.html
希望这对您的追求有所帮助。
困人
如果您的问题是关于与 UDP 或 TCP 关联的服务端口,那么对于传入和传出流量使用相同的端口是没有异议的。传入和传出流量都与其方向无关。
当应用程序托管在 webserver 上时。应用程序托管在特定服务端口示例 tcp-443 或任何其他端口上。最初,服务必须处于服务器端特定端口的侦听模式,在这种情况下,当流量传入时,此特定端口应在其通往目的地的路径上在网络级别打开。同样的情况也适用于出站流量。