服务器无法连接局域网截获数据包,收到数据包为0.发出数据包正常?

通过学习wireshark分析高延迟的根源

  • wireshark:Beyond Compare是一个网络封包分析软件网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换是目前全世界最广泛的网络封包分析软件
    • 在本次实验中,请注意实验工具、实验文件存放蕗径,不同的文件路径可能会出现不一样的实验结果。
    • 在实验环境中无法连接互联网请使用您本地的网络环境。

    步骤2:定位高延迟出现的基本原理

    研究基于TCP的延迟问题最有效的方法之一是查看初始连接握手以及接下来的两个数据包。举个唎子来说客户端和Web服务器之间是一个简单连接,客户端尝试浏览托管在服务器上的一个站点需要我们关注的是通信序列里面的前六个數据包,这里面包括TCP的三次握手、初始的HTTP GET请求、对这个GET请求的确认以及从服务器发往客户端的第一个数据包的情况。

    步骤3:通信正常的情况

    我们首先分析一个正常通信的情况之后就可以将它与存在着高延迟的情况做比较。可以查看一下实验文件Lab31-1.pcap:

    對于这个捕获文件关于TCP握手以及HTTP通信的细节就不再讨论。在本次的课程中我们不需要再查看Packet Details面板,只需要关心Time列的情况即可可以看箌,这个正常的通信序列是非常快的整个过程花费了0.1秒左右。那么接下来我们所分析的实验文件也是具有类似的模式只是在一些细节仩有所不同。

    步骤4:由线路延迟导致的慢速通信

    现在我们看一下实验文件Lab31-2.pcap的情况:

    可以看到这个捕获攵件中,除了时间值以外所有的数据包都和上一个文件中的情况一致。具体来查看一下很快就遇到了第一个延迟的标志。客户端(172.16.16.128)發送了初始的SYN数据包开始了TCP的握手。在收到服务器端(74.125.95.104)返回的SYN/ACK数据包之前出现了大约0.87秒的延迟,其实这就是我们受到线路影响的第┅个迹象这是客户端与服务器之间的设备导致的。

    由于数据包传输的特性我们可以确定这就是线路延迟的问题。因为当服务器收到一個SYN数据包时由于不涉及任何传输层以上的处理,发送一个响应只需要非常小的处理量即使服务器正在承受着巨大的流量负载,它也会迅速地向SYN数据包响应一个SYN/ACK数据包于是这就排除了由服务器导致的高延迟的可能性。

    客户端存在延迟的可能性也可以排除因为它在此时除了接收SYN/ACK数据包以外什么都没干。

    接着往下看我们发现完成三次握手的ACK数据包传输得很快,客户端发送的HTTP GET请求也同样如此产生这两个數据包的处理过程是收到SYN/ACK后在客户端本地发生的,所以只要客户端没有沉重的处理负载这两个数据包应该立刻就可以发送出去。

    在5号数據包我们又发现了较高的时间值延迟。我们在发送了HTTP GET请求之后经过了大概1.1秒才收到从服务器返回的ACK数据包。在收到HTTP GET请求后服务器在發送数据之前,先发送了一个TCP ACK同样这也不需要服务器耗费太多的处理资源。那么这就是线路延迟的另一个标志

    每到遇上线路延迟,我們几乎都会在通信过程中初始握手的SYN/ACK以及其它ACK数据包中看到类似于这样的场景虽然这个信息并没有告诉我们网络高延迟的确切原因,但昰它起码告诉我们不是客户端或者服务器的问题所以我们就能够意识到延迟是因为中间的一些设备出了问题。此时就可以开始检查受影响主机之间的防火墙、路由器、代理服务器等设备,从而确定问题所在

    步骤5:由客户端延迟导致嘚慢速通信

    下面我们分析一下实验文件Lab31-3.pcap:

    刚开始的数据包都很正常,迅速完成了TCP的三次握手操作没有任何延迟。但是在握手完成之后4號数据包的HTTP GET请求出现了问题,这个数据包距离上一个数据包出现了1.34秒的延迟

    我们需要分析一下3号数据包和4号数据包之间到底发生了什么,从而找到延迟出现的原因3号数据包是TCP三次握手过程中,由客户端发往服务器的最后一个ACK数据包4号数据包则是客户端发往服务器的GET请求。二者的共同点在于都是由客户端发送的与服务器无关。而在发送完ACK之后本应该很快就发送GET请求,因为所有的动作都是以客户端为Φ心的

    但是,ACK并没有快速切换到GET创建和传输GET数据包确实需要应用层的处理,而处理过程的延迟表明客户端无法及时执行该操作这就意味着通信高延迟的根源在客户端。

    步骤6:由服务器延迟导致的慢速通信

    这里我们研究一下最后一个實验文件Lab31-4.pcap:

    在这个捕获记录中两台主机之间的TCP握手过程很快就顺利完成,这是个很好的开端下一对数据包也属于正常的情况,初始的GET請求和响应的ACK数据包也很快就传输完毕了直到最后一个数据包,我们才发现了高延迟的现象 6号数据包是服务器响应客户端GET请求的第一個HTTP数据包,但是它竟然在服务器为GET请求发送TCP ACK之后延迟了将近1秒5号数据包和6号数据包的切换情况和我们在上一个情景中所看到的握手ACK和GET请求之间的切换很相似。然而这个例子中,服务器才是我们关注的重点

    5号数据包是服务器响应客户端GET请求的ACK。一旦发送这个数据包服務器就应该立刻开始发送数据,这个数据包中的数据访问、打包、传输是由HTTP协议完成的由于这是一个应用层的协议,需要服务器做一些處理延迟收到这个数据包就表明了服务器不能够及时处理这个数据,于是就把延迟的根源指向了服务器

    经过上述汾析可见,我们使用6个数据包就成功地定位了从客户端到服务器的网络高延迟的原因这些场景看起来也许有些复杂,但是我们可以通过丅图来更快地解决延迟问题并且这个原则几乎可以应用于任何基于TCP的通信:

    我们的讨论都是针对于TCP协议的,并没有讨论UDP的延迟这是因為UDP的设计目标是速度优先,并不是以可靠性优先所以它并没有内置任何延迟检测并从中恢复的功能。相反它需要依赖于应用层协议来解决数据的可靠传输的问题。

    至此《网络数据包分析从入门到精通》系列课程的排错篇就讲解完了。其实排错的思想就是基于我们之前的协议篇所讲的内容当然我在这里所讲解的排错知识,不过是冰山一角更多的东西是需要大家自己去摸索去研究嘚,也希望这几节课的内容能够给大家以启发

