网络基本功系列(二十三):Wireshark抓包实例诊断TCP连接问题
发布日期:2015-2-4  所属分类:以太网

原文出处:EMC中文支持论坛

介绍

前文论述了TCP基础知识,从本节开始,通过TCP抓包实例来诊断TCP常见问题。
      TCP进程通讯时,双方打开连接,发送数据,最后关闭连接。当TCP打开连接时,从源端口到目的端口发送一个请求。在应用建立或关闭时可能发生一些问题。本文讨论用Wireshark网络抓包的方法来定位及解决这一问题。

更多信息

问题的表现形式:
 
问题可能有多种表现类型:
      ● 尝试运行应用程序但发现应用程序无法工作。尝试浏览网络但无法获得响应。
      ● 尝试发送邮件但无法连接到邮件服务器。
      ● 问题可能由简单原因引起,如服务器宕机,服务器上没有运行应用程序,或在客户端到服务器的某一处网络断开。
      ● 问题也可能由复杂原因引起,如DNS问题,服务器内存不足无法连接(例如某一应用占用高内存空间),重复IP,以及其他原因。

处理方法:

下文会介绍解决问题的线索以及如何通过抓包来诊断TCP连接问题。通常,这些问题会导致运行应用程序时无法得到任何结果。

当你在运行一个应用程序时,例如数据库客户端,邮件客户端,观看视频等等,而又无法获得输出,按照以下步骤诊断:
      1、确认服务器和应用程序正在运行。
      2、确认客户端正在运行,IP地址已配置(手动或通过DHCP),并连接至网络。
      3、Ping服务器并确认连接正常。
      4、在某些情况下,ping不通服务器但连接正常。这是由于防火墙拦截了ICMP信息,所以如果无法ping通并不一定表示连接有问题。防火墙可能是网络中的专用设备或Windows/Linux/UNIX终端设备上安装的防火墙。

抓包文件中,查找以下模式:
      ● 三重SYN信息而没有响应(见以下截屏)
      ● SYN信息带一个reset(RST)响应
这两种情况下都有可能是防火墙拦截了特定应用程序或应用程序没有在运行。
 
      以下截屏是一个简单的case:客户端无法连接到web服务器81.218.31.171(报文61,62和63)。可能是由于不被防火墙允许,或服务器发生故障。可以看到另一个站点108.160.163.43(报文65,66和67)的连接正常,因此连接问题仅限于81.218.31.171。

下例是一个这种情况相对复杂的case。该case中,客户想要登录到camera服务器来访问远程站点的camera。camera服务器的IP地址为135.82.12.1,问题在于客户能够看到服务器主页上的登录窗口,但无法登进系统。在下面的截图中可以看到,打开了一个到IP地址135.82.12.1的连接。到HTTP服务器的TCP连接是打开的,一开始看上去没有连接问题:

当我们过滤出目的IP地址为135.82.12.1的数据流,也就是camera服务器。这里可以看到,当尝试连接TCP端口6036时,得到了一个RST/ACK响应,有以下可能性:
      ● 防火墙拦截了端口6036
      ● 如果配置了端口地址转换(PAT),那么仅转换端口80而非6036
      ● 用户名和密码验证是在TCP端口6036上完成的,防火墙仅允许端口80,验证被拦截,应用无法工作
      

      总之,当无法正常连接服务器时,检查服务器和客户端是否所有TCP/UDP端口都能通过网络转发,以及是否有未知的端口。
 
工作过程:
TCP连接开始时,发生了以下三步:


      客户端TCP进程发送了一个SYN报文。该报文中SYN标志位设置为1。这一报文中客户端:
      ● 指定自己的初始序列号。这是客户端发送给服务器的第一个字节。
      ● 指明自己的窗口大小。这是客户端分配给进程的缓存大小(位于客户端的RAM)。
      ● 设置自己将要使用的选项:MSS,Selective ACK,等等。
 
当服务器收到建立连接请求,服务器:
      ● 发送SYN/ACK给客户端,确认接收到SYN请求。
      ● 指明服务器端的初始序列号。这是服务器发送给客户端的第一个字节。
      ● 指明服务器的窗口大小。这是服务器分配给进程的缓存大小(位于服务器RAM)。
      ● 回复请求选项并设置服务器端选项。
 
当接收到服务器的SYN/ACK,客户端:
      ● 发送ACK报文给服务器,确认从服务器接收到SYN/ACK.
      ● 指明客户端窗口大小。尽管这一参数在第一个报文中定义过了,服务器还是会参考这个值,因为这是最新的窗口大小。
      
在TCP头部的选项字段中,有以下几个主要选项:
      ● Maximum Segment Size(MSS):TCP数据报的最大字节数,即从TCP头部开始直到报文末尾的字节数。
      ●  Windows Scale Option (WSopt):这一因子与TCP头部的Window Size字段相乘,通知接收方扩大缓存。由于头部最大窗口大小是64KB,乘以因子4也就是256KB窗口大小。
      ● SACK:Selective ACK,该选项使连接双方能够仅确认指定报文,当单个报文丢失,只有这个报文会被重传。连接建立时,双方都需要同意SACK。
      ● Timestamps Option(TSopt):该参数指客户端和服务器之间的延时。

在这一阶段,双方:
      ● 同意建立连接
      ● 知道对方的初始序列号
      ● 知道对方的窗口大小

