10分钟理解TCP、UDP 和端口号( 二 )


端口及其特点
如果 IP 是用来定位街区的,那么端口就是对应于该街区中每一户的门牌号 。在通讯过程中,数据通过各种通讯协议最终抵达设备(如计算机)后,这里的设备就相当于一个街区,而在设备计算机内部有很多程序在跑,数据进来之后,必须要给它一个对应的门牌号(即端口号),程序才方便进行后续操作
端口号属于传输协议的一部分,因此我们可以说,数据通过 IP 地址发送对应的数据到指定设备上,而通过端口号把数据发送到指定的服务或程序上
程序一般不止是监听指定的端口号,而且也会明确对应的传输协议 。所以我们在进行数据传输的时候,既要指定对应的端口号,也要指定对应的通讯协议,很多人仅仅会说:程序 A 监听着 33001 端口,这个是不正确的,至少是不完全正确的 。相应的,我们应该这样说:程序 A 使用 TCP 协议,监听 33001 端口,当然你也可以说:程序 A 使用 UDP 协议,监听 33001 端口
指定传输协议和端口,显而易见的好处在于,当我们进行端口转发或者构建网络防火墙的时候,我们可以很方便的通过协议和端口进行隔离 。以防止不可预见的意外发生 。对于计算机来说,通过这种方式可以防止外网各种不必要的数据,进入本地局域网
你可能会想,这么多端口号,如果大家都用同一个,那不是也有冲突 。没错,这就需要一个专门的组织来管理它们,IANA( Internet Assigned Numbers Authority 即互联网号码分配局 ),它负责管理端口注册 。大多数主流的程序,都有一个明确的已注册端口,比如常见的 FTP 监听 20、 21 端口,而 HTTP 服务监听 80 端口等 。如果有一个程序想注册某个端口,那么 IANA 会先去查一查这个端口是否已被注册,如果已经被注册了,它则会拒绝申请
端口号根据范围分为三种

  1. Well-Known Ports(即公认端口号)
它是一些众人皆知著名的端口号,这些端口号固定分配给一些服务,我们上面提到的 HTTP 服务、 FTP服务等都属于这一类 。知名端口号的范围是:0-1023
  1. Registered Ports(即注册端口)
它是不可以动态调整的端口段,这些端口没有明确定义服务哪些特定的对象 。不同的程序可以根据自己的需要自己定义,注册端口号的范围是:1024-49151
  1. Dynamic, private or ephemeral ports(即动态、私有或临时端口号)
 
顾名思义,这些端口号是不可以注册的,这一段的端口被用作一些私人的或者定制化的服务,当然也可以用来做动态端口服务,这一段的范围是:49152–65535
参考资料:
  • List of TCP and UDP port numbers
  • Understanding TCP/IP Network Stack & Writing Network Apps
  • UDP and TCP, two ways of sending traffic
  • TCP and UDP Ports Explained
  • TCP/IP Ports and Sockets Explained
  •  




推荐阅读