yoy*_*fun 63 networking browser tabs port
在支持多个选项卡的 Web 浏览器(例如 Firefox)中,转到不同网站域的不同选项卡是否为每个域使用专用端口?。
或者浏览器是否使用单个端口来管理所有选项卡,从而管理所有域?。
Ego*_*eux 66
与网站的每个连接都使用不同的套接字,默认目标 TCP 端口为 80(用于普通 HTTP)和 443(用于 HTTPS)。要使套接字唯一,源 IP 地址、源 TCP 端口、目标 IP 地址和目标 TCP 端口的组合必须不同。
如果您在同一台计算机上有多个连接到同一网站(假设该网站仅使用 1 个 IP 地址),则必须使用不同的源 TCP 端口。这样,每个连接都是唯一的。
但是,应该注意的是,从 HTTP 1.1 开始,所有连接在给定的时间段内都是持久的(除非另有声明)。这意味着如果请求来自同一网站的多个资源(例如 css/js 文件),则浏览器可以重用相同的连接。如果您的浏览器中有同一个网站的多个实例,这也适用。
如果您使用的是 Windows,该netstat -no -p TCP
命令将显示所有活动的 TCP 套接字及其相应的进程 ID,包括您浏览器的那些:
如果您使用的是 Unix/Linux(在本例中为 Debian),您可以使用netstat -ntp
orss -t
命令:
Dav*_*ill 58
是的,他们这样做。
这是一个示例,显示了我在 Windows 7 上当前的 Firefox 连接(我有 9 个打开的选项卡):
笔记:
可以看到本地端口都是不同的。
远程端口通常是 80 (HTTP)、443 (HTTPS) 或 8080 (HTTP Alternate)。
HTTP
在TCP 和 UDP 端口号列表中搜索其中一些。下面描述了呈现网页的完整过程。请特别参见步骤 5、6、13 和 15(以粗体显示):
通常,渲染单个网页使用多个连接,并非所有连接都指向同一个远程地址。
这是因为网页通常包含托管在其他地方的资源(javascript 文件等)。
到同一个网站(例如 stackoverflow.com)的多个连接也有不同的本地端口(因为它们是呈现不同页面的不同选项卡中的单独连接)。
笔记:
你有没有想过在网上冲浪时会发生什么?这并不像看起来那么简单:
- 您在首选浏览器的地址栏中键入 URL。
- 浏览器解析 URL 以查找协议、主机、端口和路径。
- 它形成一个 HTTP 请求(这很可能是协议)
- 要到达主机,它首先需要将人类可读的主机转换为 IP 号,并通过在主机上进行 DNS 查找来完成此操作
- 然后需要在指定的端口(通常是端口 80)上从用户的计算机打开一个到该 IP 号的套接字
- 当连接打开时,HTTP 请求被发送到主机
- 主机将请求转发到配置为侦听指定端口的服务器软件(最常见的是 Apache)
- 服务器检查请求(通常只有路径),并启动处理请求所需的服务器插件(对应于您使用的服务器语言,PHP、Java、.NET、Python?)
- 该插件可以访问完整请求,并开始准备 HTTP 响应。
- 为了构建响应,(最有可能)访问数据库。根据请求路径(或数据)中的参数进行数据库搜索
- 来自数据库的数据与插件决定添加的其他信息一起组合成一长串文本(可能是 HTML)。
- 该插件将该数据与一些元数据(以 HTTP 标头的形式)结合起来,并将 HTTP 响应发送回浏览器。
- 浏览器接收响应,并解析响应中的 HTML(有 95% 的概率被破坏)
- DOM 树由损坏的 HTML 构建而成
- 对于在 HTML 源中找到的每个新资源(通常是图像、样式表和 JavaScript 文件),都会向服务器发出新请求。返回第 3 步并对每个资源重复此操作。
- 解析样式表,并将每个中的渲染信息附加到 DOM 树中的匹配节点
- 解析执行Javascript,移动DOM节点,更新样式信息
- 浏览器根据 DOM 树和每个节点的样式信息在屏幕上呈现页面
- 你在屏幕上看到页面
- 你会因为整个过程太慢而烦恼。
源代码渲染一个网页——一步一步
use*_*421 11
对于不同网站的tabs,TCP中没有什么要求本地端口不同,只要元组{本地IP,本地端口,目标IP,目标端口}是唯一的。对于同一网站的标签,情况要复杂得多。
与任何其他客户端软件一样,浏览器对到同一目标的每个传出连接使用不同的本地端口。一般来说,它会形成到任何给定网站的多个连接,以获取嵌入的资源,如图像、CSS、JavaScript 等。它还将汇集这些连接以供可能的重用。
不可能说同一个网站的不同选项卡是否会使用不同的连接,因为 (a) 通常每个选项卡都没有一个连接,并且 (b) 根据时间和身份验证,连接可能是在选项卡之间重复使用;由于无法识别连接,因此也无法识别本地端口。
首先,浏览器可以使用以下任何一种连接策略:
尽管使用连接池(和重用连接)是一个合理的假设,但您无法知道浏览器将使用哪种策略。
其次,TCP 的工作方式是,每个连接都有一个源端口和一个目标端口。源地址和目标地址/端口对定义了连接。
您总是[1]使用众所周知的端口(例如 80 或 443)连接到服务器(它侦听其广告地址),但另一个端口是随机选择的。因此,根据您从哪一侧查看连接,它有一个或多个可能的端口。
因此,同一个选项卡可能(并且通常会)在其末端使用几个不同的端口,但原则上不同的选项卡可能(如果连接被合并并且不同选项卡中的不同资源从同一服务器加载)使用相同的端口。
由于问题明确提到了outing,在“正常”情况下,端口号将是相同的,无论它们在哪个选项卡中,或者两个可能的端口之一(80 和 443)。虽然当然可以在 URL 中明确要求不同的端口(如 8080)。不过,这种情况很少见。
归档时间: |
|
查看次数: |
51747 次 |
最近记录: |