一台机器最多只能同时发起65535个请求吗?
一个请求要占用一个端口,端口只有 65535
个,属于有限资源。(不要在意保留端口等等细枝末节,所以不要纠结 65535
这个具体数字)
注意审题,是客户端发请求(client),不是服务端接受请求(server)
Linux 中,65535
这个上限值可以随便改吗?比如改成 8
字节的,这样就能同时发起 2000
多亿亿个请求了
只从端口(port)考虑,不考虑网卡、CPU、内存资源的瓶颈
假设:
- 网口用的雷电4(40Gbps)
- CPU 是神威太湖之光同款
- 内存是 4096 PB
一台机器最多只能同时发起 65535
个请求吗?
注意是同时,就是并行的意思
为什么有这个问题,很简单,这个需求极其常见:
NAT
n次,上层设备port
不够用(nat设备我记得有一个表记录内网外网关系,具体记不清了,nat 会开类似 lru 的机制来维护那个表)- 压力测试,希望单机模拟并发 and 并行百万请求( client 同一时刻(并发并行)发出100w 个 requests ddos server,就要 100w 个port,但是单机只有 6.5w 个 port)
回答:
查了一下,65535
是 TCP 协议写死的,光改 Linux
没有意思。
想要单机并发并行的发出超过 65535
请求,可以多搞几个 ip
就行,因为 port
是 ip
下的概念。
至于怎么多搞 ip
,很简单,参考 docker
容器就知道。
每个 docker 容器都是独立的 ip,想要高并发,多开几个容器,比如开 1000 个容器,每个容器 6.5w 的 port,就能同时发出 6500w 个请求
解决办法不是只有 docker,只是拿 docker 举例子
关键词:虚拟网卡、虚拟IP、网桥、namespace、cgroup
还有一种解决办法就是自定义协议,和 TCP、UDP 同级别的那种。
但是这样方法 emmmm
你写了,路由器、交换机也识别不了,白搭
回答:
兄弟,听说过Vip吗? 一个vip是65535,十个呢?
回答:
百度一下
总结
- 服务端并不需要为每个客户端来的连接分配一个端口。所以不止 65535 个。
- 客户端一般就是 65535 个。
- 不行,是目前的传输协议限制的。
以上是 一台机器最多只能同时发起65535个请求吗? 的全部内容, 来源链接: utcz.com/p/938334.html