端口 80 与端口 443:端口 80 提供 HTTP 未加密连接,而端口 443 支持 HTTPS 加密连接。
端口 80 与端口 443:许多人对这两个不同的端口感到困惑。当你读到或听到"端口 80 对比端口 443"时,脑海中浮现的第一件事是什么?没错,你大概听说过 HTTP 与 HTTPS 的对比。在本文中,我们将了解这两个实用端口,以及如何在不同的操作系统中启用它们。在此之前,让我们先从基础说起。
计算机网络中的"端口"是什么?
一般而言,端口用于让计算机理解通过相同网络连接从本机收发的数据类型。每个端口都被赋予不同的功能与一个端口号,如 80、443、21、25 等。端口是一种虚拟编号地址,用作与各类传输层协议通信的端点。传输层协议包括传输控制协议(TCP)与用户数据报协议(UDP),用于互联网上的数据传输。UDP 多用于对安全性要求不高的海量数据传输,而 TCP 则用于对数据安全性至关重要的场景。数据传输发生时,每个数据包都附带一个端口号,协议将每个数据包准确地导向相应的端口。根据 SMB 漏洞报告,65% 的攻击针对三大主要端口:SSH-22/TCP、HTTPS-443/TCP 与 HTTP-80/TCP。
用于 HTTP 连接的端口 80
HTTP 端口 80 默认用于 HTTP(Hyper Text Transfer Protocol,超文本传输协议)连接,是全球范围内广泛使用且流行的端口。该端口由 Tim Berners-Lee 于 1991 在 HTTP 0.9 文档中引入,文档指出:若未指定 HTTP 连接的端口,则默认使用端口 80。它把你连接到万维网(WWW),用户借助该端口可访问互联网上的网页。这意味着用户浏览器与服务器之间使用该端口进行未编码的数据交换。该端口关联 TCP(传输控制协议,一种用于数据传输的协议)。
用于 HTTPS 连接的端口 443
HTTPS(Hypertext Transfer Protocol Secure,超文本传输安全协议)是 HTTP 的安全版本,所有流量都经强加密后通过 443 端口传输。该端口同样与 TCP 协议关联,并在网页与浏览器之间建立安全连接。HTTPS 端口 443 在 RFC 1700 中正式发布,由"Kipp E.B. Hickman"提议。端口 80 与端口 443 的主要区别在于安全性:端口 443 允许数据在安全的网络上传输,而端口 80 以明文传输数据。如果用户试图访问非 HTTPS 网页,将会收到不安全警告。端口 443 在数据传输前对网络数据包进行加密,其上的安全性由 SSL 协议(Secure Socket Layer,安全套接层)提供。
由于互联网用户对其与网站共享数据安全性的意识日益增强,根据 Google 的研究,超过 95% 的网站访问是通过端口 443 上的安全 HTTPS 连接完成的。
在 Windows 上启用端口 80 与 443 的步骤
防火墙会限制流量,保护你免受来自互联网和本地应用的威胁。若希望放行防火墙上的受限流量,需打开特定端口。以下说明在 Windows 上启用端口 80 与 443 的流程:
- 首先浏览控制面板,在左侧搜索"系统和安全"(System and Security)并点击 Windows Defender 防火墙。
- 进入左侧的"高级设置"(Advanced Settings)并点击。
- 将弹出新窗口"带有高级安全性的 Windows Defender 防火墙",在"入站规则"(Inbound Rules)上右键单击并选择"新建规则"(New Rule)。
- 在"新建入站规则向导"框中,勾选"端口"(Port)并点击"下一步"(Next)。
- 选择 UDP 或 TCP 协议,并勾选"特定本地端口"(Specific Local Port),输入端口号后点击"下一步"。
- 选择"允许连接"(Allow the connection)并点击"下一步"。
- 为规则命名并点击"完成"(Finish)。
在 Mac 上启用端口 80 与 443 的步骤
需要了解的是,Mac OS X 是根据各个应用或服务的请求来开放端口,而非单独管理端口。使用默认 OS X 防火墙的大多数用户,应按以下步骤允许应用的入站连接:打开"系统偏好设置">"安全性与隐私">"防火墙">"防火墙选项";点击"添加"(Add);从"应用程序"文件夹中选择一个应用并点击"添加";确保应用旁边的选项设为"允许传入连接"(Allow incoming connections);点击"好"(OK)。若要在 OS X 上开放特定端口,需使用终端(Terminal),OS X 10.10 使用 pfctl 命令,更早版本则使用 ipfw 命令开放特定端口:
- 打开终端应用。
- 输入
sudo pfctl -d命令以停止当前生效的数据包过滤器。 - 使用 nano 文本编辑器打开数据包过滤器配置文件:
sudo nano /etc/pf.conf。 - 可为任意端口(例如 80)创建自定义规则,在默认配置下方输入以下命令,即允许来自任何机器的 TCP 入站流量且不做检查:
pass in inet proto tcp from any to any port 80 no state。 - 按 Ctrl-x 退出 nano,再按 Y 表示以同名保存文件。
- 从刚编辑的文件中重新加载防火墙配置:
sudo pfctl -f /etc/pf.conf。 - 最后用以下命令重启防火墙:
sudo pfctl -E。若要在系统启动时开放端口,使用sudo nano /etc/pf.conf并将sudo pfctl -vnf /etc/pf.conf添加到该 pf.conf 文件中。
在 Linux 上启用端口 80 与 443 的步骤
要在 Linux 上开放端口,首先需用 netstat 或 ss 命令检查开放端口,示例如下:
netstat -lntu
ss -lntu
测试开放端口后,使用以下命令允许 TCP 连接(以下以端口 80 为例):
netstat -na | grep :80
ss -na | grep :80
在 Ubuntu 上启用端口 80 与 443 的步骤
若你使用的是名为 ufw 的 Ubuntu 防火墙,应使用以下命令:
sudo ufw allow 80
在 CentOS 上启用端口 80 与 443 的步骤
CentOS 用户应使用以下命令:
firewall-cmd --add-port=80/tcp --permanent
注意:用户可用上述命令启用任意端口(80、443)。
结语
端口 80 在 TCP 协议下提供 HTTP 连接,在 Web 浏览器与 Web 服务器之间建立未加密连接,使敏感用户数据暴露于网络犯罪分子面前,可能导致严重的数据滥用。HTTPS 端口 443 在 Web 浏览器与 Web 服务器之间提供加密通信,使数据在任何数据泄露中都不可读。因此,通过 HTTPS 端口 443 浏览网页,显然完胜建立不安全的 HTTP 端口 80 连接。