为什么在使用HTTP协议时需要指定端口号?

18

即使我们使用HTTP协议,为什么还需要在IP地址后指定端口号呢?例如:http://xyz:8080... 这是什么意思?我们已经知道在使用HTTP时请求将在80端口服务,所以为什么要显式指定端口?


除非HTTP为80或HTTPS为443,否则您无法这样做。 - user207421
2个回答

28
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/... 指的是一个主机名或IP地址,在端口8080上使用HTTP协议进行监听。该地址的HTTP(或Web)服务器会将url-path解析为特定的服务或文件。
当给定方案或协议的默认端口为80时,端口是可选的(例如,HTTP=80)。
一台计算机可以托管多个不同产品的HTTP服务,并在不同的端口上提供服务。例如,Apache Web服务器在给定服务器上监听端口80,而Apache Tomcat在同一台计算机上监听端口8080。各种数据库和消息传递产品通常在不同的端口上提供HTTP服务。 端口是客户端引用特定服务的地址的一部分

为什么上述 RFC 1738 中没有关于 HTTPS 的章节,只有 3.3 HTTP?我想知道 http://xyz:8080/...https://xyz:8080/... 之间的区别,以及是否可以用类似的方式解释 https://xyz:8080/...,在这种情况下 8080 覆盖了默认端口 443。 - Han Qi
RFC-1738 提供了通用的 URL 语法。RFC-7230 对 HTTPS 的详细信息进行了说明。如果在 URL 中指定了端口,则无论该协议的默认端口如何,都会使用该端口。 - CodeMonkey

2

端口类似于“通道”...如果您需要访问同一网站的不同功能,则使用不同的端口。HTTP使用端口80,HTTPS使用443,SSH使用22等。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接