如果TCP套接字服务器在端口28081上侦听传入连接,然后接受连接并开始接收数据.数据进入的端口是28081还是端口被更改.
例如,下面的伪代码中传入数据的端口是什么?它仍然是28081还是操作系统分配了一个新端口?:
bind
listen (on port 28081)
while 1
fd = accept
fork
if child process incoming data
Run Code Online (Sandbox Code Playgroud) 当客户端使用TCP连接到服务器时,会为TCP流创建一个新套接字.连接是保留在连接的同一端口上还是更改为其他端口?
我已经阅读了上述问题,但似乎答案是不一致的.
我想知道究竟是什么定义了套接字连接,是这样的:
(sockid, source ip, source port, dest ip, dest port)
或仅:
(source ip, source port, dest ip, dest port)
两个不同的进程(例如,两个不同的浏览器)可以与同一源端口上的Web服务器通信吗?(默认情况下,dest端口是相同的)
在同一浏览器中不同选项卡的情况下会发生什么?
而且,如在一个答案中所提到的,单个网页可以同时连接到多个服务器(例如,广告服务器).当同时连接到多个服务器时,Web浏览器(例如,Chrome,Firefox)是否使用相同的端口连接到每个服务器,还是为每个服务器使用不同的端口?
我试图在一个页面上使用两个websockets.这是我的代码:
var pageViewWs = new WebSocket("ws://localhost:9002/pageView");
var sessionWs = new WebSocket("ws://localhost:9002/session");
pageViewWs.onmessage = function (event) {
alert("PageView");
};
sessionWs.onmessage = function (event) {
alert("Session");
};
Run Code Online (Sandbox Code Playgroud)
仅显示PageView警报.在服务器端,没有请求/ session,只有/ pageView.
现在,如果我切换var pageViewWs和var sessionWs,那么会显示Session警报而不是PageView.这不是因为它们是警报,我试图附加到身体和divs,我已经介入使用Firebug.看起来一次只能创建一个WebSocket,尽管在Firebug中,pageViewWs和sessionWs的属性看起来是相同的,除了它们的url.
我只在Firefox 15.0.1中测试过这个.是否存在某种Websocket限制,您一次只能运行一个?或者我的代码出了什么问题?
假设两台Web浏览器在同一台计算机上运行并访问同一网站(换句话说,在同一端口上访问相同的IP地址).
操作系统如何识别哪些数据包来自哪个程序?
每个程序在TCP标头中都有唯一的id字段吗?如果是这样,该领域叫什么?
我使用pidgin,A,B和C运行多个bonjour客户端.
当B和C与A通信时,我发现A使用相同的端口(通过wireshark我可以看到数据包)用于MDNS和通信,
但是B和C,每个有两个不同的端口,一个用于MDNS,一个用于套接字连接.
A如何工作,为什么它只能与一个端口一起工作?一个端口如何提供多个连接?
注意:如果它是多线程的,那么当它接受连接时它会创建一个带有另一个空闲端口的新套接字,但我看到来自wireshark的数据包,客户端A只使用相同的端口进行通信和MDNS.