Wireshark数据包分析实战(第2版)(txt+pdf+epub+mobi电子书下载)

作者:[美]Chris Sanders 著

出版社:人民邮电出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

Wireshark数据包分析实战(第2版)

Wireshark数据包分析实战(第2版)试读:

前言

和第1~3章,陈霖译第4~7章,许伟林译第8~11章与附录。全书内容由诸葛建伟进行全面、仔细的统稿与审校,并由陈爱华、陈建军、刘跃、崔丽娟进行了试读。本书翻译正值学校暑假,因此译者团队也都投入了充分的时间来保障翻译质量,仔细推敲和统一全书技术词汇的译法,确保对翻译内容的技术掌控,从而能够忠实地描述出原书作者期望传递给读者的知识与技能。

在翻译到前言部分,获知本书作者的成长经历以及对乡村学生所做的公益事业,译者团队感同身受,三位译者中的两位也是从中国的农村地区成长起来的,也都还深刻地记忆着第一次接触到学习机和电脑时那种兴奋异常的感觉。在走向小康社会的今日中国,仍然有这样一个被社会边缘化的群体,他们渴望了解这个世界更多,渴望在互联网世界里遨游,但他们却因为贫困而无法跨越数字鸿沟。这就是农民工子弟学校计算机教育的现状,而在广大的农村地区,问题更加严重。1.5亿农村中小学生,竟然有77.3%从来没有见过电脑!但与此同时,我们看到,社会上存在着大量的废旧电脑资源,城市里每年淘汰的电脑就达500万台。

当你要淘汰掉手中“没有价值”的旧电脑,你能否记起那些求知若渴的孩子们?科技更新换代越来越快,许多旧电脑只要经过简单的整修,便可继续使用至少2年。

因此译者团队达成共识,将本书的公益特性进行到底,决定将本书的译者稿费捐赠给清华大学学生教育扶贫公益协会,通过@电脑传爱活动,将旧电脑维修之后,为打工子弟小学建立电脑室,将公益的精神传递下去。我们也非常欢迎读者能够参与公益事业,事实上,各位读者在购买本书的同时,就已经为公益做出了一份贡献。如果你愿意捐赠淘汰的电脑和计算机基础书籍,欢迎通过新浪微博@电脑传爱,也可以@清华诸葛建伟。如果你是高校学生,希望通过电脑维修做些公益并积累社会实践经验,也非常欢迎加入到@电脑传爱组织的高校电脑维修公益志愿者活动。

公益是举手投足之间的事,我们倡议,每个人为社会公益奉献一点点,让它汇成可以改变世界的力量!

一台电脑开启一扇窗,一次行动传递一份爱!清华大学教育扶贫电脑传爱公益活动,邀你同行。诸葛建伟 陈霖 许伟林2013年1月于北京清华园前言

本书从2009年底开始编写,在2011年中期完成,总计历时一年半。而在本书出版之日,已经距离本书第1版发布的时间有4年之久。本书的所有内容几乎都经过了重写,并采用了完全重新设计的网络捕获数据包文件和场景。如果你喜欢本书第1版,那么你也会喜欢本书,因为本书采用了与第1版同样的写作方式,以一种简单容易理解的风格来展示技术。如果你不喜欢第1版,你也会喜欢本书,因为新版拥有全新设计的场景和扩展后的充实内容。为什么购买本书

你一定很想知道为什么应该买这本书,而不是其他关于数据包分析的书籍。答案在于本书的书名:Practical Packet Analysis。让我们面对这样的现实——没有比实际的经验更加重要的了,而本书通过大量的真实场景中的数据包分析案例,让你获得最贴近实际的经验。

本书的前半部分将为你提供理解数据包分析技术和Wireshark软件的必备前置条件。后半部分则完全是一些你在日常网络管理中很容易遇到的一些实际案例。无论你是一位网络技术员、网络管理员、首席信息官、IT技术支持,还是一位网络安全分析师,你都可以从本书描述的理解与使用数据包分析技术中获得很多的收获。概念与方法

我是一个非常随意的人,所以,当我教授你一个概念时,我也会尝试用非常随意的方式来进行解释。而本书的语言也会同样的随意,因此你可能比较容易在一些处理技术概念的行话中迷失,但我已经尽我所能地保持行文的一致与清晰,让所有的定义更加明确、直白,没有任何繁文缛节。然而我终究是从伟大的肯塔基州来的,所以我不得不收起我们的一些夸张语气,但你如果在本书中看到一些粗野的乡村土话,请务必原谅我。

如果你真地想学习并精通数据包分析技术,你应该首先掌握本书前几章中介绍的概念,因为它们是理解本书其余部分的前提。本书的后半部分将是纯粹的实战内容,或许你在工作中并不会遇到完全相同的场景,但你在学习本书后应该可以应用所学到的概念与技术,来解决你所遇到的实际问题。

接下来让我们快速浏览本书各个章节的主要内容。● 第1章:“数据包分析与网络基础”,什么是数据包分析技

术?这种技术的基本原理是什么样的?你该如何使用这项技术?

本章将覆盖这些网络通信与数据包分析的基础知识。● 第2章:“监听网络线路”,本章将覆盖你在网络中放置数据

包嗅探器时可以使用的各种不同技术方法。● 第3章:“Wireshark入门”,从本章起,我们将开始进入

Wireshark软件的世界,我们将介绍Wireshark软件的入门知识

——哪里可以下载到,如何使用它,它完成什么功能,为什么

它广受好评与关注,以及其他各种好东西。● 第4章:“玩转捕获数据包”,在你运行Wireshark软件之后,

你会需要知道如何与捕获的数据包进行交互,而这是你开始学习

基础实践方法的起始点。● 第5章:“Wireshark高级特性”,一旦你已经学会了缓慢地爬

行,那是时候来学习跑步了。本章将深入钻研Wireshark的高级

特性,带你揭开引擎的盖子,来了解一些比较少见的操作。● 第6章:“通用底层网络协议”,本章将为你展示那些最常见

的通用底层网络通信协议——比如TCP、UDP和IP——从数据包

的层次上来看。为了解决这些网络协议中发生的故障,你首先需

要理解它们是如何工作的。● 第7章:“常见高层网络协议”,继续讲解网络协议的相关内

容,本章将带你了解3种最为常见的高层网络通信协议——

HTTP、DNS与DHCP——并从数据包的层次上来看。● 第8章:“基础的现实世界场景”,这章中将包含一些常见的

网络流量,以及最初的现实世界场景中的案例。每个案例将采用

一种容易跟随的方式进行展示,包括问题、分析和解决方法。这

些基础场景案例仅仅涉及到少量几台计算机,以及很少的分析

——仅仅能够将你的脚打湿。● 第9章:“让网络不再卡”,网络技术人员最普遍遇到的网络

问题便是网络性能很慢的情况,本章便是专门为解决这一问题而

设计的。● 第10章:“安全领域的数据包分析”,网络安全是信息技术

领域中最大的热点问题,本章将带给你几个关于如何使用数据包

分析技术解决安全相关问题的实际案例。● 第11章:“无线网络数据包分析”,本章是无线网络数据包

分析技术启蒙,讨论了无线数据包分析与有线数据包分析技术的

差异,并包含了无线网络流量分析的几个案例。● 附录A:“延伸阅读”,本书附录给出了其他一些参考工具和

网站列表,你可以从中找到继续使用你所学到的数据包分析技术

的进一步资料。如何使用本书

我期待本书按照如下两种方式进行使用。● 作为一本教学书籍,你可以按一章接着一章的顺序阅读,来

获得对数据包分析技术的理解与掌握。这种方式会特别关注后面

几章中的现实世界场景案例。● 作为一本参考索引资料,有些Wireshark软件的特性是你不

会经常使用到的,所以你可能会忘记它们是如何工作的。数据包

分析实用技术是你的书柜中一本非常有用的参考书,当你需要快

速重温如何使用Wireshark软件的某个特性时,你可以从本书中

获得参考。我已经提供了很多独特的图表、图解和方法说明,已

经被证明能够作为你进行数据包分析的有用索引参考。关于示例网络数据包捕获文件

