怎么在Linux服务器上测试TCPUDP端口的连通性

怎么在Linux服务器上测试TCPUDP端口的连通性,第1张

翻译自:

How to Test Port[TCP/UDP] Connectivity from a Linux Server (文档 ID 22126261)

适用于:

Linux OS - Version Oracle Linux 50 to Oracle Linux 68 [Release OL5 to OL6U8]

Information in this document applies to any platform

目标:

在Linux服务器上检查TCP/UDP端口的连通性。

解决方案:

telnet和nc 是用来测试端口连通性的一般工具。

telnet可以测试tcp端口的连通性。

nc可以测试tcp和udp端口的连通性。

请确保telnet和nc工具已经安装

在CODE上查看代码片派生到我的代码片

# yum install nc

# yum install telnet

测试tcp端口的连通性:

语法如下:

在CODE上查看代码片派生到我的代码片

telnet <hostname/IP address> <port number>

如下是连通成功的例子:

在CODE上查看代码片派生到我的代码片

# telnet 1921182095 22

Trying 1921182095

Connected to 1921182095

Escape character is '^]'

SSH-20-OpenSSH_661

Protocol mismatch

Connection closed by foreign host

如下是连通不成功的例子:

在CODE上查看代码片派生到我的代码片

# telnet 1921182095 22

Trying 1921182095

telnet: connect to address 1921182095: No route to host

使用nc命令来测试tcp端口的连通性:

语法:

在CODE上查看代码片派生到我的代码片

nc -z -v <hostname/IP address> <port number>

如下是连通成功的例子:

在CODE上查看代码片派生到我的代码片

# nc -z -v 1921182095 22

Connection to 1921182095 22 port [tcp/ssh] succeeded!

如下是连通不成功的例子:

在CODE上查看代码片派生到我的代码片

# nc -z -v 1921182095 22

nc: connect to 1921182095 port 22 (tcp) failed: No route to host

使用nc命令来测试udp端口的连通性:

语法:

在CODE上查看代码片派生到我的代码片

nc -z -v -u <hostname/IP address> <port number>

在CODE上查看代码片派生到我的代码片

# nc -z -v -u 1921182095 123

Connection to 1921182095 123 port [udp/ntp] succeeded!

nc检测端口的用法

nc -z -w 10 %IP% %PORT%

-z表示检测或者扫描端口

-w表示超时时间

-u表示使用UDP协议

TCP connect(全连接)

扫描器会向服务器目标端口发送TCP包进行连接,如果服务器端口是开放的会进行TCP连接和TCP三次握手,这也称为全连接。如果服务器的端口是关闭的,则不会进行连接。

优点:1TCP连接可靠,当出现丢包时会重新发送SYN帧。2因为进行TCP全连接,所以测试相对准确。

缺点:扫描的时间较长,容易被目标主机发现。

TCP SYN(半连接)

扫描器会向服务器目标端口发送SUN数据帧,服务器开放的端口会回复SYN+ACK数据包,如果扫描器收到SYN+ACK数据包,说明此端口开放,否则端口是关闭的。

优点:1半连接,速度快。2相对TCP connect来说,更可能会收到服务器的应答包。

缺点:1大量半连接容易被发现。2可能会丢包。3半连接,可能影响后面测试结果的准确性。

TCP FIN(终止连接)

TCP通常是四次握手,第四次握手是终止连接请求(TCP FIN),当扫描器直接发送FIN帧给服务器一个非监听的端口时,会有RST应答。反之,发发送给一个正在监听的端口时,则不会有任何回应。

优点:隐蔽性好;速度快。

缺点:1存在误判:丢包也会造成收不到应答。2可测试linux系统,无法测试windows系统,因为windows,无论端口是否监听,都将回应RST帧,无法判断。

UDP

扫描器会发送UDP ICMP包到服务器端口,如果端口是开放的,则没有响应。如果端口是关闭的,对方会回复一个ICMP端口不可达报文的包。

优点:linux windows都能用。

缺点:1相对于TCP的FIN,SYN扫描要慢一些。2如果发送的UDP包太快了,会出现大量丢失的现象。3速度相对于TCP的FIN,SYN扫描会慢一些。

iperf,具体要纤细直接去看文档,

简单给你列条测试:(TCP和UDP知只是两种传输数据的协议)

1)TCP测试

服务器执行:/iperf

-s

-i

1

-w

1M

'这裏是指定windows如果是

iperf

-s则windwos默认大小为8kbyte/s

