什么是会话

在计算机网络当中,每建立一个新的连接,都是建立一个会话的过程。连接基于TCP和UDP两种协议,前者是可靠的,后者是不可靠的。但不管哪一种连接,都会占用端口。例如,常用的FTP协议会建立数据连接和控制连接,所以FTP会占用两个端口。访问某些网站和使用一些应用,由于各方面的需求也会建立多条连接。

NAT网络地址转换

在IPv4协议出现的时候,很显然没有考虑到计算机的数量会如此庞大,远远超过了IPv4地址的总量。为此,为了解决每台计算机的通信需要,NAT被发明出来。在IPv4地址当中,主要分为三大类:公网地址、私网地址还有广播地址(全为0或255),公网地址不可重复使用,私网地址可重复使用。所以,目前运营商的使用就是一个公网地址下面挂上多个私网地址,或者私网地址下面在挂私网地址(NAT+NAT)。

那么,既然多个计算机使用单个公网地址为什么不会冲突呢?因为一个地址有65535个端口(理论上),可以建立65535个会话,将这些端口分给不同私网地址,每个计算机使用其中一部分即可。在运营商这种超大规模的NAT环境下,我们称之为:CGNAT,即“电信级NAT“。

会话数限制

正如IPv4一样,每个公网IP的会话数不是无穷大的。所以,运营商为了最大效益,每台计算机(光猫或账号)使用的会话数是有限制的。会话数限制的多少,取决于运营商是否良心、手中的资源多不多、当地用的人多不多。

有人或许经历过这种情况,一开始小区人不多的时候,网络很流畅。后来,小区人越来越多,网络开始变得卡顿,但是测试速度却没有问题。这时候百度,很多人说带宽不行或是运营商网络设备性能差,但其实不是,而是使用的人多了,同一IP地址会话数被耗尽,导致无法快速的建立会话。

那么,一个家庭的宽带“会话数”多少合理呢?这个取决于使用人数和使用用途,以一家三口为例:正常2000个端口基本够用,轻度BT和百度网盘均没有问题。如果是过年回家,家里面一下子来七八个人,那么就不够用了,平均一个人才200条左右,而且有些软件网络优化这块不注重或是偷偷PCDN,就更加不够用了。这就是为什么专线和家宽以及公司宽带的不同地方,除了是否有公网、链路质量等,还有会话数的限制!

未来能够解决吗?

当然能解决,运营商的会话数限制最主要的原因是NAT。随着IPv6的普及,去NAT逐步推进。尽管目前IPv6存在部署动力不足,主要所有的互联网都是基于IPv4构建的,而且有无IPv6对于上网这件事几乎没有影响。IPv6普及之后,人均公网(家里面的每台设备都有公网),互联网进入真正意义上的互联时代,去中心化越来越明显。与之带来的是网络安全问题,网络管控加大难度以及运营商的运营成本造成一部分影响。

如果能够完全普及IPv6,用户将没有会话数限制(上限65535),运营商设备不用进行NAT转换,IPv6更加快速、高效和可靠。对于我们用户IPv6可以解除外网访问限制。对于视频、音乐、下载服务来说,不用担心服务器负载过大,CDN资源分发更加容易,特别是BT资源。下载速度更快,体验更好。同时,远程办公、远程NAS、个人网站、私有云这块将会变得更加容易。

测试步骤

本次测试是基于C/S架构,本地需要准备一台客户机。由于我只是搞云服务的,所以没有搞什么APP之类的UI设计开发,直接测试之类的东西,我尽量简化测试难度。

测试器材:Windows系统PC机一台、VMware 17 Pro、Rocky-linux虚拟机镜像、MobaXterm。

如果您动手能力强可以进行如下操作搭建服务器!

第一步,注册登录华为云账号,充5块钱就够了。

登录华为云

第二步,进入控制台,选择就近位置机房,例如我在广州,选择“华南-广州”。

进入华为云控制台

第三步,创建一台弹性云服务器。选择“按需付费”。

创建一台弹性云服务器

3.1:实例业务类型选择“通用计算型”,硬件选择2vCPUs,4GiB内存。

选择云服务器的硬件2vCPUs,4GiB内存

3.2:操作系统选择Rocky-linux 8.5!

选择云服务器的操作系统Rocky-linux 8.5

3.3:系统盘默认参数,即通用性SSD、40GiB容量

设置云服务器的通用型SSD

3.4:网络设置默认参数

设置云服务器的VPC网络

3.5:重点!!!,一定要购买公网IP。采用带宽计费、大小5Mbit/s、勾选“随实例释放”。

购买弹性公网IP

3.6:密码,自己设置,我这里提供一个通用的“Huawei@123”。

设置云服务器的账号和密码

3.7:同意!购买即可

同意购买云服务器

3.8:这里提醒一下,我已经将测试系统打包成镜像,这里可以管我要,共享给你。

共享镜像

3.9:等待其创建完成!

等待云服务器创建完成

第四步,搭建服务进程。MobaXterm,先通过SSH连接服务器!会话、SSH,连接主机填公网IP地址,用户名root。

使用MobaXterm远程SSH登录云服务器

4.1:进入如图所示界面代表连接成功!

输入账号密码登录云服务器

4.2:执行以下命令:

yum install git #安装git管理器

git clone https://github.com/yedf/handy.git #拉取项目

yum install make gcc-c++ -y #安装gcc编译工具

cd handy/ #切换工作目录

./build_config #建立

make && make install #编译项目

./10m/10m-svr 40000 50000 1 50001 #启动服务,端口40000-50000共1万个,一个进程,控制端口50001。

4.3:出现这种情况换一组端口,或者减少端口数目。

如图所示端口被占用

4.4:服务正常启动

如图所示服务正常启动

第五步搭建客户端,查看IP地址使用MobaXterm进行SSH连接。

登录待测试的客户端

5.1:成功后同样执行以下命令:

yum install git #安装git管理器
git clone https://github.com/yedf/handy.git #拉取项目
yum install make gcc-c++ -y #安装gcc编译工具
cd handy/ #切换工作目录
./build_config #建立
make && make install #编译项目

5.2:最后执行:./10m/10m-cli 139.9.93.36 50000 60000 10000 100 1 3 64 60001 #启动 1 进程在 100 秒内发起 10000 连接,远程端口 50000 到 60000 ,每 3 秒发送心跳包 64 字节。

5.3:最后连接数量保持在785,表示目前最大允许有785个连接。建议关掉所有设备,分不同时段进行测试,例如高峰时期和低峰时期。

正常测试结果,显示连接数有多少

5.4:服务器信息

检查服务器测试连接信息

总结

服务器我已经搭建好了,你们只需要搭建好客户端即可!

项目源地址

https://www.heu.ee/1128.html

https://github.com/yedf2/handy

服务器我运行一天,大约12块钱。大家可以测试连接。VMware和Rocky-linux的虚拟机镜像,我会上传到百度网盘,在评论区。

我是XiaoZou123,这是我的网名之一,是一个二次元浓度不是很高电脑极客,平时喜欢动手钻研这些技术。
最后更新于 2025-12-29