所有本书中使用的网络数据包捕获文件都在本书的官方网站[1](http://www.nostarch.com/packet2.htm)下载到,为了最大化本书的价值,我强烈建议你下载这些文件,并在你学习每个真实案例时使用它们。乡村科技基金会

在我编写本书的前言时,我无法不提及由数据包分析实用技术书籍而衍生出的这一美好事物。在本书第一版出版后不久,我创办了一个501(c)(3)的非营利性组织,而这正是我最大梦想成为现实的巅峰时刻。

比起城市与市郊的学生们,乡村学生即使拥有很优秀的成绩,仍然很少有机会能够接触到最新的科技。创办于2008年的乡村科技基金会(RTF)致力于能够减少乡村学生与城市同龄学生们之间的数字鸿沟,主要通过针对性的奖学金项目、社区参与计划,以及一些在乡村地区的科技促进与提倡项目来达成。我们的奖学金项目专门提供给生活在乡村,但对计算机技术拥有着热情并希望在这个方向得到进一步教育的学生们。我非常高兴地宣布本书所有的作者版税将提供给乡村科技基金会,用于设立这些奖学金。如果你需要了解更多关于乡村科技基金会的信息,或者想了解你如何可以参与贡献,请访问我们的网站http://www.ruraltechfund.org/。[1]为了方便国内读者下载,将在http://netsec.ccert.edu.cn/hacking/book/提供备份链接。——译者注本书第1版的书评“各层次网络管理员的必备手册。”——Linux Pro杂志“一本优秀、易懂且具有良好格式的Wireshark实用指南。”——ARSGEEK.COM“如果您需要掌握数据包分析的基础知识,本书将是您起步的好地方。”——STATEOFSECURITY.COM“本书能够让您有一技之长,它抓住了书名中的关键词——实用,很好地为读者们提供了进行数据包分析所需要知道的基本知识,然后又恰如其分地带领他们进入到使用Wireshrak软件解决现实问题的缤纷世界中。”——LINUXSECURITY.COM“您的网络中有未知主机在和其他主机聊天吗?您的电脑是否在和陌生人说话?您需要一个数据包嗅探器来找出这些问题的真正答案。Wireshark是能够完成这件事情的最佳工具,而本书是学习这个工具最好的方式之一。”——自由软件杂志“新手入门的最佳读物!”——DAEMON NEWS第1章数据包分析技术与网络基础

在计算机网络中,每天都可能发生成千上万的问题,从简单的间谍软件感染,到复杂的路由器配置错误。我们永远也不可能立即解决所有问题,而只能期盼充分地准备好相关的知识和工具,从而能够快速地响应各种类型的错误。

所有的网络问题都源于数据包层次,即使是有着最漂亮外表的应用程序,它们也可能是“金玉其外”但“败絮其中”,有着混乱的设计与糟糕的实现,又或是看起来是可信的,但背地里在搞些恶意的行为。为了更好地了解网络问题,我们需要进入到数据包层次。在这一层次,没有任何东西能够逃出我们的视线范围——这里不再有那些令人误解的菜单栏、用来吸引眼球的动画、以及无法让人信赖的员工。在数据包层次上,就不再有真正的秘密(加密通信除外),我们在数据包层次上做得越多,那我们就能够对网络有更好的控制,就能够更好更快地解决网络问题。这就是数据包分析的世界。

本书将与你一起进入到神奇的网络数据包世界里,你将学习如何解决网络通信速度慢的问题,识别出应用程序的性能瓶颈,甚至在真实世界的场景中追踪黑客。当你读完这本书后,你应该能够使用先进的数据包分析技术来解决自己网络中的实际问题,即便它们看起来是那么复杂与难以解决。

在这一章中,我们将开始学习一些网络通信方面的基础知识,这样你可以获得阅读和学习后续章节所需的基础知识。1.1 数据包分析与数据包嗅探器

数据包分析,通常也被称为数据包嗅探或协议分析,指的是捕获和解析网络上在线传输数据的过程,通常目的是为了能更好地了解网络上正在发生的事情。数据包分析过程通常由数据包嗅探器来执行。而数据包嗅探器则是一种用来在网络媒介上捕获原始传输数据的工具。

数据包分析技术可以通过以下方法来达到目标。● 了解网络特征。● 查看网络上的通信主体。● 确认谁或是哪些应用在占用网络带宽。● 识别网络使用的高峰时间。● 识别可能的攻击或恶意活动。● 寻找不安全以及滥用网络资源的应用。

目前市面上有着多种类型的数据包嗅探器,包括免费的和商业的。每个软件的设计目标都会有一些差异。流行的数据包分析软件包括tcpdump、OmniPeek和Wireshark(我们在这本书中将只使用此款软件)。tcpdump是个命令行程序,而Wireshark和OmniPeek都拥有图形用户界面(GUI)。1.1.1 评估数据包嗅探器

当你需要选择一款数据包嗅探器时,需要考虑的因素很多,包括以下内容。

支持的协议:数据包嗅探器对协议解析的支持范围各不相同,大部分通常都能解析常见的网络协议(如IPv4和ICMP)、传输层协议(如TCP和UDP),甚至一些应用层协议(如DNS和HTTP)。然而,它们可能并不支持一些非传统协议或新协议(如IPv6、SMBv2、SIP等)。在选择一款嗅探器时,需要确保它能够支持你所要用到的协议。

用户友好性:考虑数据包嗅探器的界面布局、安装的容易度,以及操作流程的通用性。你选择的嗅探器应该适合你的专业知识水平。如果你的数据包分析经验还很少的话,你可能需要避免选择那些命令行的嗅探器,比如tcpdump。另一方面,如果你拥有丰富的经验,你可能会觉得这类命令行程序会更具有吸引力。在你逐步积累数据包分析经验时,你甚至会发现组合使用多种数据包嗅探器软件将更有助于适应特定的应用场景。

费用:关于数据包嗅探器最伟大的事情是有着很多能够与任何商业产品相媲美的免费工具。商业产品与其他替代品之间最显著的区别是它们的报告引擎,商业产品通常包括各种花哨的报告生成模块,而在免费软件中则通常缺乏,甚至没有该模块。

技术支持:即使你已经掌握了嗅探软件的基本用法,但是你还是偶尔会在遇到一些新问题时需要技术支持。在评估技术支持时,你可以寻找开发人员文档、公众论坛和邮件列表。虽然对于一些像Wireshark这样的免费软件可能缺乏一些开发人员文档,但使用这些应用软件的社区往往可以填补这些空白。使用者和贡献者社区会提供一些讨论区、维基、博客,来帮助你获得更多关于数据包嗅探器的使用方法。

操作系统支持:遗憾的是,并不是所有的数据包嗅探器都支持所有的操作系统平台。你需要选择一款嗅探器,能够支持所有你将要使用的操作系统。如果你是一位顾问,你可能需要在大多数操作系统平台上进行数据包捕获和分析,那么你就需要一款能够在大多数操作系统平台上运行的嗅探器。你还需要留意,你有时会在一台机器上捕获数据包,然后在另一台机器上分析它们。操作系统之间的差异,可能会迫使你在不同的设备上使用不同的嗅探器软件。1.1.2 数据包嗅探器工作原理

数据包嗅探过程中涉及到软件和硬件之间的协作。这个过程可以分为成3个步骤。

第一步:收集,数据包嗅探器从网络线缆上收集原始二进制数据。通常情况下,通过将选定的网卡设置成混杂模式来完成抓包。在这种模式下,网卡将抓取一个网段上所有的网络通信流量,而不仅是发往它的数据包。

第二步:转换,将捕获的二进制数据转换成可读形式。高级的命令行数据包嗅探器就支持到这一步骤。到这步,网络上的数据包将以一种非常基础的解析方式进行显示,而将大部分的分析工作留给最终用户。

第三步,也是最后一步:分析,对捕获和转换后的数据进行真正的深入分析。数据包嗅探器以捕获的网络数据作为输入,识别和验证它们的协议,然后开始分析每个协议的特定属性。1.2 网络通信原理

为了充分理解数据包分析技术,你必须准确掌握计算机是如何通过网络进行相互通信的。在本节中,我们将研究网络协议、开放系统互连模型(OSI模型)、网络数据帧的基础知识,以及支持网络通信的硬件知识。1.2.1 协议

现代网络是由多种运行在不同平台上的异构系统组成的。为了使它们之间能够相互通信,我们使用了一套共同的网络语言,并称之为协议。常见的网络协议包括传输控制协议(TCP)、互联网协议(IP)、地址解析协议(ARP)和动态主机配置协议(DHCP)。协议栈是一组协同工作的网络协议的逻辑组合。

理解网络协议的最佳途径之一是将它们想象成人类口头或书面语言的使用规则。每一种语言都有规则,如动词应该如何结合,人们该如何问候,甚至该如何礼貌地致谢。网络协议大多也是以同样方式进行工作的。它帮助我们定义如何路由数据包,如何发起一个连接,以及如何确认收到的数据。一个网络协议可以非常简单,也可能非常复杂,这取决于它的功能。尽管各种协议往往有着巨大的差异,但它们通常用来解决以下问题。

发起连接:是由客户端还是服务器发起连接?在真正通信之前必须要交换哪些信息?

协商连接参数:通信需要进行协议加密吗?加密密钥如何在通信双方之间进行传输?

数据格式:通信数据在数据包中如何排列?数据到达接收设备时以什么样的顺序进行处理?

错误检测与校正:当数据包花了太长的时间才到达目的地时如何处理?当客户端暂时无法和服务器建立通信时,该如何恢复连接?

连接终止:一台主机如何告知另一台主机通信已经结束?为了礼貌地终止通信,应该传送什么样的最终信息?1.2.2 七层OSI参考模型

网络协议是基于它们在行业标准OSI参考模型中的职能进行分层的。OSI模型将网络通信过程分为7个不同层次,如图1-1所示。这个分层模型使得我们更容易理解网络通信。图1-1 OSI参考模型的七层协议视图

顶端的应用层表示用来访问网络资源的实际程序。底层则是物理层,通过它来进行实际的网络数据传播。每一层次上的网络协议共同合作,来确保通信数据在协议上层或下层中得到妥善处理。注意 OSI参考模型最初是在1983年由国际标准化组织出版,标准号为ISO 7498。OSI参考模型只是一个行业建议标准,协议开发并不需要严格地遵守它。OSI参考模型也并不是现有唯一的网络模型,例如,有些人更推崇美国国防部(DoD)的网络模型,也被称为TCP/IP模型。

OSI参考模型中的每层都具有特定功能,具体如下。

应用层(第7层):OSI参考模型的最上层,为用户访问网络资源提供一种手段。这通常是唯一一层能够由最终用户看到的协议,因为它提供的接口是最终用户所有网络活动的基础。

表示层(第6层):这一层将接收到的数据转换成应用层可以读取的格式。在表示层完成的数据编码与解码取决于发送与接收数据的应用层协议。表示层同时进行用来保护数据的多种加密与解密操作。

会话层(第 5 层):这一层管理两台计算机之间的对话(会话),负责在所有通信设备之间建立、管理和终止会话连接。会话层还负责以全双工或者半双工的方式来创建会话连接,在通信主机间礼貌地关闭连接,而不是粗暴地直接丢弃。

传输层(第4层):传输层的主要目的是为较低层提供可靠的数据传输服务。通过流量控制、分段/重组、差错控制等机制,传输层确保网络数据端到端的无差错传输。因为确保可靠的数据传输极为烦琐,因此OSI参考模型将其作为完整的一层。传输层同时提供了面向连接和无连接的网络协议。某些防火墙和代理服务器也工作在这一层。

网络层(第3层):这一层负责数据在物理网络中的路由转发,是最复杂的OSI层之一。它除了负责网络主机的逻辑寻址(例如通过一个IP地址)外,还处理数据包分片和一些情况下的错误检测。路由器工作在这一层上。

数据链路层(第2层):这一层提供了通过物理网络传输数据的方法,其主要目的是提供一个寻址方案,可用于确定物理设备(例如MAC地址)。网桥和交换机是工作在数据链路层的物理设备。

物理层(第1层):OSI参考模型的底层是传输网络数据的物理媒介。这一层定义了所有使用的网络硬件设备的物理和电气特性,包括电压、集线器、网络适配器、中继器和线缆规范等。物理层建立和终止连接,并提供一种共享通信资源的方法,将数字信号转换成模拟信号传输,并反过来将接收的模拟信号转换回数字信号。

表1-1列出了OSI参考模型各个层次上的一些常见网络协议。

虽然OSI参考模型仅仅是一个建议标准,你还是应该将其牢记在心。当我们阅读本书时,你发现,对不同层网络协议进行交互才能解决你面对的网络问题。例如遇到路由器问题,你该很快确认这是个“第3层上的问题”,而应用软件问题则被识别为“第7层上的问题”。表1-1 OSI参考模型各个层次上的典型网络协议层次协议应用层HTTP、SMTP、FTP、Telnet表示层ASCII、MPEG、JPEG、MIDI会话层NetBIOS、SAP、SDP、NWLink传输层TCP、UDP、SPX网络层IP、IPX数据链路层Ethernet、Token Ring、FDDI、AppleTalk注意 在讨论我们的工作时,一位同事告诉我,他曾处理过一位用户的投诉,说他不能访问网络资源,而实际原因是用户输入的密码不正确。我的同事将这个案例标成了“第8层的问题”,第8层是对用户层的一种非官方说法,通常是由那些整天工作在数据包层次上的网络工程师们使用。

那网络数据是如何流经OSI参考模型的各个层次呢?在网络上传输的初始数据首先在传输网络的应用层开始,沿着OSI参考模型的七层逐层向下,直到物理层。在物理层上,传输系统将数据发送到接收系统。接收系统从它的物理层获取传输数据,然后向上逐层处理,直到最高的应用层。

在OSI参考模型任意层次上由不同协议提供的服务并不是多余的。例如,如果某层上的一个网络协议提供了一种服务,那么再没有任何其他层的协议将提供与之完全相同的服务。不同层次的协议可能有目标类似的功能,但它们会以不同的方式来实现。

发送和接收计算机相同层上的网络协议是相互配合的。例如,发送系统在第7层的某个协议是负责对传输数据进行加密的,那么往往在接收系统的第7层有着相应的网络协议,负责对网络数据进行解密。

图1-2中连接了两个通信端图形化地说明了OSI参考模型。你可以看到,通信数据会从一个通信端的顶部流向底部,然后当它到达另一通信端时,将反向从底部流向顶部。

OSI参考模型中的每一层只能和直接的上层与下层进行通信。例如,第2层只能从第1层与第3层发送和接收数据。图1-2 处于发送系统和接收系统同一层的协议1.2.3 数据封装

OSI参考模型不同层次上的协议在数据封装的帮助下进行通信传输。协议栈中的每层协议都负责在传输数据上增加一个协议头部或尾部,其中包含了使协议栈之间能够进行通信的额外信息。例如,当传输层从会话层接收数据时,它会在将数据传递到下一层之前,增加自己的头部信息数据。

数据封装过程将创建一个协议数据单元(PDU),其中包括正在发送的网络数据,以及所有增加的头部与尾部协议信息。随着网络数据沿着OSI参考模型向下流动,PDU逐渐变化和增长,各层协议均将其头部或尾部信息添加进去,直到物理层时达到其最终形式,并发送给目标计算机。接收计算机收到PDU后,沿着OSI参考模型往上处理,逐层剥去协议头部和尾部,当PDU到达OSI参考模型的最上层时,将只剩下原始传输数据。注意 数据包这个术语指的是一个完整的PDU,包括OSI参考模型所有层次协议的头部与尾部信息。

理解数据封装过程可能会有点困难,让我们看一个实际的例子,看数据包是如何在OSI参考模型中被创建、传输和接收的。作为数据包分析师,你需要了解,我们经常会忽略掉会话层和表示层,所以它[1]们将不会在这个例子中出现(包括本书的其余部分)。

假设这样一个情形:我们试着在计算机上浏览http://www.google.com/。在这个过程中,我们首先必须产生一个请求数据包,从客户端计算机传输到目标服务器上。这里我们假设TCP/IP通信会话已经被建立,图1-3所示为此案例中的数据封装处理过程。图1-3 客户端和服务器之间数据封装过程示意图

我们从客户端计算机的应用层开始,在我们浏览一个网站时,所使用的应用层协议是HTTP,通过此协议发出请求命令,从google.com下载index.html文件。一旦我们的应用层协议已经确定我们要完成的任务,我们现在关心的是数据包如何发送到目的地。数据包中封装的应用层数据将沿着协议栈传递给传输层。HTTP是一个使用TCP(或在TCP协议之上)的应用层协议,因此传输层中将使用TCP协议来确保数据包的可靠投递。所以一个包括序列号和其他数据的TCP协议头部将被创建,并被添加到数据包中,以确保数据包能够被正确交付。注意 我们常说一个协议在其他协议之上,是因为OSI参考模型的上下层设计。例如HTTP等应用层协议提供了一个特定的服务,并依靠TCP协议来保证服务的可靠交付。正如你学习到的,DNS协议构架于UDP上,而TCP构架在IP之上。

在完成这项工作之后,TCP协议将数据包交给IP协议,也就是在第3层上负责为数据包进行逻辑寻址的协议。IP协议创建一个包含有逻辑寻址信息的头部,并将数据包传递给数据链路层上的以太网,然后以太网物理地址会被添加并存储在以太网帧头中。现在数据包已经完全封装好,然后传递给物理层,在这里数据包变成0、1信号通过网络完成传输。

封装好的数据包将穿越网络线缆,最终到达Google的Web服务器。 Web服务器开始读取数据包,从下往上,这意味着它首先读取数据链路层,从中提取到所包含的物理以太网寻址信息,确定数据包是否是发往这台服务器的。一旦处理完这些信息,第2层头部与尾部的信息将被剥除,并进入第3层的信息处理过程中。

读取IP寻址信息的方式和第2层相同,目的是确认数据包被正确转发,以及数据包未进行分片处理。这些数据也同样被剥离,并交到下一层进行处理。

现在第4层TCP协议信息被读取,以确保数据包是按序到达的。然后第4层报头信息被剥离,留下的只有应用层数据。这些数据会被传递到Web服务器应用程序。为了响应客户端发过来的这个数据包,服务器应该发回一个TCP确认数据包,使客户端知道它的请求已经被接收,并可以等待获取 index.html文件内容了。

所有数据包都会以这个例子中描述的过程进行创建和处理,而无论使用的是哪种协议。

但同时,请牢记并非每个网络数据包都是从应用层协议产生的,所以你会进一步看到只包含第2层、第3层或第4层协议信息的数据包。1.2.4 网络硬件

现在是时候来看看网络硬件了,至此脏活累活都已经完成,接下来的内容都很简单了。我们将专注于几种较为常见的网络硬件:集线器、交换机和路由器。● 集线器

集线器一般是提供了多个RJ-45端口的机盒,就像图1-4所示的

NETGEAR集线器。集线器从非常小的4端口的设备,到企业环

境中安装机架设计的48端口机盒设备,变化很大。

因为集线器会产生很多不必要的网络流量,并仅在半双工模式下运行(不能在同一时间发送和接收数据),所以你通常不会在现代或高密度的网络中再看到它们的身影了(用交换机来代替)。然而,你应该知道集线器的工作机制,因为它们对于数据包分析技术非常重要,特别在实施我们将于第2章介绍的“枢纽”技术时。图1-4 一台典型的4端口以太网集线器

一台集线器无非就是工作在OSI参考模型物理层上的转发设备。它从一个端口接收到数据包,然后将数据包传输(中继)到设备的其他每个端口上。例如,如果一台计算机连接到一个4端口集线器的1号端口上,需要发送数据到连接在2号端口的计算机,那么集线器将会把数据发送给端口1、2、3、4。连接到3号端口与4号端口上的客户端计算机通过检查以太网帧头字段中的目标媒体访问控制(MAC)地址,判断出这些数据包并不是给它们的,便丢弃这些数据包。图1-5所示为从计算机A发送数据到计算机B的例子,当计算机A发送出数据时,所有连接到集线器的计算机都将接收到数据,但只有计算机B会实际接受数据,而其他计算机则将丢弃它。图1-5 计算机A通过集线器传输数据到计算机B的通信流

做一个比喻,假设你发送一封主题为“所有的营销人员请注意”的电子邮件给贵公司所有雇员,而不只是那些在营销部门工作的人。市场营销部门的员工会知道这封邮件是给他们的,他们很可能会打开它,而其他员工将看到这封邮件并不是给他们的,则很可能会选择丢弃。你可以看到这会导致很多不必要的通信和时间浪费,然而这正是集线器的工作原理。在高密度的实际网络中,集线器最好的替代产品是交换机,它们是支持全双工的设备,可以同步地发送和接收数据。● 交换机

与集线器相同,交换机也是用来中继数据包的。但与集线器不同的是,交换机并不是将数据广播到每一个端口,而是将数据发送到目的计算机所连接的端口上。如同你在图1-6中看到的那样,交换机的外表与集线器没什么两样。图1-6 一个机架式24端口以太网交换机

市场上几个大牌公司的交换机,比如思科品牌的,能够通过专业化的供应商特定软件或Web接口进行远程管理。这些交换机通常被称为管理型交换机。管理型交换机提供了多种在网络管理中非常有用的功能特性,包括启用或禁用特定端口、查看端口细节参数、远程修改配置、远程重启等。

交换机在涉及处理传输数据包时,还提供一些先进的功能。为了能够直接与一些特定设备进行通信,交换机必须能够通过MAC地址来唯一标识设备,这意味着它们必须工作在OSI参考模型的数据链路层上。

交换机将每个连接设备的第2层地址都存储在一个CAM(Content Addressable Memory即内容寻址寄存器)表中,CAM表充当着一种类似交通警察的角色。当一个数据包被传输时,交换机读取数据包中的第2层协议头部信息,并使用CAM表作为参考,决定往哪个或哪些端口发送数据包。交换机仅仅将数据包发送到特定端口上,从而大大降低了网络流量。

图1-7说明了流量经过交换机进行传输的过程。在这个图示中,计算机A发送数据到唯一的目标:计算机B,虽然同一时间网络上可能会有很多会话,但信息将会直接通过交换机向目标接收者进行传输,而不会被传递到与交换机相连的所有计算机。图1-7 当计算机A通过交换机传输数据到计算机B时的通信流示意图● 路由器

路由器是一种较交换机或集线器具有更高层次功能的先进网络设备。一个路由器可以有许多种不同的形状和外形,但大多数路由器在前面板上会有几个LED指示灯,在背板上会有一些网络端口,个数则取决于网络的大小。图1-8所示为一款路由器的示例。图1-8 一款低端的Cisco路由器,适合在一个中小型网络使用

路由器工作在OSI参考模型的第3层,它负责在两个或多个网络之间转发数据包。路由器在网络间引导数据包流向的这一过程被称为路由。几种不同类型的路由协议定义了不同目的的数据包如何被路由到其他网络。路由器通常使用第3层地址(如IP地址)来唯一标识网络上的设备。

为了更清楚地解释路由的概念,我们以一个拥有几条街道的街区进行类比。假设有一些房子,它们都有着自己的地址,就好比网络上的计算机一样,而每条街道就好比网段,如图1-9所示。从你所在街道上的某个房子,你可以很容易地与同一街道中居住的邻居进行沟通交流,这类似于交换机的操作,能够允许在同一网段中的所有计算机进行相互通信。然而,与其他街道上居住的邻居进行沟通交流,就像是与不同网段中的计算机进行通信。图1-9 一个路由网络与邻街区的类比

参照图1-9,假设你住在Vine Street 503号,需要到Dogwood Lave 202号。如果想要过去,你必须先到Oak Steer上,然后再到Dogwood Lave。现在请对应到跨越网段的场景中,如果在192.168.0.3地址的设备需要和192.168.0.54地址的设备进行通信,它必须经由路由器到10.100.1.1网络上,然后再经过连接目的网段的路由器才可以到达目标网段上。

网络上路由器的数量与大小通常取决于网络的规模与功能。个人和家庭办公网络可能只需要一个小型路由器,放置在网络的中心。而大型企业网络则可能有几个路由器分布在不同的部门,都连接到一个大型的中央路由器或三层交换机上(具有内置功能,可以充当一台路由器的先进型交换机)。

当你开始查看越来越多的网络图时,你会更加了解网络数据流是如何流经这些不同类型的网络设备节点,图1-10所示为路由网络中一个非常常见的布局形式。在这个例子中,两个单独的网络通过一个路由器进行连接。如果网络A上的计算机希望与网络B上的计算机进行通信,传输数据将必须通过路由器。图1-10 计算机A通过路由器将数据传送到计算机X的通信流示意图1.3 流量分类

网络流量可以分为三大类:广播、多播和单播。每个分类都具有不同特点,决定着这一类的数据包该如何通过网络硬件进行处理。1.3.1 广播流量

广播数据包会被发送到一个网段上的所有端口,而无论这些端口连接在集线器还是交换机上。但并非所有的广播流量都是以相同方式构建的,而是包括第2层广播流量和第3层广播流量两种主要形式。例如,在第2层,MAC地址FF:FF:FF:FF:FF:FF是保留的广播地址,任何发送到这一地址上的流量将会被广播到整个网段。第3层也有一些特定的广播地址。

在一个IP网络范围中最大的IP地址是被保留作为广播地址使用的。例如,在一个配置了192.168.0.XXX的IP范围,以及子网掩码是255.255.255.0的地址网络中,广播IP地址是192.168.0.255。

在通过多个集线器或交换机连接多种媒介的大型网络中,广播数据包将被一直从一个交换机被中继到另一交换机上,从而传输到网络连接的所有网段上。广播数据包能够到达的区域被称为“广播域”,也就是任意计算机可以不用经由路由器即可和其他计算机进行直接传输的网段范围。图1-11显示了一个小型网络上存在两个广播域的例子。因为每个广播域会一直延伸直到路由器,而广播数据包只能在它特定的广播域中传输。图1-11 一个广播域一直延伸到路由器后面的网段

我们前面的类比也能很好地说明广播域是如何工作的。你可以将一个广播域想象成一条街道。如果你站在你家门口叫喊,只有街道上的人才能够听到你的声音。而如果你想与不同街道上的人说话,那么你需要找到一种与他进行直接交流的方式,而不是在你的家门口大喊大叫(广播)。1.3.2 多播流量

多播是一种将单一来源数据包同时传输给多个目标的通信方式。多播的目的是为了简化这个过程,并使用尽可能少的网络带宽。多播流量通过避免数据包的大量复制来达到优化效果,而处置多播流量的方式则高度依赖于不同网络协议的实现细节。

实施多播的主要方法是通过一种将数据包接收者加入多播组的编址方案,这也是IP多播的工作原理。这种编址方案确保数据包不会被传送到未预期的目的地。事实上IP协议将一整段的地址都赋予了多播,如果你在网络上看到在 224.0.0.0到239.255.255.255 IP范围内的地址,它很有可能就是多播流量。1.3.3 单播流量

单播数据包会从一台计算机直接传输到另一台计算机。单播机制的具体实现方式取决于使用的协议。例如,一台设备希望与一个Web服务器进行通信,这便是一个端到端的连接,所以通信过程将由客户端设备发送数据包到这台Web服务器开始。这种类型的通信就是单播流量的典型例子。1.4 小结

本章涵盖了你学习数据包分析技术所必须掌握的基础知识。在你开始解决网络故障问题之前,你必须明白网络通信到底是怎么回事。在下一章中,我们将基于这些概念,来讨论更高级的网络通信准则。[1]译者注:TCP/IP模型中并没有会话层和表示层,因此实际的TCP/IP协议栈中并没有单独设计会话层和表示层网络协议。第2章监听网络线路

进行高效的数据包分析的一个关键决策是在哪里放置数据包嗅探器,以恰当地捕捉网络数据。数据包分析师通常把这个过程称为监听网络线路。简而言之,这是将数据包嗅探器安置在网络上恰当物理位置的过程。

然而遗憾的是,嗅探数据包并不像是将一台笔记本电脑连入网络中那么的简单。事实上,在有些时候,在网络布线系统上放置一个数据包嗅探器,要比实际分析数据包更难一些。

安置嗅探器的挑战是要考虑到种类繁多的用来连接网络的硬件设备。图2-1为一种典型的情况。由于网络上的3种主要设备(集线器、交换机、路由器)对网络流量的处理方式都不相同,因此你必须非常清楚你所分析的网络使用的是哪些硬件设备。图2-1 将嗅探器安置在你的网络上,有时是你面对的最大挑战

本章的目标是帮助你理解如何在各种不同网络拓扑结构中安置数据包嗅探器。首先,让我们来看看,我们实际上是如何看到网络线路上所有传递的数据包的。2.1 混杂模式

你需要一个支持混杂模式驱动的网卡,才可能在网络上嗅探数据包。混杂模式是什么样的模式呢?实际上它是一种允许网卡能够查看到所有流经网络线路数据包的驱动模式。

正如你在第1章了解到的那样,在网络上有一类广播流量,因此对于客户端来说,接收到并非以它们的地址作为目标的数据包是非常常见的。用来将给定IP地址解析成对应MAC地址的ARP协议,在任何网络上都是一个关键组成部分,且是一个很好的例子,能够说明有些网络流量并非是发送到指定的目标地址。为了找到对应的MAC地址,ARP协议会发出一个广播包并发送到广播域中的每个设备,然后期望正确的客户端做出回应。

一个广播域(也就是一个网络段,其中任何一台计算机都可以无需经过路由器,直接传送数据到另一台计算机)是由几台电脑所组成的,但广播域中仅仅只有一个客户端应该对传输的ARP广播请求包感兴趣。一旦网络上的每台电脑都处理和回应ARP广播包,那网络的性能将变得非常的糟糕。

因此,其他网络设备上的网卡驱动会识别出这个数据包对于它们来说没有任何用处,于是选择将数据包丢弃,而不是传递给CPU进行处理。将目标不是这台接收主机的数据包进行丢弃可以显著地提高网络处理性能,但这对数据包分析师来说并不是个好消息。作为分析师,我们通常需要看到线路上传输的每一个数据包,这样我们才不用担心会丢失掉任何关键的信息。

我们可以使用网卡的混杂模式来确保能够捕获所有的网络流量。一旦在混杂模式下工作,网卡将会把每一个它所看到的数据包都传递给主机的处理器,而无论数据包的目的地址是什么。一旦数据包到达CPU之后,它就可以被一个数据包嗅探软件捕获并进行分析。

现在的网卡一般都支持混杂模式,Wireshark软件包中也包含了libpcap / WinPcap驱动,这让你能够很方便地在Wireshark软件界面上就将网卡直接切换到混杂模式上(我们将在第3章里介绍更多的libpcap / WinPcap的内容)。

为了能够学习本书中的数据包分析技术,你必须要有一个支持使用混杂模式的网卡与操作系统。只有在你只想看到发往你运行嗅探软件主机MAC地址的网络数据包的时候,你才不需要以混杂模式来进行嗅探。注意 在大多数操作系统(包括Windows)上,要想使用一个混杂模式的网卡,你就必须要提升用户权限到管理员级别。如果你不能在一个系统上合法地获得这些权限,那你就不应该在这台系统上对所在网络进行任何方式的数据包嗅探。2.2 在集线器连接的网络中进行嗅探

在使用集线器连接的网络中进行嗅探,对于任何数据包分析师来说,都是一个梦想。正如你在第1章中了解到的那样,流经集线器的所有网络数据包都会被发送到每一个集线器连接的端口。因此,要想分析一台连接到集线器上的电脑的网络通信,你所需要做的所有事情就是将数据包嗅探器连接到集线器的任意一个空闲端口上。你就能看到所有从那台电脑流入流出的网络通信,以及其他接入集线器的任意电脑之间的通信。

如图2-2所示,当你的嗅探器连接到一个集线器连接的网络后,你对本地网络的可视范围是不受限制的。图2-2 在集线器网络中嗅探将提供一个不受限制的可视范围注意 可视范围,这个术语将在整本书中很多图示中显示,表示你在数据包嗅探器中能够看到通信流量的主机范围。

令人遗憾的消息是,集线器网络已经是非常罕见的了,因为它们曾经给网络管理员们带来了很大的困扰,已经基本被淘汰了。因为在集线器网络中,在任一时刻里,只有一个设备可以通信。因此,通过集线器连接的设备必须与其他设备进行竞争,才能取得带宽进行通信,当两个或多个设备同时通信时,数据包就会产生冲突碰撞,如图2-3所示。结果可能是丢包,然后通信设备需要承担重新传输数据包带来的性能损失,而这又增加了网络拥塞和碰撞。当通信流量水平和碰撞概率增加之后,设备需要传输每个数据包3次甚至4次,这大大降低了网络性能。因此很容易理解为什么现在各种规模的网络都已经转而使用交换机了。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书

若在网站上没有找合适的书籍,可联系网站客服获取,各类电子版图书资料皆有。

客服微信:xzh432

登入/注册
卧槽~你还有脸回来
没有账号? 忘记密码?