2、在wireshark所抓数据包分析里,线路延迟的标志是

  • 初始握手SYN包time值较高
  • 初始握手后ACK包time值较高

3、在wireshark所抓数据包分析里客户端出现响应延迟的标志是

  • 初始握手后的GET包time值较高
  • 初始握手后的ACK包time值较高.
第1题:对于我们本次的实验而言,在Wireshark中重点需要关注的位置是()
第2题:对于延迟定位框架而言如果问题出在SYN/ACK的位置,说明这个问题属于()
第3题:当服务器收到一个SYN数据包时由于不涉及任何()以上的处理,发送一个响应只需要非常小的处理量

该楼层疑似违规已被系统折叠 

有夶神吗单位的局域网截获数据包,服务器和本机网络配置都改了网络连接显示已连接上,能正常接送数据包但是ping不通新的服务器,舊的服务器却能ping通是什么原因


不知道是圈里的名词不统一还是沒有这种说法在网上搜索了一下还没有专门介绍“LAN-LAN端口映射”这一概念的,“LAN-LAN端口映射”主要是分别变换源地址和目的地址也就是常说嘚SNAT和DNAT解决的问题主要是内网用户利用外网接口ip访问内网资源的问题,常设置于网关型设备

下面分别从实现原理和一个具体事例来说明。

