关于端口的基础(摘)

网络端口分两种,一种是实体的端口,也叫接口比如 USB 端口、串型端口等,还有一种网络端口是网络协议规定好的,是虚拟出来完成计算机之间互相通讯的,那么为什么是 65535 而不是更多呢?

因为 TCP/IP 协议里规定的啦,规定协议是人定的,当然不是越多越好,够用就好了,何必搞那么多,大家都知道计算机是底层是二进制的世界,然而 2 的 16 次方正好是 65536 ,从 0 到 65535 正好是 65536,那为什么是 16 次方呢?

16 正好是 2 的 4 次方,你看到这些数字都是 2 的 n 次方,这也是二进制的特征,如果不选 2 的 16 次方,那么只有 2 的 8 次方或者 2 的 32 次方,不是太大就是太小,所以就算了 2 的 16 次方,不多不少正合适。

俗话说,无规矩不成方圆,为了防止堵车,路口设置了红绿灯,为了能够找到相对应的人,家家户户都有自己的门牌号,计算机之间的通信当然也不能没有规矩,端口号也不是随便设置的,如果你非要随便设置那也没人会阻止你,唯一会影响的就是你与其他计算机之间的通信罢了,那么设置端口有哪些规则呢?

规则设计者只负责管理 0 到 1023 之间的端口,而 0 到 255 之间到端口是用来给公共应用来用的,比如 ftp 的 21、ssh 的 22、http 的 80 等,256 到 1023 之间的端口用来分配给各个公司使用,而 1024 到 65535 之间的端口,官方叫临时端口,大家可以随意设置,至于是不是你的专属端口号,那就看你的知名度如何了,用你应用的人多,自然你的端口号就耳熟能详,用的人少,自然大家也不会把这个端口号默认给你,用的多的比如 mysql 的 3306、mssql 的 1433、oracle 的 1521 等。

每个端口都会对应一个应用或者服务,有自己专门的协议,大多数都是 TCP 协议,还有部分 UDP 协议,具体协议的选择也是根据应用的特点来定的,端口号和 IP 就相当于我们目的地的坐标,协议就是我们现实中如何到达目的地的方式,具体选择何种方式就看你对于结果的要求是什么了。
68b5025d5007432a884db049bce5e8ef_ports.jpg