我可能听起来很傻,但我似乎对端口号的用途感到困惑。
有人提到端口地址用于使用我得到的 pat 进行端口转换。在某处提到端口地址唯一标识主机内的进程,如果是这样,主机如何唯一确定,因为我们需要端口地址和 ip。
我可能听起来很傻,但我似乎对端口号的用途感到困惑。
有人提到端口地址用于使用我得到的 pat 进行端口转换。在某处提到端口地址唯一标识主机内的进程,如果是这样,主机如何唯一确定,因为我们需要端口地址和 ip。
端口号用作主机上的子地址。这样,多个服务可以在单个主机上运行,并且可以使用相同的传输协议同时建立多个连接,例如 TCP 端口 80 上的 HTTP,TCP 端口 21 上的 FTP,TCP 端口 25 上的 SMTP,......
使用源 NAT - 将许多本地 IP 地址转换为单个公共 IP 地址(或少量) - NAT 路由器通常使用与本地客户端不同的传出端口,因此不会发生资源冲突。
端口号是某些传输(OSI 第 4 层)协议的地址:TCP 和 UDP。主机进程在特定端口号绑定到 TCP 或 UDP,并且传输协议将任何以该端口号为目的地的数据发送到绑定到该端口号的进程。
重要的一点是,通过TCP和UDP使用的端口是不同的,即使他们是同一个号码:TCP端口1234是不一样的UDP端口1234。只有一个主机进程同时可以绑定到TCP端口1234,但另一个进程可以在进程使用 TCP 端口 1234 的同时绑定到 UDP 端口 1234。
并非所有传输协议都使用端口号。有些使用其他地址进行寻址,有些则不使用任何寻址。
NAT(网络地址转换)将更改 IPv4 数据包的源地址、目标地址或这两个地址,但这需要每个地址转换的地址。NAPT(网络地址端口转换)还将转换 TCP 或 UDP 的端口号,允许将多个地址转换为单个地址。
RFC 2663,IP 网络地址转换器 (NAT) 术语和注意事项解释了:
4.1.2. 网络地址端口转换 (NAPT)
NAPT 通过还翻译传输标识符(例如,TCP 和 UDP 端口号、ICMP 查询标识符)进一步扩展了翻译的概念。这允许将多个私有主机的传输标识符多路复用为单个外部地址的传输标识符。NAPT 允许一组主机共享一个外部地址。请注意,NAPT 可以与基本 NAT 结合使用,以便将外部地址池与端口转换结合使用。
对于从专用网络出站的数据包,NAPT 将转换源 IP 地址、源传输标识符和相关字段,例如 IP、TCP、UDP 和 ICMP 标头校验和。传输标识符可以是 TCP/UDP 端口或 ICMP 查询 ID 之一。对于入站数据包,将转换目标 IP 地址、目标传输标识符以及 IP 和传输标头校验和。
了解 TCP 和 UDP 端口号是分开的。TCP 不会转换为 UDP,反之亦然。使用 NAPT 的 TCP 段会将其端口号转换为 TCP 端口,使用 NAPT 的 UDP 会将其端口号转换为 UDP 端口号,即使它们是相同的编号。TCP 和 UDP 可以同时使用相同的数字,因为它们是不同的协议。
端口用于允许多个客户端和服务器在同一主机上同时使用相同的传输协议。传输协议、本地 IP、本地端口、远程 IP 和远程端口的组合唯一标识一个连接。
并非所有传输协议都使用端口,但大多数重要协议都使用端口。TCP、UDP 和 SCTP 都使用端口。ICMP 本身不使用端口,但 ICMP 查询 ID 有类似的用途。
通常的约定是服务器使用众所周知的端口,而客户端使用随机选择的端口。这允许同一协议的多个连接在两台机器之间共存。
一对多 NAT(又名 NAPT、PAT)将网络隐藏在单个 IP(或有时是 IP 池)后面。为此,它会跟踪连接,以便在内部 IP/端口组合和外部 IP/端口组合之间进行转换。
有时需要替换内部端口号以避免歧义。不同的 NAT 实现将有不同的策略来确定如何完成此操作以及端口号是无条件替换还是仅在需要消除歧义时替换。