linux端口数量上限65535原因;linux服务端最大连接数量可以超过65535

news2025/4/16 13:23:23

概述

关于端口数量,大家都知道最多是65535个端口。
这个来源于标识端口号的变量是16位的,那么就是65536个,去掉0这个特殊端口,剩下65535个,所以理论上最大可用数量是65535

但是实际中还有一些特殊端口已经定义好用处了,不能随便拿来给应用监听了,比如80,443等端口号.

linux端口数量上限65535原因

这个原因很简单,上面概述中已经说过了。

但是linux中打开一个端口是需要用一个文件描述符来标识,而且linux还有端口范围。
net.ipv4.ip_local_port_range是指本地端口范围,它的默认值是32768-61000

linux的可用端口= 61000-32768=28232=大概2.8W个

文件描述符查询,默认的值是1024,可以自己修改

ulimit -n

捞一张tcp通信图,其中可以看到socket是在tcp上的抽象,把tcp复杂的操作抽象为几个简单的接口来调用。
socket建立的时候客户端和服务端会各自打开一个网络套接字文件,linux中会给这个文件分配一个文件描述符
在这里插入图片描述

linux服务端最大连接数量

上面说到linux可用端口才2.8W个,那是不是只能支持2.8W个连接呢,那肯定不是的。

一个TCP连接的标记为一个四元组(source_ip, source_port, destination_ip, destination_port)
(源IP,源端口,目的IP,目的端口)四个元素的组合.

这样通过服务端的一个端口就可以和多个客户端建立多个连接了。
这里初步就可以知道,服务端的可以和客户端建立超过端口数量的连接数了。

进一步分析下服务端和客户端的连接建立过程

这个过程就直接捞大佬们的意见了

https://www.cnblogs.com/codingmengmeng/p/13676605.html

客户端:

socket()---->创建出 active_socket_fd (client_socket_fd)

bind()—>把active_socket_fd与ip,port绑定起来

connect()—>client_socket_fd 主动请求服务端的 listen_socket_fd

read()/write()---->读/写 socket io

close()---->关闭socket_fd

服务端:

socket()---->创建出 active_socket_fd

bind()—>把active_socket_fd与ip,port绑定起来

listen()---->active_socket_fd–> listen_socket_fd
等待客户端的client_socket_fd来请求连接

accept()---->listen_socket_fd–>connec_socket_fd
把监听socket转变为连接socket,用于建立连接后的读写数据

read()/write()---->读/写 socket io

close()---->关闭socket_fd

linux内核中,socket函数不管在客户端还是服务端,创建的套接字都是主动socket,但是在服务端经过listen(),后把其转变为listen_socket_fd(被动监听socket),经过accept()后转变为connect_socket_fd(已连接socket)

在转变为connect_socket_fd之前,都是同一个socket,只不过socket的状态改变了,但是服务端经过accept()后返回的socket是新的socket,用于连接后的read()/write()

一个tcp连接的唯一标识是一个四元组<clientIP, clientPort, serverIP, serverPort>,serverIP和serverPort是固定的,假定客户端也只有一个,即clientIP也是固定的,则描述不同的tcp连接就只剩下clientPort了。而实际上每当客户端调用connect()函数试图与服务端建立连接时,内核会为客户端分配一个临时端口作为源端口clientPort,服务端通过accept()函数感知到这个连接时,将返回一个全新的tcp连接的描述字(connect_socket_fd)

所以,一个服务端端口是能建立多个连接的,因为每个连接中clientPort都是不同的,在进行通信时,操作系统接收到向serverPort发来的数据时,会在该端口产生的连接中查找到符合这个唯一标识并传递信息到对应的缓冲区。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/666112.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

sourceTree代码回滚

记一次惊心动魄的代码回滚记录&#xff01; 背景&#xff1a; 因为test分支进行Jenkins代码构建的时候发现文件引入的两个已安装的依赖没有找到&#xff0c;构建报错 可是我明明已经安装成功&#xff0c;并且package.json中也有了版本记录&#xff0c;可就是构建失败&#xf…

