Host和Port到底是啥?用快递收货的例子一次讲透
刚学网络编程的同学,配置服务器的时候一定见过这样的东西:192.168.1.100:8080,前面一截是host,后面一截是port,中间用冒号隔开。但你大概率只记得"照着填就行",从来没搞明白它俩到底各自是干嘛的。今天我们就用最直白的例子把这两个概念讲透。
先搞懂本质:host是"地址",port是"房间号"
想象你要给一个朋友寄快递,你需要知道两件事:
- 寄到哪栋楼:比如"武汉市洪山区珞喻路1037号",这就是host(主机地址)。如果快递送错了楼,后面一切都白搭。
- 送到哪个房间:比如"3栋502室",这就是port(端口号)。楼没送错,但房间搞错了,快递也到不了正确的人手里。
host解决的是"找到哪台电脑"的问题,port解决的是"找到这台电脑上的哪个程序"的问题。两个信息缺一不可,就像寄快递只写楼号不写房间号,或者只写房间号不写楼号,快递都送不到。
Host:你到底要找"哪台电脑"
host就是网络上一台设备的地址标识,常见的有三种写法:
- IP地址 :比如
192.168.1.100,这是电脑在网络里的"门牌号",每台联网的设备都有一个唯一的IP地址,就像每栋楼都有一个唯一的地址一样。 - 域名 :比如
www.baidu.com,这是给人看的"楼名",比一串数字好记。域名最终会被DNS(相当于查号台)翻译成IP地址,系统拿到IP地址后才能找到对应的电脑。 - localhost:翻译过来就是"本地主机",指的就是你自己这台电脑,相当于"我住的这栋楼"。
举个实际的例子:你在浏览器里输入www.bilibili.com,系统先去问DNS"bilibili的IP是多少",拿到IP地址后,再往那台服务器发请求,这就是host发挥作用的过程。
Port:你到底要找"哪个程序"
一台电脑不是只跑一个程序,你的电脑可能同时开着浏览器、微信、QQ音乐、下载工具,服务器上可能同时跑着网站服务、数据库服务、邮件服务。当网络数据到达这台电脑后,系统怎么知道这条数据该交给哪个程序处理?靠的就是port。
还是用快递的例子:一栋大楼有个快递收发室,所有快递都先送到收发室,收发室根据房间号(port)把快递分发到对应的房间(程序)。
port是一个0~65535之间的数字,其中有一些是"约定俗成"的固定房间号,就像一栋楼里1楼永远是前台、2楼永远是物业一样:
表格
下载为表格
导出为图片
| 端口号 | 对应的服务 | 通俗理解 |
|---|---|---|
| 80 | HTTP网页服务 | "网站专用房间",浏览器访问网页默认敲这个门 |
| 443 | HTTPS加密网页服务 | "加密版网站专用房间",带小锁的网址走这里 |
| 22 | SSH远程连接 | "远程操控专用房间",程序员远程登录服务器走这里 |
| 3306 | MySQL数据库 | "数据库专用房间" |
| 8080 | 常用的备用Web服务 | "网站备用房间",80被占了就用这个 |
| 3000/5000 | 开发常用的本地服务 | "开发测试专用房间",前端/后端项目默认端口 |
你在浏览器里输入www.baidu.com,其实系统自动帮你补全成了www.baidu.com:80,因为访问网页默认就是敲80号房间的门,所以不用你手动写。同理,你输入www.baidu.com:443就是走加密通道。
组合起来看:host:port到底在说什么
现在回头看192.168.1.100:8080,它的意思就非常清楚了:
找到IP为
192.168.1.100的那台电脑(host),然后敲8080号房间的门(port),找到运行在那个端口上的程序。
再举几个你日常能碰到的例子:
- 浏览器地址栏的
https://www.taobao.com,其实是www.taobao.com:443的简写 - 你本地跑了一个前端项目,终端显示
Local: http://localhost:3000,意思就是"打开你自己电脑的3000号房间,就能看到页面了" - 你用Xshell连服务器,要填的"主机"就是服务器的IP(host),"端口"默认填22(SSH服务的port)
新手常踩的3个坑
- 访问本地项目,用别人的IP访问不了 :
localhost只能在自己电脑上用,相当于"这栋楼的内部房间号",别人从外面是找不到你这栋楼的这个房间的。要让别人访问,得用你电脑的局域网IP(比如在命令行输ipconfig查到的那个地址)。 - 端口被占用:你启动项目时报错"Port 3000 is already in use",意思就是3000号房间已经有人住了(另一个程序正在用这个端口),你要么把占用端口的程序关掉,要么换个端口启动。
- 端口和IP搞混:IP是"哪台电脑",端口是"哪个程序",两个是完全不同层级的概念。一台电脑(一个IP)可以同时开很多端口,就像一栋楼里有很多房间一样。
一句话总结
host告诉你"去哪台电脑",port告诉你"找那台电脑上的哪个程序",两个拼在一起才能精确找到你要访问的服务,就像寄快递必须同时写清地址和房间号一样,缺一不可。