首页 > 试题广场 >

Linux中,一个端口能够接受tcp链接数量的理论上限是()

[单选题]
Linux中,一个端口能够接受tcp链接数量的理论上限是()
  • 1024
  • 65535
  • 65535 * 65535
  • 无上限
标识一个TCP连接的是,客户端和服务器的IP地址加端口号,尽管服务器IP地址和端口号一样,但是客户端IP地址是不一样的,而客户端端口号只有本地意义,所以理论上服务器一个端口号能接受的TCP连接是无上限的。
发表于 2016-03-24 19:52:23 回复(2)
接受端口:65535
发送端口:65535
那么 ip A --> ipB,组合起来有 65535*65535 ,选择C

===不过问题有异议:

如何标识一个TCP连接

在确定最大连接数之前,先来看看系统如何标识一个tcp连接。系统用一个4四元组来唯一标识一个TCP连接:{local ip, local port,remote ip,remote port}。

 

client最大tcp连接数

client每次发起tcp连接请求时,除非绑定端口,通常会让系统选取一个空闲的本地端口(local port),该端口是独占的,不能和其他tcp连接共享。tcp端口的数据类型是unsigned short,因此本地端口个数最大只有65536,端口0有特殊含义,不能使用,这样可用端口最多只有65535,所以在全部作为client端的情况下,最大tcp连接数为65535,这些连接可以连到不同的server ip。

 

 

server最大tcp连接数

server通常固定在某个本地端口上监听,等待client的连接请求。不考虑地址重用(unix的SO_REUSEADDR选项)的情况下,即使server端有多个ip,本地监听端口也是独占的,因此server端tcp连接4元组中只有remote ip(也就是client ip)和remote port(客户端port)是可变的,因此最大tcp连接为客户端ip数×客户端port数,对IPV4,不考虑ip地址分类等因素,最大tcp连接数约为2的32次方(ip数)×2的16次方(port数),也就是server端单机最大tcp连接数约为2的48次方。

 

实际的tcp连接数

上面给出的是理论上的单机最大连接数,在实际环境中,受到机器资源、操作系统等的限制,特别是sever端,其最大并发tcp连接数远不能达到理论上限。在unix/linux下限制连接数的主要因素是内存和允许的文件描述符个数(每个tcp连接都要占用一定内存,每个socket就是一个文件描述符),另外1024以下的端口通常为保留端口。

对server端,通过增加内存、修改最大文件描述符个数等参数,单机最大并发TCP连接数超过10万 是没问题的,国外  Urban Airship 公司在产品环境中已做到 50 万并发 。在实际应用中,对大规模网络应用,还需要考虑C10K 问题。


参考:
http://wanshi.iteye.com/blog/1256282


发表于 2015-01-28 21:31:12 回复(12)
Linux上连接数,理论上可以达到没有上限,但实际上由于Linux中一切都是文件,Linux允许打开的文件的句柄数的上限为65535.
发表于 2017-07-20 16:26:14 回复(2)
2的48次就相当于无限次吗?类似于MAC地址也是2的48次个,是面结构不用分层,就是足够用?
编辑于 2017-06-18 13:36:28 回复(0)
跑一个apache服务器,监听80端口,问同时链接的客户端数量是多少?这玩意只和你的服务器的负载有关系吧?跟端口号上限什么的没关系?个人理解。
发表于 2016-04-30 09:30:09 回复(0)
只受到进程的fd限制,TCP连接属于4元祖,本地端口可以无限的重用下去,比如master-worker模型, 监听fd被传递到创建worker进程,那么每个worker进程都可以accept若干相同本地端口的fd。
发表于 2016-04-14 17:44:58 回复(0)
题目说的是一个端口,没说一对几。所以无上限。
发表于 2015-12-10 00:09:18 回复(0)
一个端口可以建立的连接数量没有理论上限,上限就是你系统的性能
发表于 2015-09-04 11:23:51 回复(0)
这个题目是个文字游戏,如果是一台电脑的一个端口的话,是2^48,这样才有意义。
但是,只拿端口这个概念说的话,就像上面所说,端口只有本地意义。举个极端的例子,单机自己跟自己连接。
发表于 2016-09-12 12:34:37 回复(0)
注意:题目问题不是端口的最大值。

对于一个服务器来说,通常只开放一个80 TCP端口,这个80端口能同时与多台客户端连接,只要服务器扛得住,可以同时建立任意个TCP链接。
发表于 2019-06-13 00:16:16 回复(0)
这题目感觉出得有争议
发表于 2019-03-08 13:31:16 回复(0)
客户端只有端口号才有实际的传输连接意义,和主机的系统性能有关
发表于 2018-06-06 11:08:02 回复(0)
端口最多65536 两台之间必定有限。。这个题目意思是ip无线,可以连接的主机无限。不过ip在这v4也是有限的,所以组合起来还是有限
发表于 2018-04-02 01:02:31 回复(0)
可以自己连接自己,所以无上限
发表于 2017-12-15 01:37:51 回复(0)
题不好
发表于 2017-06-26 22:44:52 回复(0)
一个端口可以建立的连接数量没有理论上限,上限就是你系统的性能
发表于 2017-04-06 16:13:09 回复(0)
说说我的想法,也不知道对不对。
ip地址最多有2的32次方个。所以除去一些特别的ip地址。tcp的连接数应该略小于2的32次
2的16次方=65536
2的32次方=65536*65536
只有C最接近这个答案
发表于 2015-09-29 10:31:00 回复(2)