面试官:“同学,你做的这几个项目都不错。但怎么问QPS你就胡说呢?”

作者&#xff1a;小傅哥 博客&#xff1a;https://bugstack.cn 沉淀、分享、成长&#xff0c;让自己和他人都能有所收获&#xff01;&#x1f604; 这位同学&#xff0c;你比上一位面试者好多了&#xff0c;你的简历中做的几个项目都不错。既有业务项目&#xff0c;也有技术项目…

电子签名软件有哪些?10大电子签名平台盘点

目录 一、电子签名软件有哪些 1.e签宝&#xff1a;国内签名领域老大哥 2.上上签&#xff1a;开创SaaS电子签极简模式 3.法大大&#xff1a;数智化签约管理平台 4.数字认证&#xff1a;中国电子认证第一股 5.契约锁&#xff1a;主攻中大型客户无缝集成各类系统 6.安心签&…

持有NPDP产品经理证书可以加薪吗?

NPDP(New Product Development Professional)是指产品经理国际资格认证&#xff0c;由美国产品开发与管理协会&#xff08;PDMA&#xff09;所发起的唯一国际公认新产品开发专业认证。NPDP是集理论、方法与实践为一体的全方位知识体系&#xff0c;为公司组织层级进行规划、决策…

破圈丨2023年绿色积分消费返利:云联惠3.0升级版【循环购】商业模式

破圈丨2023年绿色积分消费返利&#xff1a;云联惠3.0升级版【循环购】商业模式 京东供应链商品/自营商品/供应商商品 平台上面产品超过300w款产品&#xff0c;均为京东供应链货品&#xff0c;由京东统一仓储和配送&#xff0c;从源头上面杜绝假冒伪劣产品的存在&#xff0c;然…

AI绘图是什么技术?前景如何?

大家好&#xff0c;我是权知星球&#xff0c;人工智能最近大火&#xff0c;各大应用领域层出不穷&#xff0c;今天跟大家讨论一下AI绘图是什么技术&#xff1f;前景如何&#xff1f; 人工智能绘图是什么&#xff1f; 人工智能绘画是指利用人工智能进行绘画的过程&#xff0c;属…

redhat 6.4安装oracle11g RAC (三)

为数据和快速恢复去创建ASM磁盘组 只在节点rac1执行即可&#xff0c;进入grid用户下 [gridrac1 grid]$ srvctl status asm -a ASM is running on rac2,rac1 ASM is enabled. [gridrac1 grid]$ ps -ef|grep lsnr|grep -v grep|grep -v ocfs|awk {print$9} LISTENER_SCAN1 LISTE…

Databend 开源周报 第 98 期

Databend 是一款现代云数仓。专为弹性和高效设计&#xff0c;为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务&#xff1a;https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展&#xff0c;遇到更贴近你心意的 Databend 。 后台服务 Dat…

强化学习从基础到进阶-案例与实践[2]:马尔科夫决策、贝尔曼方程、动态规划、策略价值迭代

【强化学习原理项目专栏】必看系列&#xff1a;单智能体、多智能体算法原理项目实战、相关技巧&#xff08;调参、画图等、趣味项目实现、学术应用项目实现 专栏详细介绍&#xff1a;【强化学习原理项目专栏】必看系列&#xff1a;单智能体、多智能体算法原理项目实战、相关技巧…

zerotier自建planet

ZeroTier 是一个由 C 开发的软交换机&#xff0c;可以让多台内网机器组成一个私有的局域网。ZeroTier 的节点分为三类&#xff1a; Planet Server: 官方的根服务器&#xff0c;用于记录和配置每个局域网下客户端信息&#xff08;以下简称 Planet&#xff09;&#xff1b;Moon …

Qt学习10:MainWindow浅析

