beinglovner 2019-05-22 13:54 采纳率: 100%
浏览 895
已采纳

wireshark怎么判断tcp连接创建成功?

10:38的时候建立一个连接,是不是tcp建立连接成功了?

图片说明

第一次使用wireshark,所以很多不懂.
但是看到三次握手已经成功了,但是有人说没有建立连接成功,请问各位大神成功了吗?

  • 写回答

1条回答 默认 最新

  • adminsada 2019-05-22 14:09
    关注

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

    当你在运行一个应用程序时,例如数据库客户端,邮件客户端,观看视频等等,而又无法获得输出,按照以下步骤诊断:

       确认服务器和应用程序正在运行。
       确认客户端正在运行,IP地址已配置(手动或通过DHCP),并连接至网络。
      Ping服务器并确认连接正常。
      在某些情况下,ping不通服务器但连接正常。这是由于防火墙拦截了ICMP信息,所以如果无法ping通并不一定表示连接有问题。防火墙可能是网络中的专用设备或Windows/Linux/UNIX终端设备上安装的防火墙。
    5.     抓包文件中,查找以下模式:

    ·         三重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连接开始时,发生了以下三步:

    1.     客户端TCP进程发送了一个SYN报文。该报文中SYN标志位设置为1。这一报文中客户端:

    ·         指定自己的初始序列号。这是客户端发送给服务器的第一个字节。

    ·         指明自己的窗口大小。这是客户端分配给进程的缓存大小(位于客户端的RAM)。

    ·         设置自己将要使用的选项:MSS,Selective ACK,等等。

    2.     当服务器收到建立连接请求,服务器:

    ·         发送SYN/ACK给客户端,确认接收到SYN请求。

    ·         指明服务器端的初始序列号。这是服务器发送给客户端的第一个字节。

    ·         指明服务器的窗口大小。这是服务器分配给进程的缓存大小(位于服务器RAM)。

    ·         回复请求选项并设置服务器端选项。

    3.     当接收到服务器的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正常操作。


    作者:vfdvf
    来源:CSDN
    原文:https://blog.csdn.net/lishanmin11/article/details/77008362
    版权声明:本文为博主原创文章,转载请附上博文链接!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 8月25日

悬赏问题

  • ¥15 WPF使用Canvas绘制矢量图问题
  • ¥15 用三极管设计一个单管共射放大电路
  • ¥20 fluent无法启动
  • ¥15 孟德尔随机化r语言运行问题
  • ¥15 pyinstaller编译的时候出现No module named 'imp'
  • ¥15 nirs_kit中打码怎么看(打码文件是csv格式)
  • ¥15 怎么把多于硬盘空间放到根目录下
  • ¥15 Matlab问题解答有两个问题
  • ¥15 LCD12864中文显示
  • ¥15 在使用CH341SER.EXE时不小心把所有驱动文件删除了怎么解决