有了这篇干货,还怕搞不定WEB网络问题的排查吗?

Browser/Server结构主要是利用了不断成熟的Web浏览器技术:结合浏览器的多种脚本语言ActiveX技术,用通用浏览器实现原来须要复杂专用软件才能实现的强大功能,同时节约了开发成本。
B/S最大的优势就是能够在任何地方进行操做而不用安装任何专门的软件,只要有一台能上网的电脑就能使用,客户端零安装、零维护。系统的扩展很是容易。linux

你们在测试过程当中常常会遇到例如首次部署后网页没法打开或者样式没法加载等问题,本文给你们简单介绍一点网络问题排查方面的知识。数据库

 

【HTTP协议及链接的创建】windows

HTTP( Hyper Text Transfer Protocol超文本传输协议的缩写)是一个客户端和服务器端请求和应答的标准(TCP)。HTTP协议一般承载于TCP协议之上,有时也承载于TLS或SSL协议层之上,这个时候,就成了咱们常说的HTTPS。
以下图:浏览器

一次HTTP操做称为一个事务,其工做过程可分为四步:
1. 首先客户机与服务器须要创建链接。只要单击某个超级连接,HTTP的工做就开始了。
2. 创建链接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。
3. 服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。
4. 客户端接收服务器所返回的信息经过浏览器显示在用户的显示屏上,而后客户机与服务器断开链接。缓存


HTTP链接的创建又可分为以下步骤:
1) 浏览器分析连接的URL
2) 系统查找HOSTS文件,有则根据文件内容获取服务器ip,转到第5步
3) 浏览器向DNS请求解析该URL的ip
4) 域名系统DNS解析出该URL的ip地址为xxx
5) 浏览器与服务器 创建TCP链接 (服务器ip地址是xxx,端口是80)
6) 浏览器发出取文件命令
7) 服务器给出响应,把文件发送给浏览器
8) 释放TCP链接
9) 浏览器显示文本tomcat

 

【页面没法打开问题排查】服务器

页面没法打开这类问题在系统初次部署时常常遇到,咱们能够根据上节所介绍的HTTP创建链接的步骤逐步进行排查。网络

 

例如某项目打开页面展现以下:架构

1. URL连接工具

首先,须要确认URL地址正确。一个完整的URL请求通常包括基本URL包含模式(或称协议)、服务器名称(或IP地址)、路径和文件名。

如某URL地址为http://www.hello.com/demo/helloworld.htm,其中http表示使用的是http协议,www.hello.com为服务器名称,/demo为相对路径,hello.htm为请求的文件名。确认该url地址请求的文件是否存在,咱们就能够在工程目录中查找hellworld.htm(或helloworld.vm)文件,看该文件是否存在。

实际问题排查
咱们在菜单”交易大厅”连接上,点击右键,查看属性以下图:

图中URL指出,这个菜单访问的URL地址为

http://xxxxx.xxxx.xx/delegate//delegate/listing/index_hall.htm

xxxxx.xxxx.xx/delegate为该系统固定域名,delegate/listing/index_hall.htm为文件相对位置。而后,在工程目录下查找该文件。

图中展现文件名与该文件相对位置匹配,能够排除没法访问是因为URL地址中文件不存在致使。

2. HOSTS文件
浏览器在解析URL以后,就会根据URL中的服务器名称创建连接。例如上文的www.hello.com这个服务器名称,浏览器是怎样解析成一个ip地址从而创建连接的呢?
操做系统规定,在进行DNS请求之前,先检查系本身的Hosts文件中是否有这个域名和IP的映射关系。若是有,则直接访问这个IP地址指定的网络位置,若是没有,再向已知的DNS服务器提出域名解析请求。DNS服务器中保存有该网络中全部主机的域名和对应IP地址,并并具备将域名转换为IP地址功能。
因此咱们排查的第二个节点就是本机的HOSTS文件。
在Windows NT/2000/XP/Vista/7/8(即微软NT系列操做系统)中,HOSTS文件默认位置为%SystemRoot%\system32\drivers\etc\;在Linux及其余类Unix操做系统中HOSTS文件默认位置为/etc。
HOSTS文件内容格式为:IP+空格+域名,域名能够有多个,中间以空格分隔。须要注意相同域名以首次出现映射规则为准。文件修改保存后生效,可是因为各浏览器存在缓存,因此不必定当即生效。通常重启浏览器后,能够正确跳转。


实际问题排查
咱们测试的程序部署在内网环境,须要进行HOSTS。检查本地HOSTS文件,相关配置以下:


图中标明域名xxxxx.xxxx.xx已映射到IP地址xx.xx.xx.xx.咱们再经过命令行进行检查:

能够排除HOSTS文件配置不正确或网络存在问题致使页面没法打开。

 

3. 网络
若是在上一步最后检查时,提示请求超时,有多是本机与服务器之间存在网络问题。咱们排查的第三个节点就是网络是否正常。
首先,须要排除是否本机与服务器不在同一个网络环境,好比一个在内网,一个在公网这种状况。
另外,多是服务器IP地址发生了变化。查看服务器IP可在命令行下使用ipconfig(linux为ifconfig,需root用户),若是发现IP发生变化,须要检查IP是否为静态IP。

最后,须要检查防火墙是否关闭或配置是否正确。

 

4. 监听端口
在排除了网络问题后,咱们的URL请求就已经到达了服务器进行处理,下一个排查的节点就是服务是否存在以及端口是否正确打开。
若是服务启动时,提示Socket bind failed:[XXXX],则一般为XXXX端口正在被占用。查看该端口被哪一个进程占用,能够在服务器上输入netstat –anp|grep 端口号(windows为在命令行中输入netstat –ano|find “端口号”),如图二、图3

图2

图3

红框内为实际占用程序pid,LISTEN/LISTENING表示为监听端口。获取到pid后,能够考虑关闭该进程或者修改服务使用端口。


实际问题排查
咱们到55.82服务器上对进程所对应的端口,如今已知应用占用的端口是28080,输入netstat –anp|grep 28080:

获得进程PID为4580,再查看4580进程:

获得进程PID为4580,再查看4580进程:

进程与须要链接的服务匹配,能够排除端口占用致使页面没法打开。


5. 其余
通过上面一系列的排查发现好像各个环节都是正常的,那还有哪些问题能够会致使页面没法打开?
上一步排查过程当中,咱们能够发现该tomcat使用的端口为28080,在实际访问的URL(http://trade.cfae.cn/delegate//delegate/listing/index_hall.htm)中,咱们没有看到指定访问端口为28080的相关内容,这也许就是问题的缘由。
在HTTP连接中,若是访问时没有指定访问端口,则经过80端口进行连接,那么整个部署中,确定存在某个环节将发送到80端口的请求转发到28080端口。所以,下一步咱们就来检查下Apache配置,看是不是使用了反向代理机制进行转发并致使页面没法打开。


实际问题排查
在55.82服务器上,打开/etc/httpd/conf/httpd.conf文件,发现有以下配置:

这段配置,说明Apache会根据http://xxxxx.xxxx.xx/delegate 中的/delegate的请求转发到xxxxx.xxxx.xx。前面已经说过,xxxxx.xxxx.xx是内网的域名,那么服务器进行请求时,一样要在HOSTS文件中进行配置,那再检查下服务器上的HOSTS文件:

服务器上并无进行HOSTS配置。下面咱们能够经过修改Apache配置或者修改HOSTS文件进行处理。修改Apache配置能够将配置段中xxxxx.xxxx.xx替换为127.0.0.1,保存后重启httpd服务;修改HOSTS文件能够添加127.0.0.1xxxxx.xxxx.xx后保存。

在这里,采用了第二种方法:

而后再进行访问,页面成功打开。

 

【开发人员工具的使用】

在高版本的IE浏览器中,集成了开发人员工具(F12)。这个工具,能够协助咱们进行一些问题的排查。
1. 页面内容长时间没法加载
有一次,某个部署在内网的项目因须要映射到了外网,可是映射的时候采用的是端口转换的方式,也就是应用实际使用的端口是9040,映射到外网使用的端口是9433。映射以后,发现页面能够打开,可是打开很是缓慢,并且大部分元素、样式等没法显示。
遇到这种状况,咱们能够经过开发人员工具中的网络分析进行查看。低版本IE可经过安装HttpWatch插件查看。
按F12打开开发人员工具,选择网络,点击启用网络流量获取。输入域名后回车,此时下面会显示浏览器与服务器之间的数据交互。

 

以下图:

 

 

图中能够看出,大量请求结果显示为已挂起,再检查下这些请求的URL地址,发现请求的端口是内网的端口号,因此致使这些样式没法展现。若是程序是经过配置方式定义的端口号,修改下相应配置,再重启进程就能够避免这种状况。


2. 网页前台校验规则查看
一般,在测试一些页面时,前台会对输入项的内容进行校验,好比注册页面的联系方式、邮箱、地址长度等。咱们可使用开发人员工具,能够方便快捷的查看某些元素的校验规则,从而快速的查找出校验规则是否存在问题。
好比输入框的长度限制,打开开发人员工具,选中DOM资源管理器,经过选择输入元素,对前台输入校验进行检查。

以下图:

能够看到这里对项目名称进行了最大输入长度的限制为40,再根据数据库中相应字段的长度,就可以判断出是否可能存在问题。

再例如检查手机号码的校验

以下图:

图中看到对手机号码校验规则是'^(((13[0-9]{1})|(15[0-9]{1})|(17[0-9]{1})|(18[0-9]{1})|(14[0-9]{1}))+\\d{8})$'。

固然有是否这些校验是写在script里面,也有时候是在后台校验。

 

【总结】

B/S架构的项目在首次部署完成后,常常会遇到因为配置问题致使的页面没法打开。遇到这种状况后,你们首先要对HTTP连接及URL访问有一个比较完整的认识。而后,根据项目实际状况梳理出网络拓扑,并对关键节点一一排查。最终,找到致使页面没法打开的真正缘由。 在实际的测试过程当中,你们也能够多尝试使用下IE浏览器集成的开发人员工具(一些浏览器也有相应功能,如火狐浏览器),有助于提升测试效率,特别是针对一些页面校验问题。

相关文章
相关标签/搜索