文章目录 QMainWindow的基本结构QMenuBarQToolBarQStatusBarQDockWidget QSystemTrayIcon 文章首发于我的个人博客&#xff1a;欢迎大佬们来逛逛 QMainWindow的基本结构 QMenuBar&#xff1a;菜单栏QToolBar&#xff1a;工具栏QDockWidget&#xff1a;浮动窗口QStatusBar&…

基于ENVI的遥感影像解译——以Landsat8数据为例(上)

遥感影像解译是一种指从图像获取信息的基本过程。即根据各专业&#xff08;部门&#xff09;的要求&#xff0c;运用解译标志和实践经验与知识&#xff0c;从遥感影像上识别目标&#xff0c;定性、定量地提取出目标的分布、结构、功能等有关信息&#xff0c;并把它们表示在地理…

火力全开,鏖战争锋|SCTF 2023圆满落幕!

2023年6月19日09:00&#xff0c;第八届XCTF国际联赛分站赛——SCTF 2023圆满落幕。本次赛事由XCTF国际联赛合作单位——成都信息工程大学Syclover战队组织&#xff0c;由赛宁网安提供技术支持。 经过持续48小时的夺旗厮杀&#xff0c;联合战队Nu1L最终力压群雄&#xff0c;夺得…

什么是mAP(mean average Precision)

Mean Average Precision&#xff0c;即 平均AP值 。AP&#xff08;Average precision&#xff09;单类标签平均&#xff08;各个召回率中最大精确率的平均数&#xff09;的精确率。AP: PR&#xff08; Precision-Recall&#xff09;曲线下面积&#xff0c;mAP(Mean Average Pre…

树莓派启用无密码 sudo

启用无密码 sudo&#xff0c;可以在不提供密码的情况下在树莓派上运行程序。 登录 Raspberry Pi 命令行界面。假设 Raspberry Pi 的默认用户名和密码分别为 pi 和 raspberry。在命令行界面中&#xff0c;键入以下命令&#xff1a; sudo nano /etc/sudoers 3. 通过添加以下行启…

被业务员缠着要数据,数据分析师除了加班还有第二种选择吗?

知乎的大数据给我推了这样一个问题&#xff1a;身为数据分析师&#xff0c;却被业务当做取数机&#xff1f; 热度很高&#xff0c;看来很多数据分析师有相似的处境。 作为一个数据分析师&#xff0c;大部分时间却忙于取数&#xff0c;即使996加班也忙不完&#xff0c;不仅没…

Word怎么删除空白页,4个方法轻松解决!

案例&#xff1a;我在编辑文档的时候会遇到空白页&#xff0c;我不能直接对它进行删除操作。我想知道如何删除Word里面的空白页&#xff1f;方法越简单越好&#xff01; Word是广泛使用的办公软件之一&#xff0c;但有时在编辑文档时会遇到一些空白页的问题。空白页的存在可能…

阿里云学生验证流程(申请入口、学生认证图文教程)

阿里云学生用户完成学生认证可以领取一台阿里云服务器&#xff0c;那么问题来了&#xff0c;阿里云学生验证申请入口​在哪&#xff1f;阿里云百科分享阿里云学生验证入口网页链接及学生认证全流程&#xff1a; 目录 阿里云学生验证入口及申请流程 打开学生验证申请入口 支…

BUG越改越多?微信团队用自动化测试化险为夷

&#x1f449;腾小云导读 作为后台开发 Coder&#xff0c;你可能会对以下场景感到似曾相识&#xff1a;历史上处理过的 BUG 反复横跳&#xff1b;版本兼容逻辑多&#xff0c;修复一个 BUG 触发了更多 BUG&#xff1b;上线时系统监控毫无异常&#xff0c;过段时间用户投诉某个页…

关于iOS16 以后屏幕旋转不得不说的事

由于笔者最近刚完成了一个强制屏幕横屏的需求 所以 顺便记录一下 实现过程中遇到 block点 也为广大的iOS开发者做一个笔记&#xff1a; 废话不多说直接上代码 //适配iOS16.0的横竖屏方法public static func switchInterfaceWtihIos16(orientation: UIInterfaceOrientation , o…