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

时间:2011-07-09 04:49:41

标签: multithreading tabs browser port

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

我知道这个问题可能没有一个答案,而且浏览器可能会有所不同,但所有回复都会受到赞赏。

由于


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

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

5 个答案:

答案 0 :(得分:15)

线程和端口是分开的,而且大多是不相关的概念。

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

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

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

答案 1 :(得分:4)

使用netstat(或BSD计算机上的sockstat)进行快速检查后发现,不同的源端口号用于不同的连接。在这方面,你是对的。

Firefox为每个标签使用至少一个线程。每个线程可以为不同的数据打开多个连接(例如,从媒体服务器加载图像和从Web服务器加载内容)。每个连接都应有自己的源端口。

答案 2 :(得分:0)

根据浏览器的不同,它为每个选项卡使用不同的线程或不同的进程。使用的本地端口可能与不同的选项卡没有多大关系。

答案 3 :(得分:-3)

你的意思是TCP端口?不,浏览器使用相同的端口,通常为80或443(对于HTTPS)。

HTTP是无状态协议:浏览器打开连接,加载页面,然后关闭它。它没有连接。如果您加载的页面超过1页,则会为每个页面创建线程(通常,Chrome会创建进程),但只要加载页面,连接就会关闭。

AJAX为每个请求打开一个新连接,然后关闭它。

有些Hack需要持久的HTTP连接(参见COMET),但由于浏览器运行多个线程/进程,因此通常不会发生冲突。

答案 4 :(得分:-3)

不!除非另有说明,否则它通常默认使用端口80。例如www.someweb.com:8080。

浏览器中的标签我假设在不同的线程上运行