客户端执行:/iperf

-c

host

-i

1

-w

1M

其中-w表示TCP

window

size,host需替换成服务器地址。

2)UDP测试

服务器执行:/iperf

-u

-s

客户端执行:/iperf

-u

-c

10255255251

-b

900M

-i

1

-w

1M

-t

60

其中-b表示使用多少带宽,1G的线路你可以使用900M进行测试。

不给分不给力

一般情况下,我们可能想测试一下服务器上的文件(用户上传的或者后台写入的)是否可以被外网访问到,以进一步测试文件下载等功能。

我原本想尝试从服务器的任意目录访问文件,但是经过数次的尝试,网上教的通过修改Tomcat路径映射和自定义XML来进行文件映射都不能成功访问到目标文件。

最后查到,把文件放在Tomcat的ROOT目录下,就可以用服务器域名+“/”+“文件名(带后缀)”直接访问到文件,亲测成功,。

服务器测试方法

服务器测试方法分为两个大方面,性能测试与功能测试。

我们在性能测试方面采用了新的测试方法,主要分为文件测试、数据库性能测试与

Web

性能测试三个

方面。其中,文件性能与数据库性能采用美国

Quest

软件公司的

Benchmark Factory

负载测试和容量规划

软件,

Web

性能测试则使用了

Spirent

公司提供的

Caw WebAvalanche

测试仪。

一、性能测试

1

、文件性能测试方法

Benchmark Factory

软件能按照文件读写的关键指标定制事务。软件最大支持

1000

个虚拟客户。

本次测试环境包括

10

台配置为

PIII800/128MB

内存

/20G

硬盘以上的客户端,它们用来模拟虚拟用户。

控制台为配置是

PIII 850/128MB

内存

/40G

硬盘的

Acer

笔记本电脑。交换机为带有两个千兆

GBIC

接口、

24

10/100M

自适应端口的

Cisco 2950

,客户端与控制台通过

100M

网卡连到交换机上,被测服务器则通

过千兆光纤网卡与交换机相连接。

被测服务器均安装带

SP4

Windows

2000

Advanced Server

操作系统,在所有三项性能测试中都统一

RAID

级别为

5

在具体测试方案设置上,测试软件把决定文件读写操作的关键因素设定为:读

/

写、随机

/

顺序、操作

块大小、对象大小四个。在本次测试中,考虑到我们设有单独的数据库及

Web

测试项目,所以在文件测试

中,我们把目标确定为测试服务器基本的

I/O

性能,这主要由网络接口、系统带宽、磁盘子系统等几大部

分所决定。同时,从几部分的作用看,以大操作块读写大对象文件,小操作块读写小对象文件,较能反映

服务器最基本的

I/O

性能,即“大操作块读写大文件”对系统带宽、缓存的考察,以及“小操作块读写小

文件”对磁盘子系统、网络接口的考察。最终我们确定的四个事务是:

大文件顺序读写

(

操作块

8KB

,对象文件

80% 500KB

20% 1MB)

大文件随机读写

(

操作块

8KB

,对象文件

80% 500KB

20% 1MB)

小文件随机读

(

操作块

1KB

,对象文件

80% 1KB

10% 10KB

10% 50KB)

小文件顺序写

(

操作块

1KB

,对象文件

80% 1KB

10% 10KB

10% 50KB)

每个事务的用户数均以固定步长逐渐增加,

最大可增加到

1000

个虚拟用户。

其中,

“大文件顺序读写”

事务的用户数按照

40

的步长从

1

可增加到

400

(

测试至强服务器

)

200

(

测试

TUALATIN

服务器

)

,其

他事务则将用户数按照

100

的步长从

1

增加至

1000

。我们期望得到其在不同用户数时被测服务器的性能表

现。总体上其走势及峰值反映了该服务器的性能。每项事务均运行三次,每次之间被测服务器进行重启,

最终结果为三次平均值。

2

、数据库性能测试方法

“乘机安全小贴士”安全出行要重视

数据库性能测试同样使用了

Benchmark Factory

软件,测试环境如同文件性能测试。测试时,在被测

服务器上安装

SQL Server 2000

使用企业版。首先在被测服务器上创建新的数据库,通过使用

Benchmark

Factory

预定义的

Database Spec

项目向数据库中创建表,装载数据。在服务器端创建以

CPU

计算为主的

存储过程,通过

10

台客户机模拟用户、按照

40

个虚拟用户的步长递增到

