网络协议丢包排查案例:云内应用服务器访问问题咋解决?

检测维修 0 99

01网络协议丢包排查案例

组网及问题说明

驻场运维时,甲方用户常反映云内应用服务器业务访问速度慢,或完全无法访问,这严重影响业务正常进行,经初步排查用户云主机及应用本身无异常,通过利用ping命令进行大数据包测试网络环境到云主机传输未显示丢包现象,面对此困境我们该如何深入分析和解决问题呢?

深入分析和工具使用

在排除云主机以及应用自身不存在异常情况,网络传输不存在丢包状况之后,我们进一步所要重点关照的是业务数据的传输通道,也就是TCP或者UDP端口。为了判别这些端口的传输是不是正常,我们能够借助以下两种工具 :

tcping.exe即为一款针对测试TCP连接专门打造的命令行工具,借助它能够便捷地检验目标主机的TCP端口是否畅通。有一项内容需要明确告诉你就是,你能够从它的官方网站进行下载。除此之外,我们还能够借助编写简易的Python脚本去测试UDP端口的传输状况。下面呈现的在此为一个示例代码片段,此代码片段运用Python的socket模块去创建一个UDP客户端,并且发送一条测试消息用以检测端口的响应:

```python

在python2里,要是包含中文,那就需要设置utf - 8字符,代码是02 - coding:utf - 8 -- 。

from socket import

import time

将其改写极难,因专有词汇本就拗口,此句“client = socket(AF_INET, SOCK_DGRAM)”难以以极拗口难读且不改变原意、拆分成长分句、不增减字数及不穿插英文单词地改写,若强行改写可能影响原意表达,故无法完成该项改写任务。

msg = 'test message'

使用UDP协议发送数据,并捕获可能的异常

try:

client.sendto, msg.encode(), ('destination\_ip', destination\_port), 这一系列操作是将消息编码后发送到指定的目的IP和端口处。

udp检测工具_网络协议丢包排查案例_tcping.exe使用方法

recvfrom_result = client.recvfrom(buffer_size), # 对于等待接收响应来说此步骤是这样的操作

except Exception as e:

打印(“用户数据报协议端口测试失败:”,将(错误)转换为字符串),句号

finally:

client.close() # 关闭socket连接

```

在这个示例里,你要把'destination\_ip'替换成目标主机的IP地址,把destination\_port替换成UDP端口号。通过捕获发送途中的异常,我们能够判断UDP端口的传输是不是正常。通过捕获接收途中的异常,我们能够判断UDP端口的传输是不是正常。在排查业务数据传输通道之际,我们留意了TCP端口。在排查业务数据传输通道之际,我们留意了UDP端口。为了进一步验证这些端口的传输情形,我们能够使用tcping.exe工具测试TCP连接,或者通过Python脚本测试UDP端口的响应。然而,于实际操作当中,我们尚需考量别的因素,比如说发送的数据包数量。在上述示例代码之内,我们运用了循环结构去发送多个数据包,当中i指代发送的数据包计数器,初始值是0,最大值为100。但要留意,因TCP协议的特性,发送空数据包是不被准许的,而UDP却不存在此限制。所以,在实际运用之际,我们需依据具体需求来处理这一细节。

问题解决方案

对TCP协议通信顺畅与否进行检测之际,会用到tcping.exe工具,这时要把tcping.exe放置于跟cmd命令处在同一文件夹里,普通状况下此文件夹是“C:\Windows\system32”。于cmd窗口当中输入tcping x.x.x.x 80命令,这样就能对80端口可不可以正常访问开展测试。下面以baidu作为例子来展开演示,最终结果表明80端口是开放的并且不存在数据包丢失的情况。

按照常规状况,不携带参数的tcping测试会采用默认的数据包数量以及数据包大小。为了能够开展更深入的测试工作,我们能够把数据包数量设定成100个,将数据包大小设定为50000,以此去模拟大数据报文的长时间传输状况以及丢包情形。具体的命令如下:tcping -f 50000 -n 100 x.x.x.x 22;测试的结果表明,在传输的进程当中一共有6个数据包出现丢失,就如同下面的图示:

当执行上述代码开展测试时,要是您的测试机属于Linux系统,那么能够直接借由命令行调用Python去运行那些脚本;要是您的测试机是Windows系统,那就需要先下载并且安装Python(这里不详细阐述安装方法)。文中给出的udp_server.py脚本应当在服务端测试机上运行,以此开启UDP协议的端口监听;udp_client.py脚本则应当放置在客户端测试机上,用来向服务端的UDP端口发起会话请求。当处于实际使用情形时,要依据现场所呈现的具体状况,对脚本里的部分信息予以修改。于服务端脚本之中,0.0.0.0代表客户端地址,然而8888却是测试端口。在实际开展测试进程的时候,即便不改动IP地址,也能够施行测试,这是由于0.0.0.0覆盖了所有IP地址。

相关推荐: