IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> linux的TCP连接数量最大不能超过65535个,那服务器是如何应对百万千万的并发的? -> 正文阅读

[网络协议]linux的TCP连接数量最大不能超过65535个,那服务器是如何应对百万千万的并发的?

光是在知乎上这个问题我都看了好几遍了,问之前先搜一下不好吗?简单说来:

TCP连接数量最大不能超过65535是错的。

一个连接由一个5元组决定(protocol,local IP,local port,remote ip,remote port),对于TCP,protocol固定是TCP,还有四个元素。对于服务器来说,local port一般是固定的,比如HTTP(80),但是remote ip和remote port没有限制。

连接数量是没有限制的,除非是一个端口只能有一个连接。你说的这个65535是端口个数,这不光是Linux,所有的系统都只有这么多端口。端口数和连接个数没有必然联系。如果你学过网络编程的话,在创建连接的时候肯定是IP+port的形式,并且有一个参数指定最大连接数,这个最大连接数并没有限制,可以很小也可以非常大。


https://www.zhihu.com/zvideo/1386712439304597504?playTime=6.1

首先,服务器服务进程只会占用一个端口(listen)对外提供连接请求。

其次,百万并发指的是百万个不同请求方(remote ip,remote port)同时请求服务进程监听的端口。注意这里,服务进程只会用这一个监听端口与请求方建立连接,服务进程不会消耗服务器其他端口去建立连接的。

也就是说服务进程只要一个端口就够了,况几千个端口呼~

端口号主要是用来在服务器本地解复用用的,数据包通过IP和端口号来告知目的地,也就是网络通过数据包中的IP找到服务器,然后服务器再通过数据包中的端口号把数据包交到这个服务器上跑着的特定进程。同一IP下端口号相同数据包同时只能被一个进程处理,不过每个进程同时可以处理多个端口号的数据。就是服务器计算机会维护一个端口号与进程号的映射,这个映射就是严格函数关系,也就是每个端口号有唯一进程号,但是一个进程号可以对应多个端口号,通过这个映射,服务器计算机的网络堆栈把数据包分发给指定进程。进程监听端口号,你可以理解为在这个映射中插入一项对应关系,进程关闭端口监听或者进程当掉了,就是抹掉关于这个进程号的对应关系。所以呢,端口数限制只是表示服务器最多只可以开65535个使用网络的进程。这个限制在实际中不会遇到,因为服务器多是一个计算机只提供一种服务,然后一种服务开个位数进程(一般为了最大利用CPU,数目是与CPU的核数对齐的)处理几十万、上百万请求的。理论上,并没有什么限制请求数,实际上呢,内存会限制请求数,因为每个请求需要用到一块内存来维护请求的状态和缓存收发数据,另外带宽也会限制请求数量,因为一部分请求可能会因为丢包而建立不了连接。

不过在计算机作为客户端测试机,来测试与服务器的连接时,对于同一个远端IP端口组合,是最多只能有65535个连接,因为数据包中的端口号就16位,大于这个,就装不下了,这种情况本地是最多可以对应65535个数据连接。这个限制做压力测试时客户机是会遇到。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-07-13 17:51:11  更:2021-07-13 17:53:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/27 13:07:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计