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的客户端端口号如何在谷歌浏览器中获取的主要内容,如果未能解决你的问题,请参考以下文章