龙空技术网

TCP四元组与服务器上监听端口数的关系

SuperOps 7198

前言:

今天兄弟们对“端口号是什么”大致比较关心,我们都想要剖析一些“端口号是什么”的相关知识。那么小编在网络上网罗了一些关于“端口号是什么””的相关文章,希望大家能喜欢,兄弟们一起来学习一下吧!

tcp协议

TCP 四元组介绍

在计算机网络中,TCP连接四元组(TCP Four-Tuple)通常由以下四个元素组成:

源IP地址(Source IP Address):指发送数据报文的主机的IP地址。目标IP地址(Destination IP Address):指接收数据报文的主机的IP地址。源端口号(Source Port Number):指发送主机的应用程序使用的端口号。目标端口号(Destination Port Number):指接收主机的应用程序使用的端口号。

这四个元素组成了一个TCP连接的唯一标识符。在网络中,当两台主机之间建立TCP连接时,它们需要使用这些四元组信息来识别彼此,并在它们之间传输数据。在一个TCP连接中,数据是通过源IP地址、目标IP地址、源端口号和目标端口号来传输的。这些四元组信息可以唯一地标识一个TCP连接,因为在互联网中,每个IP地址和端口号都是唯一的。

在TCP连接的生命周期中,源端口号和目标端口号在连接的建立、数据传输和连接的终止过程中都是重要的。例如,在TCP连接建立时,源端口号和目标端口号用于协商双方使用的初始序列号和窗口大小等参数。在数据传输过程中,源端口号和目标端口号用于将数据传输到正确的目标应用程序。在连接终止时,源端口号和目标端口号用于正确关闭连接。

TCP连接四元组由源IP地址、目标IP地址、源端口号和目标端口号组成,它们是唯一标识TCP连接的关键元素,在TCP连接的建立、数据传输和连接终止过程中都发挥着重要的作用。

‬一个服务器最多可以创建多少tcp连接?

经常听到有同学说一台机器最多能创建65535个TCP连接,这其实是错误的理解,为什么会有这个错误的理解呢?

我们都知道linux下本地随机端口范围由参数控制,也就是listen、connect时候如果没有指定本地端口,那么就从下面的port range 中随机取一个可用的

我的开发机配置

port range的上限是65535,所以也经常看到这个误解:一台机器上最多能创建65535个TCP连接

到底一台机器上最多能创建多少个TCP连接

先说结论:在内存、文件句柄足够的话可以创建的连接是没有限制的(每个TCP连接至少要消耗一个文件句柄)。

那么/proc/sys/net/ipv4/ip_local_port_range指定的端口范围到底是什么意思呢?

核心规则:一个TCP连接只要保证四元组(src-ip src-port dest-ip dest-port)唯一就可以了,而不是要求src port唯一

后面所讲都遵循这个规则:四元组唯一 ,就能分析出来到底能创建多少TCP连接了。

比如如下这个机器上的TCP连接实际状态:

➜  shell_best_pratise netstat -antProto Recv-Q Send-Q Local Address           Foreign Address         Statetcp        0      0 0.0.0.0:5234            0.0.0.0:*               LISTENtcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTENtcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTENtcp        0      0 192.168.205.4:22        192.168.205.1:51061     ESTABLISHEDtcp        0      0 192.168.205.4:22        192.168.205.1:49731     ESTABLISHEDtcp6       0      0 :::22                   :::*                    LISTEN

一台机器能创建的TCP连接是没有限制的,而ip_local_port_range是指没有bind的时候操作系统随机分配端口的范围,但是分配到的端口要同时满足四元组唯一,这样 ip_local_port_range 限制的是连同一个目标(dest-ip和dest-port一样)的port的数量。

进一步了解更多好玩有趣知识

✅1. 关注我的账户 ,获取更多技术‬内容,包括‬架构‬,微服务‬治理‬,python编程‬,shell编程‬等‬。

✅2. 点赞并转发这个文章‬,您的‬鼓励‬是‬我‬坚持‬原创‬的‬动力‬。‬

✅3. 考虑订阅我的技术‬专栏‬,了解‬更多‬深入‬知识点‬总结,一线‬大厂经验‬。‬

标签: #端口号是什么