为啥我们在使用 HTTP 协议时需要指定端口号?

Posted

技术标签:

【中文标题】为啥我们在使用 HTTP 协议时需要指定端口号?【英文标题】:Why do we need to specify a port number while using HTTP protocol?为什么我们在使用 HTTP 协议时需要指定端口号? 【发布时间】:2018-11-26 01:09:45 【问题描述】:

为什么即使我们使用 HTTP 协议,我们也需要指定一个带有 IP 地址的端口号?例如 - http://xyz:8080... - 这甚至意味着什么?我们已经知道,在使用 HTTP 时,请求将在 80 端口进行服务,那么为什么要显式指定端口呢?

【问题讨论】:

你不需要,除非它不是 HTTP 的 80 或 HTTPS 的 443。 【参考方案1】:

HTTP 的默认端口是 80,HTTPS 是 443,但端口号的范围是 0 到 65535。大多数 Web 服务器侦听默认端口,因此在没有端口的情况下引用 URL 会更简单。例如,https://www.cnn.com/https://www.cnn.com:443/ 引用相同的资源,因为端口 443 是默认端口。

如果 HTTP/HTTPS 服务不是默认端口,则必须在 URL 中指定端口。

URL 由RFC 1738 定义,使用这种简化的语法,包括端口:

<scheme>://<host>:<port>/<url-path>

例如,URL http://xyz:8080/... 是指使用 HTTP 作为协议侦听端口 8080 的主机名称或 IP 地址。然后,位于该地址的 HTTP(或 Web)服务器将 url-path 解析为特定的服务或文件。

如果端口是给定方案或协议的默认端口(例如 HTTP=80),则端口是可选的。

一台给定的机器可以使用来自不同端口的 HTTP 服务托管多个不同的产品。例如,Apache Web 服务器正在侦听给定服务器上的端口 80,而 Apache Tomcat 正在侦听同一台计算机上的端口 8080。各种数据库和消息传递产品通常在不同的端口上有 HTTP 服务。 端口是客户端可以引用特定服务的地址的一部分

【讨论】:

【参考方案2】:

端口在某种程度上就像一个“通道”......如果您必须访问同一个网站的不同功能,则使用不同的端口。 HTTP 为 80 端口,HTTPS 为 443,SSH 为 22,依此类推。

【讨论】:

以上是关于为啥我们在使用 HTTP 协议时需要指定端口号?的主要内容,如果未能解决你的问题,请参考以下文章

TCP/IP协议的端口号

Tomcat监听443端口的方法

关于Python网络编程中端口号为啥不会重复问题释义

测试特定协议下指定端口是不是开启

socket中的虚拟端口号port

TCP/UDP协议认识