目录、参考文献
端口号(Port numbers)是 16 位的非负整数(从 0 到 65535)
每个 IP 地址有 65536 个端口号,使用端口号的传输层协议用它来确定正确的接收应用
对于客户端/服务器应用程序来说(第 1.5.1 节),一个服务器首先 “ 绑定 ” 到一个端口号
然后,一个或更多的客户端使用传输层协议建立起到这个端口号的连接
标准的端口号由互联网数字分配机构(Internet Assigned Numbers Authority (IANA))分配
端口号被分为几个特定的范围
通常,服务器如果想要绑定知名端口号,需要获得特殊的权限,例如管理员或 “ root ” 访问
知名端口号被用于一些常见的服务,如:
拥有多个端口的协议(如:HTTP 与 HTTPS)具体使用哪个端口
通常取决于应用层协议是否使用了安全传输层协议(Transport Layer Security (TLS))(见第 18 章)
大多数的标准端口号都是奇数的,这是历史原因造成的
这些端口号沿用了 NCP 端口号
网络控制协议(Network Control Protocol (NCP))是一个在 TCP 之前,ARPANET 使用的传输层协议
NCP 是单工的,所以每个应用程序需要两个连接
NCP 为每个应用程序保留了两个成对的端口号,一个奇数一个偶数
TCP 与 UDP 都是全双工的,只需要为每个应用保留了一个端口号,沿用了 NCP 中的奇数端口号
有特殊权限的客户端与服务器可以使用已注册端口号,但 IANA 为特殊用途保留了一个注册中心
在开发新应用程序时,通常应该避免使用已注册端口号,除非获得了 IANA 的分配
动态(私人)端口号的使用本来是没有限制的
但在有些情况下(如:客户端)在使用的时候需要避免重复使用别人已经占用的同一个 IP 上的端口号,这些端口号是临时分配的
这些端口号也被称为临时(ephemeral)端口号
之所以是临时的,是因为通常只有当用户为了访问服务运行客户端时才会用到
这个端口号不需要固定下来,以为服务端并不需要在将来通过这个端口号来找到客户端
相反的,服务端通常需要一个不常变动的名称与端口号以便客户端能找到
目录、参考文献