端口及其特点
如果 IP 是用来定位街区的,那么端口就是对应于该街区中每一户的门牌号 。在通讯过程中,数据通过各种通讯协议最终抵达设备(如计算机)后,这里的设备就相当于一个街区,而在设备计算机内部有很多程序在跑,数据进来之后,必须要给它一个对应的门牌号(即端口号),程序才方便进行后续操作
端口号属于传输协议的一部分,因此我们可以说,数据通过 IP 地址发送对应的数据到指定设备上,而通过端口号把数据发送到指定的服务或程序上
程序一般不止是监听指定的端口号,而且也会明确对应的传输协议 。所以我们在进行数据传输的时候,既要指定对应的端口号,也要指定对应的通讯协议,很多人仅仅会说:程序 A 监听着 33001 端口,这个是不正确的,至少是不完全正确的 。相应的,我们应该这样说:程序 A 使用 TCP 协议,监听 33001 端口,当然你也可以说:程序 A 使用 UDP 协议,监听 33001 端口
指定传输协议和端口,显而易见的好处在于,当我们进行端口转发或者构建网络防火墙的时候,我们可以很方便的通过协议和端口进行隔离 。以防止不可预见的意外发生 。对于计算机来说,通过这种方式可以防止外网各种不必要的数据,进入本地局域网
你可能会想,这么多端口号,如果大家都用同一个,那不是也有冲突 。没错,这就需要一个专门的组织来管理它们,IANA( Internet Assigned Numbers Authority 即互联网号码分配局 ),它负责管理端口注册 。大多数主流的程序,都有一个明确的已注册端口,比如常见的 FTP 监听 20、 21 端口,而 HTTP 服务监听 80 端口等 。如果有一个程序想注册某个端口,那么 IANA 会先去查一查这个端口是否已被注册,如果已经被注册了,它则会拒绝申请
端口号根据范围分为三种
- Well-Known Ports(即公认端口号)
- Registered Ports(即注册端口)
- 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
推荐阅读
- 5分钟理解SSH的工作原理
- 深入理解Java中方法的参数传递机制
- 小米水饭煮几分钟 小米粥煮10分钟能熟吗
- 递归与动态规划算法时间复杂度的简单理解
- 仅需 5 分钟,彻底理解 cookie、session、token
- TCP到底怎样流量控制的?
- 简单理解JavaScript,TypeScript和JSX
- 要做到相互理解和包容 人是相互的 婆媳之间
- 深入理解TCP/IP协议
- 如何理解戒定慧三学 戒定慧三学