新闻资讯

深入理解什么是端口?如何利用花生壳实现端口映射?

2021-08-6

每当看到有人的简历上写着熟悉 tcp/ip, http 等协议时, 我就忍不住问问他们: 你给我说说, 端口是啥吧! 可惜, 很少有人能说得让人满意... 所以这次就来谈谈端口(port), 这个熟悉的陌生人。

深入理解什么是端口?

常见端口
在我们的日常开发过程中, 特别是后端的开发人员, 即便他没有真正理解端口的细节, 他还是会听过见过各类的端口, 这个东西几乎无处不在, 比如:

mysql 缺省用的 3306 端口,
redis 的 6379 端口,
tomcat 默认用的 8080 端口,
ssh 用的 22 端口,
等等...
当然我们最关注的还是 web 相关的端口, 涉及的主要为 80 和 443 两个端口, 下面就来重点说说.

端口是必须的吗?

在本地 web 开发调试过程中, 我们可能都碰到过端口, 比如或许是/最著名的 8080 端口, 一般我们会这样去访问本地的 web 程序:

localhost:8080

但一旦 web 程序部署到了正式的网站中, 端口似乎就消失了, 正式的网址中就不需要端口了吗? 答案是否定的, 在这里起作用的是缺省值.

比如你访问我的网站: https://xiaogd.net, 这个 url 中似乎没有端口, 但其实是有的, 它有一个默认值 443, 所以完整的形式实际是这样的:

https://xiaogd.net:443.

你可以通过 Chrome 的开发人员调试工具看到这一点:

深入理解什么是端口(port)
可以看到, ip 地址后面跟着一个 443

如果你输入一个错误的端口, 比如 80, 像这样: https://xiaogd.net:80, 结果就是无法访问。

但是如果你改成 http://xiaogd.net:80, 它又可以访问了.

注意, 因为我服务器后台配置了 http 自动跳转 https 的 301 重定向, 所以最终浏览器会再次跳转到 https://xiaogd.net:443.

注意勾选 'Preserve log' 以保留日志, 可以看到第一个 80 端口的请求会被响应一个 301 跳转, 并指示跳转目标, 也即是 Location 字段中的 https 请求, 浏览器接收此跳转指示并重新发起 https 请求, 也即是图中第二个 xiaogd.net 的请求. 所以地址栏最终还是会变成 https 的, 特此说明.

此时如果你输入 http://xiaogd.net:443, 它又不能访问了...

如何利用花生壳实现端口映射?

1.首先下载新花生壳后,输入用户名密码登录。

2.双击你想映射的域名,进入花生壳端口映射添加界面,点击打开内网映射。

3.应用名称可以随便填个好记的,内网主机就是你想被公网访问的那台电脑IP地址,内网端口就是希望被映射的端口。

4.现在端口映射窗口就会添加一条映射记录,此时,公网只要使用花生壳分配的这个域名+端口,就可以访问内网的主机了。

举个例子,你妈妈要到学校给你送旺仔牛奶,只知道你在三年级2班,不知道你在学校那栋楼那个教室,这时候就需要学校门卫告诉你妈妈,你的班级在A栋5楼之后,你才能收到旺仔牛奶。如果你想很多人都给你送旺仔牛奶,但保安会嫌麻烦就不给再他们指路了。但是你还想要牛奶怎么办?一、是买通门卫(价格昂贵);二、是在校门口弄个牌子(花生壳)上面写着你教室位置,你成本将大大降低。

花生壳端口映射软件自带端口映射功能,可以帮助用户解决各种网络需求,大家如果遇到端口的问题可以使用花生壳软件,即便再麻烦的端口映射问题,它都能轻松解决。

作者:Java识堂
文章来源:今日头条