本文目录
- 一台主机上只能保持最多65535个TCP连接吗
- linux最大端口数超过65535怎么办
- linux的TCP连接数量最大不能超过65535个吗,那服务器是如何应对百万千万的并发的
- 十进制65535用二进制表示是多少啊
- 传奇中最神奇的数字65535,有什么和这个数字相关
一台主机上只能保持最多65535个TCP连接吗
答案:不一定!
有以下几种情况:
1. 如果是服务端,如nginx,监听在某个端口如80端口,那么理论上只受最大文件打开数的限制(可以改的很大),可以很轻松超过65535个tcp连接,百万?千万?
2. 如果是客户端,那不好意思,除了受最大文件打开数限制,还受本地端口限制,理论上最多是65535个tcp连接
linux最大端口数超过65535怎么办
把端口都用完了这种情况我就真实遇到过,某大学的nat服务器,学校很吝啬,老大一片宿舍区,就6个公网ip,有一段时间线路改造,就剩俩好用的,12万个端口,假如每人100个链接,就只够1200人用,那个宿舍区至少有3000多人,然后就出现了莫名其妙的上不了网
本来网络维修期间网络不好没人在乎,我当初好奇,研究了一下,让我大开眼界,是第一次见到端口不够用的情况
当时尝试了把端口占用超时时间缩短了一点,改善有限,毕竟是太不够用了,如果缩的再多,短于连接心跳包的时间,就会莫名其妙掉线了
linux的TCP连接数量最大不能超过65535个吗,那服务器是如何应对百万千万的并发的
这明显是进入了思维的误区,65535是指可用的端口总数,并不代表服务器同时只能接受65535个并发连接。
举个例子:
我们做了一个网站,绑定的是TCP的80端口,结果是所有访问这个网站的用户都是通过服务器的80端口访问,而不是其他端口。可见端口是可以复用的。即使Linux服务器只在80端口侦听服务, 也允许有10万、100万个用户连接服务器。Linux系统不会限制连接数至于服务器能不能承受住这么多的连接,取决于服务器的硬件配置、软件架构及优化。
01
我们知道两个进程如果需要进行通讯最基本的一个前提是:能够唯一的标示一个进程。在本地进程通讯中我们可以使用PID来唯一标示一个进程,但PID只在本地唯一,网络中的两个进程PID冲突几率很大。
这时候就需要另辟它径了,IP地址可以唯一标示主机,而TCP层协议和端口号可以唯一标示主机的一个进程,这样可以利用IP地址+协议+端口号唯一标示网络中的一个进程。
能够唯一标示网络中的进程后,它们就可以利用socket进行通信了。socket(套接字)是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信。socket源自Unix,是一种“打开—读/写—关闭“模式的实现,服务器和客户端各自维护一个“文件“,在建立连接打开后,可以向自己文件写入内容供对方读取或者读取对方内容,通讯结束时关闭文件。
02
唯一能够确定一个连接有4个东西:
1. 服务器的IP
2. 服务器的Port
3. 客户端的IP
4. 客户端的Port
服务器的IP和Port可以保持不变,只要客户端的IP和Port彼此不同就可以确定一个连接数。一个socket是可以建立多个连接的,一个TCP连接的标记为一个四元组(source_ip, source_port, destination_ip, destination_port),即(源IP,源端口,目的IP,目的端口)四个元素的组合。只要四个元素的组合中有一个元素不一样,那就可以区别不同的连接。
举个例子:
-》你的主机IP地址是1.1.1.1, 在8080端口监听
-》当一个来自 2.2.2.2 发来一条连接请求,端口为5555。这条连接的四元组为(1.1.1.1, 8080, 2.2.2.2, 5555)
-》这时2.2.2.2又发来第二条连接请求,端口为6666。新连接的四元组为(1.1.1.1, 8080, 2.2.2.2, 6666)
那么,你主机的8080端口建立了两条连接;
-》(2.2.2.2)发来的第三条连接请求,端口为5555(或6666)。第三条连接的请求就无法建立,因为没有办法区分于上面两条连接。
同理,可以在同一个端口号和IP地址上绑定一个TCP socket和一个UDP socket
因为端口号虽然一样,但由于协议不一样,所以端口是完全独立的。
TCP/UDP一般采用五元组来定位一个连接:
source_ip, source_port, destination_ip, destination_port, protocol_type
即(源IP,源端口,目的IP,目的端口,协议号)
综上所述,服务器的并发数并不是由TCP的65535个端口决定的。服务器同时能够承受的并发数是由带宽、硬件、程序设计等多方面因素决定的。
所以也就能理解淘宝、腾讯、头条、百度、新浪、哔哔哔哔等为什么能够承受住每秒种几亿次的并发访问,是因为他们采用的是服务器集群。服务器集群分布在全国各地的大型机房,当访问量小的时候会关闭一些服务器,当访问量大的时候回不断的开启新的服务器。
以上个人浅见,欢迎批评指正。
认同我的看法,请点个赞再走,感谢!
喜欢我的,请关注我,再次感谢!
十进制65535用二进制表示是多少啊
十进制整数转换为二进制整数采用“除2取余,逆序排列“法。具体做法是:用2整除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为0时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。 十进制整数转二进制
传奇中最神奇的数字65535,有什么和这个数字相关
传奇是一代人的回忆,当时不懂其中原理,后来我们发现,这个是由m2和数据库bai决定的,
65535一般是内存地du址最大值:1x1111111
二进zhi制dao:111111111111111 65535是计算机二进制最大数 65535B=64KB
在金山游侠中二进制修改不能超过65535,否则会导致内存溢出
在Office 2003的Excel表格中,65535是表格行数的最大值,也就是说,表格最大的行数只能小于或者等于65535行。
65535=65536-1,65536是2的16次方。因为单片机中是从0开始计数,所以,第65536位是65535号。代表着FFFFH,H代表16进制。2的10次方是1024,就是1K,所以65536就是64k。
有些服务端可以突破这个值。