在建立连接时,除了三路握手信号之外,其他都表示有问题。包括SYN没有响应,SYN之后SYN/ACK最后没有ACK,SYN响应为RST,等等。

总结:
      ● 如果SYN报文收到回复RST,则检查拦截了port号的防火墙。
      ● 三次SYN而没有任何回复,或者是由于应用程序没有响应,或者是由于防火墙拦截了特定端口上的请求。
      ● 永远记住确认一下是否有NAT,端口转发,以及涉及TCP和UDP端口的机制。这些机制可能会中断TCP正常操作。

Wireshark抓包:实例诊断TCP连接问题相关推荐

  1. 网络基本功(二十三):Wireshark抓包实例诊断TCP连接问题

    转载请在文首保留原文出处:EMC中文支持论坛https://community.emc.com/go/chinese 介绍 前文论述了TCP基础知识,从本节开始,通过TCP抓包实例来诊断TCP常见问题 ...

  2. Wireshark抓包实例诊断TCP连接问题

    转载请在文首保留原文出处:EMC中文支持论坛https://community.emc.com/go/chinese   介绍   前文论述了TCP基础知识,从本节开始,通过TCP抓包实例来诊断TCP ...

  3. 网络基本功(二十四):Wireshark抓包实例分析TCP重传

    转载请在文首保留原文出处:EMC中文支持论坛https://community.emc.com/go/chinese 介绍 前文论述了TCP基础知识,从本节开始,通过TCP抓包实例来诊断TCP常见问题 ...

  4. 计算机网络实验 ——wireshark抓包简要分析TCP、UDP协议

    [计算机网络实验 --wireshark抓包简要分析TCP.UDP协议] (1)分析 TCPheader: Source Port:16bit源端口,数据发起者的端口号: Destination Po ...

  5. Wireshark抓包示范:TCP三次握手建立连接和四次握手断开连接

    转载请标注: 披萨大叔的博客 http://blog.csdn.net/qq_27258799/article/details/51379508 如果您觉得这篇文章对您有帮助,请点下文章最下面的赞~ ...

  6. Wireshark抓包介绍和TCP三次握手分析

    wireshark介绍 wireshark的官方下载网站: http://www.wireshark.org/ wireshark是非常流行的网络封包分析软件,功能十分强大.可以截取各种网络封包,显示 ...

  7. wireshark 抓包再利用TCP socket发送包里的payload是可以实现登陆的

    用户密码可被批量破解 在用户使用手机端登录时,对数据进行抓包分析. 多次抓包分析后,可得到几个关键TCP数据包. 根据前面逆向编写出的解密算法,使用socket进行数据发包测试: 可以模拟APK进行用 ...

  8. wireshark抓包TCP数据包

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一.准备工作 二.操作步骤 1.硬件连接 1.1硬件连接方式 1.2确认硬件连接成功 1.3 网络助手建立连接 1.4 配置 ...

  9. wireshark抓包分析数据怎么看 wireshark使用教程

    大家都知道Wireshark是非常流行且知名的网络抓包数据分析工具,可以截取各种网络数据包,并显示数据包详细信息,常用于开发测试过程各种问题定位.网络故障排查等情况.但是很多网友不清楚如何使用Wire ...

最新文章

  1. Freemarker详细解释
  2. KDT 对比 DDT 小栗子
  3. 英雄联盟如何指挥团战?AI帮你做决策(附资源)
  4. Android--Matrix图片变换处理
  5. php 内容自动生成word文档,php生成word文档的例子
  6. python【蓝桥杯vip练习题库】ADV-172身份证排序
  7. php pdo 打印sql语句,php – 使用PDO准备SQL语句
  8. AssertionError: Invalid device id 和RuntimeError: CUDA error: invalid device ordinal
  9. eBPF 入门之编程
  10. ChartDirector画2D,3D图,MFC画图
  11. ffmpeg转码文件输出rtsp流
  12. 低功耗电波钟的制作 - 电子设计竞赛
  13. 西门子ug通用后处理_浅谈SIEMENS数控系统UG后置处理常用TCL语句使用技巧
  14. 滴滴程序员年薪80万却被亲戚鄙视:钱多有啥用,我儿子二本大学教师
  15. 让HTML img垂直居中的三种办法:
  16. android高德地图上加自定义菜单,自定义UI控件-UI界面定制-开发指南-Android 导航SDK | 高德地图API...
  17. 互联网公司招聘黑话大全
  18. API 获取推荐商品列表返回值说明
  19. R语言入门1---R语言介绍以及学前注意事项
  20. 基于pyqt编写的高校bbs发帖辅助软件和双色球号码生成器

热门文章

  1. 强化学习-学习笔记11 | 解决高估问题
  2. DDR3 CONTROLLER-PHY物理层
  3. 博才教育三校领导莅临湖南省智慧教育装备展示体验中心参观交流
  4. 如何用matlab在Excel中画画 附源代码
  5. 网络攻击知识之几种IP地址攻击方式
  6. 微课竞赛系统的设计与实现所需工作条件_启升微课丨如何准备医疗器械软件开发计划...
  7. 网安、ctf常用网址
  8. 网络创业者莱恩-福克斯:最后一分钟的奇迹
  9. 【自动化】自动化工厂需要的十大工控产品
  10. 拼多多卖家打单发货技巧,这里告诉你~