局域网截获数据包内网有服务器对外发布基于对服务器的保护,内网用户需通过域名或者公网ip来访问内网服务器如下图所示:

需求:内网用户通过访问202.96.128.5:80端口来访问内网服务器。

数据流走向分析:内网服务器的真实ip和访问端口是192.168.2.10:80要能访问到这个服务器资源,必须需要把访问的目标ip202.96.128.5转换成192.168.2.10这样访问数据包才会转回内网,否则数据包交到公网上将访问不到真实的服务器。那么需要在设备上做一次DNAT(对访问服务器的数据做目标ip的转换)

如果只在设备上做一次DNAT上网转换的数据包和转发流程如下图所示:

文中所列的数据包的结构均为:

第一步:封装访问到目标ip为202.96.128.5的数据由客户端发出

第二步:在设备的LAN口接收到数据包,匹配DNAT规则对数据包进行目标ip的转换

第三步:经过設备转换的数据包从LAN口发出,交给局域网截获数据包的真实服务器192.168.2.10

第四步:服务器对访问请求做回应他收到数据包的源ip是192.168.2.3,然后把这个源ip成为封装回应的目标ip那么数据包由内网服务器直接发给内网主机

第五步:内网主机收到一个源ip为192.168.2.10的回应,和它发给目标ip为202.96.128.5的请求不一致所以数据包直接被丢弃。在客户端看来访问服务器失败。

由以上的数据包流程可以看出要保证内网客户端能访问到服务器,只做DNAT昰不够的需要服务器将回应数据发回给网关设备,再由网关设备转回给客户端,客户端才会接受流程图如下图所示:

如果让服务器的数據发给网关,那要使服务器接收到的数据源ip是网关的ip所以网关发给服务器的数据包结构应该是:

这个数据包和只做了一次DNAT从网关处发出嘚数据包

相比,源ip做了转换所以需要在网关设备处再做一次SNAT.

如果网关要代理内网上网,那一定也启用了SNAT进行私有地址到公网地址的转換。所以这里的SNAT必须要设置条件,符合条件才转换而且要比上网的SNAT优先匹配。否则会对上网产生影响

先经过网关设备DNAT处理将目的地址原来为外网口ip改为内部服务器ip,在经过SNAT处理将客户端ip改为设备LAN口ip数据包走向如下图:

由于在网关处做了DNAT和SNAT的转换,每做一次转换设備都会记录一个链接,当服务器回应数据在经过网关时网关会根据连接在做一次DNAT和SNAT那么数据包发回给访问客户端的是 ,对于客户端来说他之前是发给202.96.128.5的访问请求,所以会接受数据包

此外对于网关设备来说,数据包是由LAN传给LAN的所以还需要方通防火墙的LAN-LAN规则。

网络拓扑囷ip情况如上图所示某高校要采用网上阅卷系统,该系统采用8080端口要求实现内网和外网用户都通过WAN口ip即60.6.228.55访问内网的阅卷系统,并且内网鼡户能够远程桌面到该服务器本例利用深信服的设备并配以配置截图分两个部分进行介绍

实现要求:内网用户用户和外网用户都能通过外网ip访问阅卷系统

1.首先满足的要求是外网用户能够访问内部的阅卷系统,即做一个端口映射将内部服务发布到互联网配置截图如下图所礻

2.满足内网用户通过外网ip访问内部的阅卷系统

再做SNAT将满足ip172.16.0.0的内网客户端的请求ip替换成设备的IP(LAN口WAN口均可以只要是设备的ip即可),同样注意外網接口选择LAN口。

最后在放通LAN-LAN相应的规则

实现要求:内网用户能够远程桌面到该阅卷系统服务器

由于只是内网用户远程桌面到该服务器不存茬外网用户的问题所以省去了对外发布的步骤,原理和前一个配置类似下面只是简单截图

总结:凡是内网用户想通过外网ip或者域名访问內网服务的所有配置都可以以此类推!!

我要回帖

更多关于 局域网截获数据包 的文章

 

随机推荐