⭐⭐⭐ Spring Boot 项目实战 ⭐⭐⭐ Spring Cloud 项目实战
《Dubbo 实现原理与源码解析 —— 精品合集》 《Netty 实现原理与源码解析 —— 精品合集》
《Spring 实现原理与源码解析 —— 精品合集》 《MyBatis 实现原理与源码解析 —— 精品合集》
《Spring MVC 实现原理与源码解析 —— 精品合集》 《数据库实体设计合集》
《Spring Boot 实现原理与源码解析 —— 精品合集》 《Java 面试题 + Java 学习指南》

摘要: 原创出处 古时的风筝 「风筝」欢迎转载,保留摘要,谢谢!


🙂🙂🙂关注微信公众号:【芋道源码】有福利:

  1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
  2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
  3. 您对于源码的疑问每条留言都将得到认真回复。甚至不知道如何读源码也可以请教噢。
  4. 新的源码解析文章实时收到通知。每周更新一篇左右。
  5. 认真的源码交流微信群。

每台计算机上都有 0~65535 共 65536 个端口,我们耳熟能详的web服务的80端和443端口,FTP 的21端口、SSH的22端口,还有MySQL 的默认的3306、Redis 默认的6379端口等等。

计算机的三类端口

计算机中分三大类端口,公认端口、常用端口和动态端口。

公认端口

从 0 到 1023 ,这1024个端口是由 IANA 这个机构统一分配的,IP地址、域名也是这个机构统一管理的。

现在这一区间的端口已经被分配完了,所以能分到这个区间端口的应用,除了命好外,还有就是生的早。

这一区间的端口不能随便被占用,比如说你在一台服务器上启动一个 Spring Boot 服务,能不能分配到22端口呢,按道理也是可以的。但是必须保证当前没有SSH服务在跑着,且启动Spring Boot 服务的比如是 root 账号。当你的服务把22端口占了,那正常的SSH服务就用不了了,你这台机器就没办法远程登录了。

如果你用过云服务器的话,在安全组设置里面,都会给 SSH、FTP、80、443这些专门列一个组出来,开启SSH服务,就默认是在防火墙中开启了 22 端口。但是,如果你想开放个19999这样的端口,就得自己设置了。

常用端口

1024 到 49151,这个区间内的端口任意一个应用程序都可以用。比如MySQL 默认是 3306,Redis 默认是6379,这一区间的端口哪个服务都可以随便用。

比如我做了一个服务也想用 6379端口可以不,当然可以,就看我的服务和 Redis 服务哪个先启动了,谁抢到是谁的,后面启动的那个只能改端口了。

动态端口

它们通常由操作系统动态分配给客户端应用程序,用于短期或临时通信。例如,当你打开一个浏览器访问网站时,操作系统会从这个端口范围内选择一个可用的端口来建立连接。

但其实和常用端口效果差不多。

SSH 如何抢到22端口的

SSH应用的作者 Tatu Ylonen 曾经讲述了他在 1995年获取这个端口的过程。

以下是 Tatu Ylonen 在1995年7月10日发给 IANA 组织的一封请求端口号的邮件。

“

1995年7月10日 11:45:48 发件人: Tatu Ylonen 收件人: Internet Assigned Numbers Authority 主题: 请求分配端口号

尊敬的先生,我编写了一款程序,用于在不安全的网络上安全地从一台机器登录到另一台机器。与现有的telnet和rlogin协议及实现相比,它在安全性和功能上有了显著的提升。特别是,它可以防止IP、DNS和路由欺骗。我的计划是将这款软件免费发布在互联网上,以便尽可能广泛地使用。我希望为这款软件获得一个注册的特权端口号。

这个端口号最好在1-255的范围内,以便可以在名称服务器的WKS字段中使用。下方我会附上协议的RFC草案。这款软件在本地已经使用了几个月,除了端口号之外,已经准备好发布。如果端口号分配能及时安排,我希望本周就能发布这款软件。我目前在测试版本中使用的端口号是22。

如果这个号码可以使用,那将是很好的(目前在列表中显示为未分配)。这款软件的服务名称是”ssh”。

”

第二天,他就收到了来自Joyce的电子邮件,Joyce 是当时 IANA 负责分配端口的大佬,同时也是IP (RFC 791)、ICMP (RFC 792) 和 TCP (RFC 793) 等次要协议标准的编辑。

“

日期: 1995年7月10日 15:35:33 发件人: jkrevy@ISI.EDU 收件人: ylo@cs.hut.fi 主题: Re: 请求分配端口号 抄送: iana@ISI.EDU Tatu,我们已经将端口号22分配给ssh,您是联系点。Joyce

我们成功了!SSH的端口号是22!!!

”

应该是两地有时差,实际上是不到24小时就收到了回复,22端口就这样和 SSH 协议紧紧的绑在一起了。

看看这效率,比我在公司提个OA流程快得多。比这更快的,恐怕只有 PDD 的「退款不退货」了。

端口本来都是一样的,只是因为不同的应用赋予了端口不同的意义,有些端口因与其绑定的应用很伟大而令人心生好感,有些端口呢,因为使用绑定它们的服务给我们挖过坑而印象深刻。

我印象很深的一个端口是 Nacos 的 9849 端口, Nacos 默认主端口是 8848 ,而客户端RPC 请求服务端口是在主端口的基础上+1000,也就是9848端口。刚开始用 Nacos 的时候就在这上面踩过坑,明明8848已经开了,为什么还是不行,后来才发现9849这个问题。当然了,这也怪不得别人,只能怪自己没有提前好好读官方文档。

文章目录
  1. 1. 计算机的三类端口
  2. 2. 公认端口
  3. 3. 常用端口
  4. 4. 动态端口
    1. 4.0.1. SSH 如何抢到22端口的