一个有 IP 的服务端监听了某个端口,那么他的 TCP 最大链接数是多少

目录

基础概念

流程图

题目解法

其他因素


基础概念

端口是服务端上每个网络程序的"专属编号"

监听指的是,在服务端的应用程序启动后,需要持续关注自己的专属端口,等待客户端发来链接请求

TCP 是负责数据传输的可靠性

TCP 是面向链接的,可靠的,基于字节流的协议

没有 IP,TCP 都不知道要把数据发给哪个设备

没有 TCP,IP 传的数据可能会混乱丢失

客户端发起请求

先拿到 IP 地址 然后进行 IP 寻址 找到目标服务器

然后建立 TCP 连接

然后开始进行端口匹配

双方通过 TCP 协议稳定的发送消息 通信结束后通过四次挥手断开链接

流程图

复制代码
客户端(你的电脑)                服务端(目标服务器)
    |                                  |
    | 1. 发起请求:目标IP(找设备)+ 目标端口(找程序) |
    |--------------------------------->|
    |                                  |
    | 2. IP寻址:通过IP找到服务端设备   |
    |<-------------------------------->|
    |                                  |
    | 3. TCP三次握手(建立可靠连接)    |
    | SYN --------------------------->| (客户端:我要连你)
    |<--------------------------- SYN+ACK | (服务端:可以连,确认)
    | ACK --------------------------->| (客户端:收到,连接建立)
    |                                  |
    | 4. 端口匹配:服务端通过监听端口,将数据交给对应程序 |
    |                                  |
    | 5. TCP传输数据(可靠收发,不丢序)    |
    | 数据 ---------------------------->|
    |<------------------------------数据|
    |                                  |
    | 6. TCP四次挥手(断开连接)           |
    | FIN ---------------------------> | (客户端:结束通信)
    |<--------------------------- ACK  | (服务端:收到,准备关闭)
    |<--------------------------- FIN  | (服务端:我也结束了)
    | ACK ---------------------------> | (客户端:确认关闭)
    |                                  |

题目解法

四个值可以唯一确定一个 TCP 链接

源地址

源端口

目标地址

目标端口

目标地址 目标端口我们已经确定了 无法去改变

所以我们的最大 TCP 链接数是 客户端的 IP 数 * 客户端的端口数

IPV4 就是 2 的 32 次方 * 2 的 16 次方

其他因素

上面这只是理论上的情况

实际上我们要受到各方面的影响

比如说 我们会有一个文件描述符限制

还有内存限制

这些都是 linux 操作系统层面的

所以我们根本无法拿到百分之百的 2 的 48 次方

相关推荐
信誓旦旦的程序猿几秒前
【零依赖量化数据实战 #25】北交所技术指标与基本面
java·人工智能·python·股票数据api·股票数据·股票数据api接口·股票api数据接口
2601_966949653 分钟前
Python 量化开发为什么适合使用金融数据 SDK?从数据获取到策略研究的工程化实践
开发语言·python·数据分析·量化交易·股票数据·quantdash
万年咸鱼5 分钟前
Java ArrayList 详解:原理、用法与实战
java·开发语言·windows
liulilittle5 分钟前
加密扩展记录 37B(含头口径):Go TLS 栈形态特征的适用域与配对勘误
网络·网络协议·计算机网络·网络安全·通信·tls·reality
长友cy9 分钟前
Qt官方示例Application源码阅读
开发语言·qt
程序员良辰16 分钟前
服务器 JDK 环境变量配置:一键安装和手动配置有什么区别?
开发语言·python
奈斯先生Vector23 分钟前
本地图片识别怎么接入多模态 AI?用 Python API 理解 GPT-4o Vision 的真实工作流
开发语言·人工智能·windows·python·网络协议·http·aigc
OPEN-F27 分钟前
C++17新特性精讲:结构化绑定、if constexpr与实用类型
开发语言·c++
CoderYanger28 分钟前
A.每日一题:3345. 最小可整除数位乘积 I
java·数据结构·程序人生·算法·leetcode·面试·学习方法
OPEN-F30 分钟前
C++并发编程:线程与互斥锁
开发语言·c++