端口号和 http 的使用混淆

端口号和 http 的使用混淆

当我们从服务器请求页面时,请求默认转到服务器的 80 端口,即 http 服务器。那么为什么我们要在资源路径前输入 http 呢?如果请求是发往 http 服务器的,那么它一定是 http 请求。

答案1

你理解错了。如果你输入http://然后http://www.yourserver.blah:8080/...除非被覆盖(例如),否则请求将转到端口 80 。

但是,例如,如果您输入https://...,那么请求将再次转到端口 443/tcp,除非被覆盖,甚至会“说”不同的“方言”。ftp://端口 21 也是如此,如果浏览器理解 FTP 协议(​​大多数都理解)。

大多数浏览器确实会将 Web 地址中缺少限定符http://视为“这将转到 HTTP 端口80/tcp”,并会自动为您添加http://。否则,您必须指定,所选端口将遵循规范。

答案2

为了更好地理解 URI (URL) 的工作原理,您应该参考RFC 3986

The generic URI syntax consists of a hierarchical sequence of
   components referred to as the scheme, authority, path, query, and
   fragment.

The following are two example URIs and their component parts:

         foo://example.com:8042/over/there?name=ferret#nose
         \_/   \______________/\_________/ \_________/ \__/
          |           |            |            |        |
       scheme     authority       path        query   fragment
          |   _____________________|__
         / \ /                        \
         urn:example:animal:ferret:nose

不要将“服务器”视为一个盒子,而是将其视为在特定端口上运行的“服务”,这也是很有用的。当客户端发出请求时,它不知道谁会收到它。虽然标准是 80,但没有理由不能成为 SSH 服务器。想象一下这样一个场景:某人在防火墙后面,想要通过 SSH 连接到他们的家用盒子,如果他们在端口 80 上运行 SSH 服务器,他们可能能够绕过允许您打开到端口 80 的连接的基本防火墙规则。有默认值,但它们不是要求。

还要记住,URL 的使用是针对用户的。指定 URL 时,http://它会告诉用户向该地址创建 HTTP 请求。浏览器的请求http://www.example.com然后被转换成 HTTP 协议。本文给出了很好的描述:

例如,浏览器转换了 URL http://www.test101.com/doc/index.html转换为以下请求消息:

GET /docs/index.html HTTP/1.1
Host: www.test101.com
Accept: image/gif, image/jpeg, */*
Accept-Language: en-us
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
(blank line)

答案3

您需要告诉浏览器您希望它使用哪种协议与服务器通信。大多数浏览器在主导航区域支持多种协议,例如 https 和 ftp,它们分别使用端口 443 和 21/22。

答案4

由于目前还没有人提到这一点,因此不需要指定http://https://

示例:Google 建议使用 just//而不是http://or,https://因为它将默认使用页面上正在使用的内容。

示例来自谷歌代码

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>

相关内容