sockets - 如果服务器机器监听更多的 65536 端口会发生什么?
问题描述
在 Storm 的情况下,它说“每个工作人员使用单个端口来接收消息,并且此设置定义了哪些端口可供使用。”,这意味着我可以将插槽号设置为大于 65536 的数字,以便服务器机器可以打开超过 65536 个进程并且每个进程都侦听一个唯一的端口?
不是一次有多少个tcp连接,我知道tcp连接可以超过65536。
那么服务器机器打开超过 65536 个进程并侦听超过 65536 个端口会发生什么?
解决方案
当一个进程监听 TCP 端口时,它不仅仅监听端口号。它侦听端口号和 IP 地址的组合。通配符 IP 地址可用于指示侦听所有 IP 地址。
对于本地连接,您可以将 127.0.0.2 或 127.1.0.1 等 IP 地址与各种端口号结合使用,以超过 65,536 个本地端口。通过这种方式,您可以拥有超过 65,536 个端口,并且工作正常。但是其他机器无法访问 127.0.0.0/8 内的 IP 地址,因此只能访问本地。
要拥有可以通过网络接受入站连接的端口,您必须将其绑定到可通过该网络访问的 IP 地址与 TCP 端口号的组合。因此,只有一个网络地址的机器只能有 65,535 个不同的端口,可以建立传入的 TCP 连接。但是如果您使用的软件允许您指定要绑定的 IP 地址,您可以通过为机器分配额外的网络 IP 地址来超出此范围。(如果没有,您可以轻松破解它以允许这样做。)
推荐阅读
- next.js - 如何在 NEXT JS 中禁用基于路径名的脚本
- r - R- prcomp() 的“x”中的无限或缺失值
- arrays - 确定 JSON 响应中是否存在嵌套键 - VBA
- python - Pandas DataFrame 重新采样中的 bin 数量意外
- c# - 读取内存内存映射文件 C++ 和 C#
- python - 正确地将图例添加到 seaborn 联合图中
- android - 无法在 IONIC 中提取 APK
- python - 将所有包含 Series 的列转换为更多列
- django - Django 管理页面中的动态字段
- sql-server - SQL - 返回前几天的第一个非空值