400

个用户,执行该存储过程。

结果是以获得的每秒事务数

(TPS)

衡量服务器的数据库事务处理能力。

整个测试分为三次,

每次之间重新启

动被测服务器,最终取三次平均值作为评价结果。

3

Web

性能测试方法

Web

性能测试工具是由

Spirent

公司提供的

Caw WebAvalanche

WebAvalanche

模拟实际的用户发出

HTTP

请求,

并根据回应给出具体的详细测试结果。

它有以下特点:

能够模拟成百上千的客户端对服务器发

出请求

;

能够模拟真实的网络应用情况,

比如网站在高峰期的访问量应该是动态的维持,

有新客户端的加入,

同时也有原客户的离去,

访问量不是固定不变的

;

可以产生

20000

个连接

/

秒请求量,

足以满足测试的需要

;

测试项目丰富,有访问请求的成功失败数,有

URL

和页面的响应时间,有网络流量数,还有

HTTP

TCP

议的具体情况。

测试时,被测服务器与

WebAvalanche

上都装有千兆光纤网卡,两网卡通过光纤直接连接。监控端

(

置为

PIII 1GHz/128M

内存

/20G

硬盘

)

安装了带

SP4

Windows 2000 Server,

该监控端与

WebAvalanche

过交叉线直连。在监控端通过

Web

浏览器配置

WebAvalanche

,在被测服务器安装了

SQL Server 2000

企业

版,并用微软的

IIS

建立了

Web

服务器。

测试分为静态性能与动态性能两部分。主要是因为在实际的

Web

应用中,有的站点静态内容居多,提

供的服务也绝大多数是静态的,

因此,

他们就会特别的关心服务器静态性能

;

同样,

有的站点提供的服务交

互性的内容居多,他们就会更关心服务器的动态性能。

被测网站中页面大小及静态、动态页面所占比例均参照实际网站得出,整个网站静态、动态页面所占

比例是

70%

30%

,使用的动态页面类型为

ASP

。请求页面样本的文件大小分布比例与整个网站的相同。

静态性能测试模拟发出的均是静态页面请求。在测试动态性能时,动态页面的访问请求占

20%

,其余

80%

为静态页面请求。我们根据实际的

Web

服务器一天中的运行情况建立了一个服务器页面请求模型,该

模型由

4

个阶段组成,第一阶段是预热阶段,

WebAvalanche

发出的请求量由

0

慢慢上升到

200;

第二阶段

是逐步加压阶段,请求量逐步累加到最大值

8200;

第三阶段是动态维持阶段

;

第四阶段是下降阶段,请求量

由最大值迅速下降为

0

。其中,最大请求量略大于实际服务器能够提供的事务处理量。

被测服务器的静态与动态测试分别测试三遍,每遍之间被测服务器和测试仪均重启,结果取三次的平

均值。由此可见,此服务器测试方法立志于最终结果的准确性。

二、功能测试

在功能测试方面,我们对被测服务器的可扩展性、可用性以及可管理性进行了综合评价,其中可扩展

性包括硬盘、

PCI

槽以及内存等的扩展能力,可用性包括对热插拔、冗余设备

(

如硬盘、电源、风扇、网卡

)

的支持,可管理性则指的是服务器随机所带的管理软件。

我们在对服务器进行总体评价时,综合了性能、功能和价格三方面因素,依据《网络世界》所做的用

户调查结果,分别给予不同权重,性能占

50%

,功能占

40%

,而价格则占

10%

。在分析性能时,数据库性能

占其中的

50%

,而文件性能占

30%

Web

性能占

20%

综上所述,这种全新的服务器测试方法更够更准确更直接的对服务器进行测试,而且数据更加精确。

希望能给又需要的读者朋友带来一定的帮助

谢谢采纳。

1首先,客户端和服务器建立的每个TCP连接都会占用服务器内存,所以最大TCP连接数和内存成正比。简单估算为最大内存除以单TCP连接占用的最小内存

2Linux操作系统中,一切都是文件。所以每个TCP连接,都会打开一个文件。为此Linux操作系统限制了每个用户能打开的文件数量,通过ulimit -n 查看。修改方式:

vi /etc/security/limitsconf文件,在文件中添加如下行(限制修改为10240):

speng soft nofile 10240

speng hard nofile 10240

3Linux操作系统中,TCP连接数量还受到端口数量限制,由于端口号只有1-65535,所以最大TCP连接数也只有65535个(包括系统端口1-1024)

