websocket的客户端端口号如何在谷歌浏览器中获取

Posted

技术标签:

【中文标题】websocket的客户端端口号如何在谷歌浏览器中获取【英文标题】:How client port number of websocket get in Google Chrome 【发布时间】:2020-07-29 11:40:38 【问题描述】:

javascript中创建一个websocket connect 使用new WebSocket("ws://localhost:8080/ws") 然后使用一个在服务器和客户端之间建立的websocket connect,但是客户端的端口号如何在google chrome中获取?

【问题讨论】:

【参考方案1】:

WebSocket 是 HTTP 连接的Upgrade,这意味着它在 TCP 层上工作。客户端由操作系统分配任意随机端口号来运行,通常我们不关心它。这就是为什么“高级”语言(例如浏览器上下文中的 JavaScript)甚至根本不允许您检索它。

【讨论】:

是的,我只是想知道它是如何在谷歌浏览器中生成的.....我想知道代码【参考方案2】:

如果应用程序没有选择特定端口(即,在套接字术语中,它 不会将其套接字绑定()到特定端口),然后 TCP 和 UDP 为套接字分配一个唯一的临时端口(即短期)编号。 在这种情况下,应用程序(通常是客户端)并不关心它使用哪个端口号,但分配一个端口是必要的,以便传输层协议可以识别通信端点。 它还具有这样的结果,即通信通道另一端的对等应用程序知道如何与该应用程序通信。如果我们将套接字绑定到端口 0,TCP 和 UDP 也会分配一个临时端口号。 IANA 将 49152 到 65535 范围内的端口指定为动态端口或私有端口,目的是这些端口可由本地应用程序使用并分配为临时端口。 然而,各种实现从不同范围分配临时端口。 在 Linux 上,范围由文件 /proc/sys/net/ipv4/ip_local_port_range 中包含的两个数字定义(并且可以通过其修改)。

在linux中通过以下函数获取端口:

Socket.c (linux-2.6.18/net/sctp): .get_port    = sctp_get_port,
Socket.c (linux-2.6.18/net/sctp): .get_port = sctp_get_port,
Tcp_ipv4.c (linux-2.6.18/net/ipv4): .get_port  = tcp_v4_get_port,
Tcp_ipv6.c (linux-2.6.18/net/ipv6): .get_port  = tcp_v6_get_port,
Udp.c (linux-2.6.18/net/ipv4): .get_port    = udp_v4_get_port,
Udp.c (linux-2.6.18/net/ipv6): .get_port    = udp_v6_get_port,

【讨论】:

以上是关于websocket的客户端端口号如何在谷歌浏览器中获取的主要内容,如果未能解决你的问题,请参考以下文章

无法在谷歌端口号 5228 - 5230 上远程登录

java中怎么获取客户端的真实的ip和端口号

SOCKET通信 客户端如何指定端口?

我如何在 google app 引擎上为 html5 创建 websocket

TCP客户端随机端口能否复用

关于Python网络编程中端口号为啥不会重复问题释义