multithreading - Web 浏览器是否对打开的选项卡使用不同的端口号?

标签 multithreading tabs browser port

我想知道浏览器内部是如何工作的。
现在,在同一浏览器中使用“选项卡”连接到不同的网站可以通过以下两种方式之一进行处理:
1 - 使用线程
2 - 为每个打开的选项卡使用不同的源端口号

我知道这个问题可能没有一个单一的答案,而且它可能因一个浏览器而异,但是所有的回答都是值得赞赏的。

谢谢

谢谢大家。我真的很感激。
我的问题与客户端的源端口有关。我在问浏览器是否为它打开的每个选项卡使用不同的源端口,或者整个过程使用相同的源端口“我的意思是包含不同选项卡的窗口”,或者整个窗口使用相同的源端口?

或者,网络浏览器是否使用线程?

最佳答案

线程和端口是独立的并且大多不相关的概念。

线程是本地计算机处理器用来处理计算的东西,例如绘制到屏幕或等待 Internet 流量。每个选项卡中的这些操作可能有一个单独的线程(以及更多)。

端口是流量本身的标识(在 TCP 和 UDP 中)。为了进行通信,您的浏览器会打开一个本地端口(通常是 ~5000 之类的大端口,只要它是唯一的,这并不重要)并通常在端口 80(服务器正在监听的端口)上连接到服务器。例如,如果您的计算机不知道它无法连接的远程端口,但它的标准是使用 80 进行 HTTP。

浏览器在单独的线程中打开选项卡(出于安全和可靠性原因,甚至在单独的进程中打开新选项卡),并在客户端使用单独的端口。所以是的,答案是线程和端口。它们总是使用相同的远程端口,除非您在物理上另外指定(例如,使用 https://而不是 http://连接到网站使用单独的端口,因为这就是该协议(protocol)的制作方式)。您也可以在名称后使用 :# 指定要在现代浏览器中使用的端口。 (例如: http://www.google.com:81/ ,但是这将失败,因为这不是他们监听的端口!)

关于multithreading - Web 浏览器是否对打开的选项卡使用不同的端口号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6632801/

相关文章:

java - Swing 事件调度线程是否以比主线程更高的优先级运行?

python - PyQT Qtabwidget 隐藏和关闭特定标签

gradle - Gradle选项卡未在Android Studio 3.0中显示

html - 浏览器修改我的 HTML,导致输出不正确

html - 在perl中刷新没有 "Confirm Form Resubmission"的浏览器

c++ - epoll 或 kqueue 是否可以处理向自身异步添加文件描述符

java - 如何防止关键部分的上下文切换

javascript - chrome.tabs.create 在 Chrome 启动时不起作用

javascript - 为什么 JavaScript 在这里阻止 ui 更新(通过 jquery)?

Java显示不同的对象