4Linux操作系统对所有用户最大能打开文件的限制:cat /proc/sys/fs/file-max。

5网络核心模块对tcp连接的限制(最大不能超过65535):

vi /etc/sysctlconf

netipv4ip_local_port_range = 1024 65000

6防火墙对tcp连接的限制

综上,在Linux操作系统中,首先对TCP连接数量的限制依次有:端口数量限制,网络核心限制,最大文件数量限制(因为每建立一个连接就要打开一个文件),防火墙限制,用户打开文件限制

表示链路的最大传输速率,单位是b/s(比特 / 秒)。

表示单位时间内成功传输的数据量,单位通常为 b/s(比特 / 秒)或者 B/s(字节 / 秒)。吞吐量受带宽限制

表示从网络请求发出后,一直收到远端响应,所需要的时间延迟。在不同场景中,这一指标可能会有不同含义。比如,它可以表示,建立连接需要的时间(比如 TCP 握手延时),或一个数据包往返所需的时间(比如 RTT)。

Packet Per Second(包 / 秒) 的缩写,表示以网络包为单位的传输速率。PPS通常用来评估网络的转发能力。

Linux 内核自带的高性能网络测试工具 pktgen。pktgen 支持丰富的自定义选项,方便你根据实际需要构造所需网络包,从而更准确地测试出目标服务器的性能。

不过,在 Linux 系统中,你并不能直接找到 pktgen 命令,因为 pktgen 作为一个内核线程来运行,需要你加载 pktgen 内核模块后,再通过 /proc 文件系统来交互。

根据上面的结果,我们发现,PPS 为 12 万,吞吐量为 61 Mb/s,没有发生错误。那么,12 万的 PPS 好不好呢?

作为对比,你可以计算一下千兆交换机的 PPS。交换机可以达到线速(满负载时,无差错转发),它的 PPS 就是 1000Mbit 除以以太网帧的大小,即 1000Mbps / ((64+20)8bit) = 15 Mpps(其中,20B 为以太网帧前导和帧间距的大小)。

即使是千兆交换机的 PPS,也可以达到 150 万 PPS,比我们测试得到的 12 万大多了。所以,看到这个数值你并不用担心,现在的多核服务器和万兆网卡已经很普遍了,稍做优化就可以达到数百万的 PPS。

而且,如果你用了DPDK 或 XDP ,还能达到千万数量级。

iperf 和 netperf 都是最常用的网络性能测试工具,用来测试TCP 和 UDP的吞吐量。它们都以客户端和服务器通信的方式,测试一段时间内的平均吞吐量。这里以 iperf 命令为例。

从上面可以看出目标机器的吞吐量为866 Mb/s。

测试HTTP的性能,也有大量工具可以使用,比如 ab,webbench等。这里以 ab 为例

TODO

一开始我无法理解,单机怎么可能实现百万并发连接,因为系统可用端口数只有:65535 - 1024 = 64511,每个TCP连接需要占用一个独立的端口,那最多也只能做到6W多并发连接。然而我忽视了一个很基本的问题,端口号在同一个IP下不能重复,但我们可以给一个网卡绑定多个IP地址,如果单机要主动发起100万并发连接,我们最少需要使用17个IP地址。

TCP服务器监听在指定端口接收客户端连接后,创建一个新的socket用于同客户端进行读写数据,但该socket并不需要也不会绑定一个新的端口,所以对于TCP服务器来说,不存在端口不够用的情况,TCP服务器能够保持多少个并发连接取决于服务器性能、内存大小、带宽大小以及服务器端设置(例如:进程能打开的文件数等)。以100W连接数为例,所需要总内存大小大约为:1,000,000 20K = 20G, 广播一个1KB的消息需要占用的带宽:1,000,000 1K = 1000M,所需打开文件描述符1,000,000个。

对于TCP服务器连接数压力测试来说,瓶颈在客户端,因为每个客户端要连接到TCP服务端需要使用一个本地端口,而对于一个IP地址来说,端口范围就是:0-65536,其中还要一些端口被系统或其他程序使用。所以从一台主机单个IP上发起同TCP服务器的连接数理论最大值为65535,当然我们可以给该主机绑定N个IP地址,同时从多个IP发起连接,所以理论上客户端可以发起的连接数为:IP数65535,这时客户端的CPU、内存和带宽以及文件句柄资源就是限制。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 怎么在Linux服务器上测试TCPUDP端口的连通性

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情