TCP/IP协议及其应用(txt+pdf+epub+mobi电子书下载)


发布时间:2020-05-29 02:15:08

点击下载

作者:林成浴主编

出版社:人民邮电出版社

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

TCP/IP协议及其应用

TCP/IP协议及其应用试读:

前言

计算机网络已深入到社会的各个领域,不仅电信部门、研究部门、高科技企业,而且其他行业都对网络工程技术人才提出了迫切的需求,尤其是熟练掌握网络规划、设计、组建和运维管理的高级应用型人才。

TCP/IP是目前最完整的、被普遍接受的通信协议标准,也是Internet的基础。无论是局域网,还是广域网,TCP/IP都是使用最为广泛的网络协议。TCP/IP是一个层次清晰、功能强大的协议簇。作为一个真正的开放协议,TCP/I还在不断地发展,以适应各种新型应用。理解和掌握TCP/IP对于网络管理人员和工程技术人员是非常必要的。我国很多高等院校的网络相关专业都将“TCP/IP协议”作为一门重要的专业课程。为了帮助高等院校教师比较全面、系统地讲授这门课程,使学生能够理解TCP/IP的基本概念和工作原理,掌握协议分析方法,我们几位长期从事网络专业教学的教师共同编写了本书。

本书内容系统全面,结构清晰,图文并茂,并注意按照网络层次组织编排内容,大量参考了最新的RFC文档,反映Internet的最新进展。本书内容编写注意难点分散、深入浅出、循序渐进;文字叙述注意言简意赅、逻辑连贯、重点突出。

全书共13章,内容按照从低层协议到高层协议的逻辑进行组织。第1章是基础部分,重点讲解TCP/IP体系,并介绍了如何使用协议分析工具捕获和分析TCP/IP流量。第2章介绍的是底层技术,了解底层尤其是数据链路层有助于理解TCP/IP。从第3章开始详细讲解各类TCP/IP,第3章至第6章具体介绍网络层协议,第7章分析传输层协议TCP与UDP,第8章至第11章的内容则是应用层协议。考虑到安全的重要性,网络安全协议放在第12章专门讨论。最后一章讲解新版本的IP——IPv6。每一种协议按照基本概念、工作原理、数据单元格式、协议验证分析的内容组织模式进行编写。作为应用本科教材,尽可能使用示意图辅助解释原理,通过表格描述协议数据格式;提供动手实践内容,示范使用Wireshark软件验证分析多种协议的数据单元格式和通信过程,让学生以直观的方式探索TCP/IP的精髓。各章节还穿插了与协议相关的网络应用、管理和安全方面的知识。

本书的参考学时为48学时,其中实践环节为8~12学时。

由于时间仓促,加之我们水平有限,书中难免存在不足之处,敬请广大读者批评指正。编者2013年5月

第1章 TCP/IP协议基础

目前绝大多数网络都采用TCP/IP协议,TCP/IP是目前最完整的、被普遍接受的通信协议标准。它可以使不同硬件结构、不同操作系统的计算机之间相互通信。本章是全书的基础部分,重点介绍了TCP/IP基础知识,涉及TCP/IP标准、OSI参考模型、TCP/IP协议簇,最后讲解如何使用协议分析工具辅助TCP/IP协议的学习和研究。

1.1 网络通信协议与TCP/IP

为保证通信正常进行,必须事先做出一些规定,要求通信双方正确执行这些规定。这种通信双方必须遵守的规则和约定称为协议(或规程)。网络通信协议能够协调网络的运转,使之达到互通、互控和互换的目的。

1.1.1 网络通信协议

网络通信协议简称网络协议,是计算机在网络中实现通信时必须遵守的规则和约定,主要是对信息传输的速率、传输代码、代码结构、传输控制步骤、差错控制等做出规定并制订出标准。只有采用相同网络协议的计算机才能进行信息的沟通与交流。协议由以下3部分组成。

● 语义(Semantics):规定双方完成通信需要的控制信息及应执行的动作。

● 语法(Syntax):规定通信双方交换的数据或控制信息的格式和结构。

● 时序(Timing):规定通信双方彼此的应答关系,包括速度的匹配和顺序。

由于协议十分复杂,涉及面很广,因此在制定协议时通常采用分层法,每一层分别负责不同的通信功能。层次和协议的集合就可称为网络的体系结构。OSI 就是一个通用的网络体系结构。除了单个协议外,还有协议组件(又称协议簇),它是一组不同层次上的多个协议的组合。

网络通信协议的国际标准化工作是以ISO(国际标准化组织)和ITU-TS(国际电信联盟电信标准化部)为中心开展的,由于历史原因,还存在许多既成事实的工业标准。

作为国际标准规格的网络通信协议,其数量很多,而且不断有新的标准、规定或已有标准的修订版本推出。通常按网络层次来划分协议类型,从低层的物理层协议(如RS-232)一直到高层的应用层协议(如HTTP)。

协议栈(Protocol Stack)是指网络中各层协议的总和,它形象地反映了一个网络中数据传输的过程:由上层协议到底层协议,再由底层协议到上层协议。使用最广泛的是TCP/IP协议栈,又称Internet协议栈,从上到下包括应用层、传输层、网络层和网络接口层4个层次的各种协议。

1.1.2 TCP/IP协议

TCP/IP协议是目前最完整的、被普遍接受的通信协议标准。它可以使不同硬件结构、不同操作系统的计算机之间相互通信。

TCP/IP起源于20世纪60年代末美国政府资助的一个分组(包)交换网络研究项目ARPAnet。最初ARPAnet使用的是租用的、以点对点通信为主的线路,当卫星通信系统与通信网发展起来之后,它最初开发的网络协议在通信可靠性较差的通信子网中使用出现了不少问题,这就直接导致了网络协议TCP/IP的产生。TCP/IP是一个真正的开放协议,很多不同厂家生产各种型号的计算机,它们运行完全不同的操作系统,但TCP/IP协议组件允许它们互相进行通信。现在TCP/IP已经成为一个由成千上万的计算机和用户构成的全球化网络,ARPAnet也发展成为Internet。TCP/IP是Internet的基础。

TCP/IP协议是以套件的形式推出的,它包括一组互相补充、互相配合的协议。TCP/IP协议族包括TCP(传输控制协议)、IP(互联网协议)和其他的协议,所有这些协议相互配合,实现网络上的信息传输。TCP和IP的组合不仅仅表示这两个协议,还指整个协议套件,TCP和IP只是其中两个最重要的协议,读者应把握此术语的真正含义。

严格地说,TCP/IP协议只是习惯叫法,更专业的叫法是Internet协议。TCP/IP协议不是ITU-T或OSI的国际标准,但它作为一种事实的标准,完全独立于任何硬件或软件厂商,可以运行在不同体系的计算机上。它采用通用寻址方案,一个系统可以寻址到任何其他系统,即使在 Internet这样庞大的全球性网络内,寻址的运作也是游刃有余的。无论是局域网,还是广域网,TCP/IP都是使用最为广泛的协议。

1.1.3 管理TCP/IP的组织机构

Internet最大特点是管理上的开放性,它不为任何政府部门或组织所拥有或控制,没有集中的管理机构,其管理和标准化过程一直由相关的非营利性组织机构承担。这些机构承担 Internet 的管理职责,建立和完善TCP/IP和相关协议的标准。与TCP/IP协议相关的组织机构简介如下。

1.ISOC

ISOC 全称Internet Society(Internet 协会),提供对Internet 标准化支持的国际性、非营利的组织,也是所有各种Internet委员会和任务组的上级机构。

2.IAB

IAB全称Internet Architecture Board(Internet体系结构委员会),是ISOC的技术顾问,包括两个下属机构IETF和IRTF,负责处理当前和未来的Internet技术、协议及研究。IAB最主要任务就是监督所有协议和过程的架构,并通过称为RFC(Request For Comments,请求注解)的文档提供评论性的监督。

3.IETF与IESG

IETF全称Internet Engineering Task Force(Internet工程任务组),负责制订草案、测试、提出建议以及维护Internet标准的组织,这些文档采用RFC的形式,并通过多个专门委员会各负其责地完成。IESG全称Internet Engineering Steering Group(Internet工程指导小组),作为IETF的上层机构,主要负责IETF的各项活动及Internet标准制定过程中的技术管理工作。

4.IRTF与IRSG

IRTF全称Internet Research Task Force(Internet研究任务组),负责长期的、与Internet发展相关的技术问题,协调有关 TCP/IP 协议和一般体系结构的研究活动。IRTF 也有一个指导小组——IRSG(Internet Research Steering Group,Internet研究指导小组)。IRTF接受IRSG的管理。IRTF由多个Internet志愿工作小组构成,IRSG的每个成员主持一个Internet志愿工作组。

5.IANA

IANA 全称 Internet Assigned Numbers Authority(Internet 数字分配机构),负责分配和维护Internet技术标准(协议)中的唯一编码和数值系统。主要任务包括:管理DNS域名根和IDN(国际化域名)资源;协调全球IP和AS(自治系统)号并将它们提供给各区域Internet注册机构;与各标准化组织一同管理协议编号系统。

6.ICANN

ICANN全称Internet Corporation for Assigned Names and Numbers(Internet名称与数字地址分配机构),具体行使IANA的职能,负责IP地址空间的分配、协议标识符的指派、通用顶级域名以及国家和地区顶级域名系统的管理和根服务器系统的管理。ICANN采用分级方式分配IP地址,先将部分IP地址分配给地区级的Internet注册机构(RIR),然后由RIR负责该地区的IP地址分配。目前的5个RIR分别是负责北美地区地址分配的ARIN、负责欧洲地区地址分配的RIPE、负责拉丁美洲地区地址分配的LACNIC、负责非洲地区地址分配的AfriNIC和负责亚太地区地址分配的 APNIC。实践中,ICANN 检查地址和域名的注册与管理,但将客户交互、费用收取、数据库维护以及其他工作委托给商业机构。

7.TCP/IP管理层次体系

由于IETF具体负责创建和维护RFC,可以说它是上述机构中对于TCP/IP来说最重要的机构。相关的组织机构遵循自下至上的结构原则,为确保Internet持续发展而开展工作。TCP/IP主要管理层次体系如图1-1所示,ISOC位于顶层,通过维持和支持其他一些管理机构如IAB、IETF、IRTF以及IANA一些学术活动来实现Internet标准化。图1-1 TCP/IP管理层次体系

1.1.4 RFC

RFC全称Request For Comments,通常译为请求注解,是有关Internet的一系列注解和文件,涉及计算机网络的概念、协议、过程、程序、会议纪要、观点看法甚至幽默等诸多方面的内容。RFC技术文档的发布开始于1969年,绝大部分Internet标准的制订都是以RFC的形式开始,经过大量的论证和修改而完成的。RFC 2026 “The Internet Standards Process——Revision 3”给出Internet标准的建立过程。由IETF及其指导小组IESG共同制订的Internet协议簇的规范文档就是作为RFC进行发布的,许多TCP/IP协议都得到了RPC的充分论证和文档支持。由于RFC包含了关于Internet的几乎所有的重要文字资料,对于学习和掌握Internet知识来说,RFC无疑是最重要的资料。

1.Internet标准规范

符合 Internet 标准过程的规范归结为两类:TS(Technical Specification,技术规范)和 AS (Applicability Statement,适用性陈述)。TS 是关于协议、服务、过程、约定和格式的描述。AS定义一个到多个技术规范的使用环境和使用方法,包括 TS 的关系、组合方式、参数值或范围、协议的子功能等。尽管两者在概念上是分开的,但实际的RFC文档总是将一个TS同与它相关的一个或多个AS关联起来。AS为每个TS指定下列5 个需求等级(requirement levels)之一。

● 必需的(Required):为满足最小一致性,必须在所有使用TCP/IP协议簇的系统中实现。例如,定义IP的RFC 791、规范ICMP的RFC 792。

● 推荐的(Recommended):从最小一致性上看并不是必需的,但是根据经验和技术要求推荐在系统中实现。例如,定义TCP的RFC 793、规范FTP的RFC 959。

● 可选的(Elective):不是必需的,也不是推荐的,在系统中的实现是可选的。此类可选的TS往往与厂商和用户有关。

● 限制使用的(Limited Use):只在受限的和特定的环境中使用。大多数实验的RFC属于这种等级。

● 不推荐的(Not Recommended):不适合一般使用的TS等级。这些TS通常功能有限、过于专用或者是已成为历史状态的标准,不推荐在系统中实现。

最后两个需求等级的RFC已经不在标准化轨迹中和已从标准轨迹中退役。

2.Internet标准处理过程

一个规范文档要进入Internet标准化轨迹之前,首先应作为Internet草案接受非正式的评论。如果超过6个月Internet草案还未被IESG推荐发布为RFC文档,或者在6个月内以RFC文档发布了,则将从Internet草案目录中移除该草案。若Internet草案被同一规范的新版本替代了,则开始新一轮的6个月非正式评论过程。Internet草案没有正式的状态,随时可能被修改或从Internet草案目录中移除。(1)标准轨迹

试图成为Internet标准的规范必须经过一系列的成熟等级,这组成熟等级即为Internet标准轨迹。标准轨迹由3个成熟等级构成,由低到高分别介绍如下。

● 提案标准(Proposed Standard):此规范已经通过了—个深入的审查过程,受到了足够多组织的关注,并认为是有价值的。但它仍需要几个协议组的实现和测试。在成为Internet标准前,它可能还会有很大的变化。

● 草案标准(Draft Standard):此规范已经被很好地理解,并且被认为是稳定的。它可以被用作开发最后实现的基础。在这个阶段,它需要的是具体的RFC测试和注释。在成为标准的协议之前,它仍有可能被改变。

● 因特网标准(Internet Standard):当规范经过有效的实现和成功的运行,并且达到了很高的技术成熟度时,IESG将RFC文档设立为官方的标准协议并分配给它一个STD号码。有时通过查看STD文件,可以比查看RFC更容易找到一个协议的Internet标准。(2)非标准轨迹

不是每个规范都进入标准轨迹。有的规范可能没有打算成为 Internet 标准,或者还未准备进入标准轨迹,有的已被更新的标准所取代,有的已被弃用或者被拒绝。未进入标准轨迹的规范有如下3个成熟等级。

● 实验性的(Experimental):作为Internet技术社区的一般信息发布,是研究和开发工作的归档记录。这些规范可能是IRTF研究小组、IETF工作组有组织的Internet研究结果,也可能是个人作出的贡献。这种RFC属于正在实验的情况,不能够在任何实用的Internet服务中实现。

● 信息性的(Informational):作为 Internet 社区的一般信息发布,但并不表示得到 Internet社区的的推荐和认可。一些由Internet社区以外的协议组织和提供者提出的未纳入Internet标准的规范也可以发布信息性的RFC。

● 历史性的(Historic):这些规范要么已经被更新的规范取代了,要么已经过时了。

1.2 OSI参考模型

为降低设计的复杂性,增强通用性和兼容性,计算机网络都设计成层次结构。分层法最核心的思路是上一层的功能建立在下一层的功能基础上,并且在每一层内均要遵守一定的规则。早期的计算机网络及其设计方案是专有的,各种不同通信体系结构的发展增强了系统成员之间的通信能力,但是同时也产生了不同厂家之间的通信障碍,为此制订了网络分层的国际标准——OSI/RM (开放式系统互联参考模型)。这种分层体系使不同的多种硬件系统和软件系统能够方便地连接到网络,按照这个标准设计和建成的计算机网络系统都可以互相连接。

确切地说,OSI 不是规范,而是一个抽象的参考模型,或者说是概念框架,它没有提供任何具体的实现标准。对多数人来说,OSI 似乎没有什么用处,不知道 OSI,仍然可以组建和维护一个简单的网络。然而,专业的网络管理员和网络工程师一定要了解 OSI,因为现有网络大多可通过OSI模型来进行分析,了解OSI模型有助于分析和管理网络。

1.2.1 OSI参考模型的层次结构

OSI是一个分层结构,共有7层,从下往上分别是:物理层、数据链路层(通常简称链路层)、网络层、传输层、会话层、表示层和应用层,如图1-2所示。其中各个功能层执行特定的、相对简单的任务。每一层都由上一层支配,并从上一层接收数据,为上一层提供服务。图1-2 OSI参考模型的分层结构

第1层至第3层主要是完成数据交换和数据传输,称为网络低层,即通信子网;第5层至第7层主要是完成信息处理服务的功能,称为网络高层;低层与高层之间由第4层衔接。通常也将会话层、表示层和应用层统称为应用层,将传输层及以下各层统称为数据传输层。

OSI具有以下主要特点。

● 它定义的是一种抽象结构,并未明确如何实现其中每一层的功能。

● 每一层所完成的功能都是独立的,与其他层完成的功能无关。

● 每一层的功能自成体系,使开放互联成为可能。

● 低层为高层服务,高层可以忽略低层的分层细节,便于网络开发和设计。

● 相邻的两层之间提供有接口,便于两层之间的通信。

● 它仅仅是一种参考,实际的网络体系并未将其每一层的功能实现,而是省略某些层。

1.2.2 OSI参考模型的通信机制

OSI 参考模型采用逐层传递、对等通信的机制。整个通信过程都必须经过一个自上而下(发送方),或自下而上(接收方)的数据传输过程,但通信必须在双方对等层次进行。

网络中的节点之间要相互通信,必须经过一层一层的信息转换来实现。源主机向目标主机发送数据,数据必须逐层封装(也称数据打包),目标主机接收数据后,必须对封装的数据进行逐层分解(称为解封)。

如图1-3所示,当计算机要传送某个数据时,数据从应用层开始,自上而下地通过表示层、会话层、传输层、网络层、链路层,直至物理层。每经过一层,都会对数据附加上该层相应的协议信息。在给定的某一层,信息单元的数据部分包含来自于所有上层的首部、尾部和数据。对于从上一层传送下来的数据,附加在前面的控制信息称为首部(包头),附加在后面的控制信息称为尾部(包尾)。当数据到达物理层时,便将其直接转换为由0和1组成的比特流,然后传输到物理连接介质上。图1-3 OSI参考模型的通信机制

当计算机接收来自网络连接介质的比特流(位流)数据,数据通过物理层时,将比特流“逆转换”后交给链路层,然后自下而上地通过链路层、网络层、传输层、会话层、表示层,直至应用层。每经过一层,都会对附加有该层相应的协议信息的数据进行解封。当数据到达应用层时,便将还原的数据交给应用程序,完成一个通信过程。

对于用户来说,这种数据通信看起来就好像是两台计算机相关联的同等层次直接进行的,而对同一主机内的相邻层次之间的通信是透明的,两台主机的通信看起来就像在通信的双方对应层之间就建立了一种逻辑的、虚拟的通信。

实际上,真正的通信只发生在同一台计算机内彼此相邻的两层之间,比特流、数据帧,或者数据分组先是在发送主机内的相邻层之间自上而下传递,当到达物理层后再通过传输介质传递到接收主机的物理层,随后再自下而上传递,从而实现对等层通信。对等层由于通信并不是直接进行,因而又称为虚拟通信。

OSI 定义的标准框架只是一种抽象的分层结构,具体的实现则有赖于各种网络体系的具体标准,它们通常是一组可操作的协议集合,对应于网络分层,不同层次有不同的通信协议。IPX/SPX、AppleTalk、TCP/IP等都是著名的网络通信协议。

1.2.3 协议数据单元(PDU)

OSI 参考模型的各层传输的数据和控制信息具有多种格式。在网络各层的实体之间传送的比特组称为数据单元(Data Unit)。常用的数据单元有服务数据单元(SDU)和协议数据单元(PDU)。SDU 是在同一主机上的两层之间传送的信息。PDU 是发送主机上每层的信息发送到接收主机上的相应层(对等层间交流所用的)的信息。对等层之间传送数据单元是按照该层协议进行的,因此这时的数据单元称为协议数据单元(PDU)。由于格式不同,PDU 在不同层往往有不同的叫法,各层PDU说明如下。

● 物理层称为位流或比特流,格式如下。

00110000110101011011000111。

● 链路层称为帧(Frame),格式如下。

● 网络层中称为分组或包(Packet),格式如下。

● 传输层中称为段(Segment)、数据段或报文段,格式如下。

● 应用层中称为报文或消息(Message)。当数据从一层传输到相邻层的时候,支持各功能层协议的软件负责相应的格式转换。

1.2.4 OSI各层功能和对应的网络管理工作

各层功能说明和对应的网络管理工作见表1-1。表1-1 OSI各层功能与管理

1.3 TCP/IP协议簇

TCP/IP协议又称为TCP/IP协议栈或TCP/IP协议簇。

1.3.1 TCP/IP与OSI的层次对应关系

TCP/IP协议簇先于OSI参考模型之前开发,因而其层次无法与OSI完全对应起来。与其他分层的通信协议一样,TCP/IP将不同的通信功能集成到不同的网络层次,形成了一个具有4个层次的体系结构,能够解决不同网络的互联。如图1-4所示,左边是OSI参考模型的7层结构,右边是TCP/IP协议体系的4层结构,中间则是TCP/IP主要的协议组件。其间的对应关系一目了然。图1-4 TCP/IP与OSI的层次对应关系

这些分层与OSI参考模型中的分层相当类似,但并不一致。这是因为与OSI参考模型中会话层和表示层相对应的一些功能出现在了TCP/IP的应用层中,而OSI参考模型中会话层的某些功能出现在TCP/IP的传输层中。大体上讲,两个模型的传输层对应得相当好,OSI参考模型中的网络层与TCP/IP模型中的网络层也对应得很好。TCP/IP的应用层或多或少地映射到了OSI参考模型中应用层、表示层、会话层这三个分层中,TCP/IP的网络接口层也映射到了OSI参考模型中数据链路层和物理层这两个分层。

在具体实现中,网络层次也没有绝对的划分。TCP/IP的设计隐藏了较低层次的功能,主要协议都是高层协议,没有设计专门的物理层协议,因此对于TCP/IP协议系统,有人将物理层、链路层以及网络层的一部分并称为网络接口层,还有人将其划分为5层,从网络接口层中剥离出链路层。TCP/IP协议一个个堆叠起来,就像一个栈,有时又称其为协议栈。

1.3.2 TCP/IP各层

这里采用广泛使用的4层模型来介绍TCP协议层次,其层次结构如图1-5所示。具体各层简介如下。

1.网络接口层

网络接口层(Network Interface Layer)又称网络访问层(Network Access Layer),包括OSI的物理层和链路层,负责向网络物理介质发送数据包,从网络物理介质接收数据包。TCP/IP并没有对物理层和链路层进行定义,它只是支持现有的各种底层网络技术和标准。网络接口层涉及操作系统中的设备驱动程序和网络接口设备。图1-5 TCP/IP层次结构

2.网络层

网络层又称为互联网层或IP层,负责处理IP数据包的传输、路由选择、流量控制和拥塞控制。TCP/IP网络层的底部是负责Internet地址(IP地址)与底层物理网络地址之间进行转换的地址解析协议(Address Resolution Protocol,ARP)和反向地址解析协议(ReverseAddress Resolution Protocol,RARP)。ARP用于根据IP地址获取物理地址。RARP用于根据物理地址查找其IP地址。由于ARP和RARP用于完成网络层地址和链路层地址之间的转换,也有人将ARP和RARP作为链路层协议。IP协议(Internet Protocol)既是网络层的核心协议,也是TCP/IP协议簇中的核心协议。网络互联的基本功能主要是由 IP 协议来完成的。Internet 控制报文协议(Internet Control Message Protocol,ICMP)是主机和网关进行差错报告、控制和进行请求/应答的协议。Internet组管理协议(Internet Group Management Protocol,IGMP)用于实现组播中的组成员管理。

3.传输层

传输层为两台主机上的应用程序提供端到端的通信。TCP/IP的传输层包含传输控制协议TCP (Transmission Control Protocol)和用户数据报协议UDP(User Datagram Protocol)。这两种协议对应两类不同性质的服务,TCP为主机提供可靠的面向连接的传输服务;UDP为应用层提供简单高效的无连接传输服务。上层的应用进程可以根据可靠性要求或效率要求决定是使用TCP还是UDP来提供服务。

4.应用层

这个层次包括OSI的会话层、表示层和应用层,直接为特定的应用提供服务。应用层为用户提供一些常用的应用程序。TCP/IP给出了应用层的一些常用协议规范,如文件传输协议FTP、简单邮件传输协议SMTP、超文本传输协议HTTP等。

1.3.3 TCP/IP封装与分用

与OSI参考模型的逐层传递、对等通信机制一样,TCP/IP网络中的节点之间的通信也要经过一层一层的信息转换来实现。源主机向目标主机发送数据,出站数据经过TCP/IP协议栈的每一层都被打包和标识,以便交付给下一层,这个过程就是封装。目标主机接收数据后,入站数据在被交付给上层协议之前,低层协议拆除封装信息,这个过程称作解封,又称分用(Demultiplexing)。

操作系统中协议栈的目的就是协调各层协议,为各层的用户进程提供必要API函数,这些函数就是提供这些基本的包括数据封装与分用在内的一系列的功能。

1.封装

TCP/IP封装过程如图1-6所示。当应用程序使用TCP传送数据时,数据被送入协议栈中,然后逐层通过,直到被当做一串比特流(位流)传递给网络传输介质。其中每一层对收到的数据都要增加一些首部信息,主要是所用协议、发送方和预定的接收方以及其他信息。有时还要增加尾部信息,主要是用于数据完整性检查。从上一层获取数据后,在传递给下一层或通过网络传输介质发往目的地之前,都需要使用首部(可能还有尾部)对数据封装。被封装的数据部分又称为有效载荷(Payload,或译为负载)。

传输层TCP 传给IP 的数据单元称作TCP 报文段或简称为TCP 段(TCP Segment),网络层IP传给网络接口层的数据单元称作IP数据报(IP Datagram),链路层通过以太网传输的比特流称作帧(Frame)。以太网数据帧的物理特性是其长度必须在 46~1500 字节之间。严格地说,IP和网络接口层之间传送的数据单元应该是分组(Packet,又译为包)。分组既可以是一个IP数据报,也可以是IP数据报的一个分片(Fragment)。

应用程序使用UDP传送数据也采用与TCP类似的封装过程,UDP数据与TCP数据基本一致,唯一不同的是UDP传给IP的数据单元称作UDP数据报(Datagram),而且UDP的首部长为8字节。图1-6 TCP/IP封装过程

应用程序都可以使用TCP或UDP来传送数据,传输层协议在生成首部时要加入一个称为端口号的应用程序标识来表示不同的应用程序。

TCP、UDP、ICMP、IGMP都要向IP传送数据,为区分要传送的数据来源于哪一种协议,在生成的 IP首部中加入一个称为协议号的标识,其中协议号 1 标识为 ICMP协议,6 标识为 TCP协议,17标识为UDP协议。

网络层接口分别要发送和接收IP、ARP和RARP数据,因此也必须在以太网的帧首部中加入一个称为帧类型的标识,以指明生成数据的网络层协议。

数据封装成帧后发送到传输介质上,到达目的主机后每层协议再剥掉相应的首部,最后将应用层数据交给应用程序处理。

2.分用

TCP/IP分用过程如图1-7所示。当目的主机收到一个以太网数据帧时,数据就开始从协议栈中由底层向顶层逐层传递,同时去掉各层协议加上的首部(可能还有尾部)。每层协议都要去检查报文首部中的协议标识,以确定接收数据的上层协议。这是封装的逆过程。图1-7 TCP/IP分用过程

1.3.4 TCP/IP协议重要概念

在进一步介绍有关TCP/IP协议之前,有必要解释几个重要概念。

1.面向连接的协议与无连接的协议

如果采用面向连接的协议进行通信,想通信的一方就首先要和另一方的应用程字建立连接,就像打电话,只有当连接建立之后,才能进行通信。位于传输层的TCP就是面向连接协议的一个例子。

无连接的协议在通信之前不用建立连接,就像寄信,只要有对方地址,就会正确地到达目的地。网络层的IP和传输层的UDP都是无连接协议。

2.可靠的协议与不可靠的协议

可靠的协议保证数据能够传送到目的地,而且保证数据内容不会发生变化。TCP就是一个可靠的协议。

不可靠的协议不保证数据能够传送到目的地,但是它们都会尽力传送数据,而且它们可以检验出到达目的地的数据是否完整。IP和UDP就是不可靠的协议。

3.字节流协议与数据报协议

字节流协议表示发送方和接收方将传输的数据看成是一串连续的字节串流。先发出的数据将会被先接收到,TCP就是这样的一个协议。

数据报协议与字节流不同,它会将数据一个一个地传送。发送方先后向接收方发出两个数据报,接收方并不知道哪一个数据报会先被收到。IP 和 UDP 就是这样的两个协议。如果要发送的信息不必讲求顺序,则可以选择UDP传输。而如果使用UDP发送有顺序的数据,并不是不可以,但是要对数据内容重新组合,这将加大程序复杂度。

4.IP地址

在TCP/IP网络上,每个主机都有唯一的地址,它是通过IP协议来实现的。IP协议要求在每次与 IP 网络建立连接时,每台主机都必须为这个连接分配一个唯一的地址。IP 地址不但可以用来识别每一台主机,而且隐含着网际间的路径信息。

5.TCP/IP协议号、端口号及插座

TCP/IP网络支持“多路复用”(Multiplexing),将来自许多应用程序的数据进行组合,传递给传输层(TCP或UDP),再由传输层传递给网络层(IP),其中,IP利用协议号来指定传输协议,传输层的TCP和UDP采用端口号来识别应用程序。

协议号位于IP数据首部中,用数值表示,用来指示数据传给网络层以上的某个协议。当数据报到达某个主机时,如果其目的地址与主机的IP地址相同,就查看数据报中的协议号,来决定将数据传给该协议号定义的上层协议。协议号形成了标准,如协议号为6,IP将数据传递给TCP;如协议号为17,将把数据传给UDP。ICMP的协议号为1。

数据从发送方主机上的一个端口传输到接收主机的一个端口,端口是地址,但并不是标识一台特定的计算机,而是指向与数据相关的应用程序。端口信息置于TCP或UDP首部中,源端口号用来标识与发送数据相关的应用程序,目的端口号则用来标识与接收数据相关的应用程序。所有端口字段的长度都是16位,范围为0~65535。现在端口已形成标准,由Internet地址分配机构(IANA)来管理。Internet服务器一般都是通过指定的端口号来标识的。例如,Web服务器运行在80端口,FTP服务器运行在20端口和21端口。多个用户同时请求两种服务,服务器会自动分配端口来提供服务。

客户端通常对它所使用的端口号并不关心,只需保证该端口号在本机上是唯一的就可以了。客户端口号又称作临时端口号(即存在时间很短暂),这是因为它通常只是在用户运行该客户程序时才存在,而服务器则只要主机运行,其服务就运行。一般TCP/IP网络给临时端口分配1024~5000之间的端口号,大于5000的端口号是为其他服务器预留的。

使用基于 TCP/IP 协议的应用程序,要求发送方和接收方都要用到 3 种地址:端口地址、IP地址和物理地址。端口地址出现在传输层,位于TCP或UDP首部中,用于识别特定的应用程序或进程。IP 地址出现在网络层中,位于 IP 首部中,用来对应用程序或进程所在的网络和主机进行标识。在物理网络中传递IP所携带的信息,还要将IP地址映射为物理地址,从而将发送方的信息最终传输到接收方。端口地址和IP地址广泛应用于路由器和防火墙技术,在建立Internet和Intranet服务时,可充分利用这种技术。

将一个IP地址和一个端口号码合并起来,就成为插座(Socket)。插座代表TCP/IP网络中唯一的网络进程。通过源主机的一个插座与目标主机的一个插座,可以在两个主机之间建立一个基于TCP的可靠连接。

1.3.5 分层分析和排查网络故障

TCP/IP协议的层次结构为分析和排查故障提供了非常好的组织方式。由于各层相对独立,按层排查能够有效地发现和隔离故障,因而一般使用逐层分析和排查的方法。

1.分层排查方式的选择

通常有以下两种分层排查方式。

● 从低层开始排查:适用于物理网络不够成熟稳定的情况,如组建新的网络、重新调整网络线缆、增加新的网络设备。

● 从高层开始排查:适用于物理网络相对成熟稳定的情况,如硬件设备没有变动。

无论哪种方式,最终都能达到目标,只是解决问题的效率有所差别。具体采用哪种方式,可根据情况来选择。例如,遇到某客户端不能访问Web服务的情况,如果管理员首先去检查网络的连接线缆,就显得太悲观了,除非明确知道网络线路有所变动。比较好的选择是直接从应用层着手,可以按照以下步骤来排查。(1)检查Web浏览器是否正确配置,可尝试使用浏览器去访问另一个Web服务器。(2)如果Web浏览器没有问题,可在Web服务器上测试Web服务器是否正常运行。(3)如果Web服务器没有问题,再测试网络的连通性。

即使是Web服务器问题,从底层开始逐层排查也能最终解决问题,只是花费的时间太多了。如果是线路问题,从高层开始逐层排查也要浪费时间。因此,在实际应用中往往采用折中的方式,凡是涉及网络通信的应用出了问题,直接从位于中间的网络层开始排查,具体步骤如下。(1)检查网络层,测试网络的连通性和路由配置等信息。(2)如果网络层测试有问题,则检测网络的低层(物理层和链路层),测试网络的物理连通性和网络交换设备的配置等信息。(3)如果网络层的测试正常,则检测网络的高层(应用层和传输层),测试应用程序的配置和网络传输过程是否存在故障等信息。(4)根据情况排查其他信息,如网络中的流量占用、传输的数据包等。

2.分层排查方法

不同的网络层次,都有相应的检测排查工具和措施,这里为各层列出一些基本的排查措施,如图1-8所示。在最底层的物理层,专业人员往往采用专门的线缆测试仪,没有测试仪的可通过网络设备(网卡、交换机等)信号灯进行目测。数据链路层的问题不多,对于TCP/IP网络,可以使用简单的arp命令来检查MAC地址(物理地址)和IP地址之间的映射问题。网络层出现问题的可能性大一些,路由配置容易出现错误,可通过 route 命令来测试路由路径是否正确,也可使用ping命令来测试连通性。协议分析器具有很强的检测和排查能力,能够分析链路层及其以上层次的数据通信,当然包括传输层。至于应用层,可使用应用程序本身进行测试。接下来,将具体介绍网络各层分析排查的基本方法。图1-8 不同层次网络故障的排查方法

3.分层排查实例

在TCP/IP网络中,排查网络问题的第一步常常是使用ping命令。如果成功地ping到远程主机,就排除了网络连接出现故障的可能性。即使是使用ping命令,也有一个逐步检测判断的步骤。例如,假设有一个如图1-9所示的网络,主机A无法访问主机B上的某项服务,可按照以下步骤进行测试和诊断。图1-9 网络示意图(1)ping 远程计算机(目标)。如果成功说明系统和网络正常,可以判断网络问题一般发生在更高层次,转向服务或应用程序测试,如测试DNS域名解析是否正确;如果失败说明主机离线或网络故障,继续下面的步骤。(2)ping同一子网(网段)的网关(例中为路由器1)来确认主机A是否能够连接到本地网关(路由器)。如果成功说明本地网关与目标计算机之间的路由有问题,可使用 tracert 命令跟踪测试路由;如果失败,继续下面的步骤。(3)ping环回地址127.0.0.1。如果成功说明本地网关与本地计算机之间的通信有问题,可检查线路连接是否有问题,IP 地址分配是否有问题;如果失败,继续下面的步骤,需确认 TCP/IP协议软件是否有问题,如果有问题,需要重新安装TCP/IP协议软件。

也可以采用另一种步骤,从ping环回地址127.0.0.1开始逐步排查,只要成功地ping到远程主机,可以判断网络问题一般发生在更高的网络层次。

1.4 协议分析

协议分析(Protocol Analysis)又称网络分析(Network Analysis),是接入网络通信系统捕获网络中传输的数据,收集网络统计信息,将数据包解码为可读形式的过程。本质上,协议分析器窃听网络通信。由于这些工具能够揭示许多不同类型的、有潜在价值的信息,甚至破坏信息,很多机构制定规则禁止对生产网络无监督地使用协议分析器。许多协议分析器也能够发送数据包,可用于测试网络或设备,它们能够使用加载到桌面或便携计算机上的软件或硬件/软件产品来进行协议分析。

1.4.1 协议分析概述

协议分析实际上是一种包嗅探技术,可查询网络中的每个数据包,能够确定某一应用或IP地址产生的流量,便于监测网络数据传输,排除网络故障。它最大的优势是可以区分和分析网络层以上的信息。

1.协议分析原理

在以太网中,所有通信都是以广播方式工作的,同一个网段的所有网络接口都可访问传输介质上传输的所有数据,也就是说,所有的物理信号都要经过网络中的任何一个节点。而每一个网络接口都有一个唯一的硬件地址(MAC地址)。在正常的情况下,一个网络接口只能响应两种数据帧:与自己硬件地址相匹配的数据帧和发向所有节点的广播数据帧。

在网络中,数据的收发是由网卡来完成的,网卡有以下4种接收模式。

● 广播:能够接收发送给自己的数据帧和网络中的广播信息。

● 多播:只能够接收多播数据。

● 直接:只能够接收发送给自己的数据帧。

● 混杂(Promiscuous Mode):能够接收一切通过它的数据帧,而不管该数据是否是传给它的。

默认情况下,网卡处于广播模式,但是,将其设置为混杂模式时,就可以接收所有通过网络设备的数据了,此时采用协议分析技术就可捕获所有经过网卡的数据包。协议分析工具所使用的网卡和驱动程序只有支持混杂模式时,才能捕获到以太网冲突分片(Ethernet Collision Fragment)、超长数据包、超短数据包以及在非法边界上结束的数据包。

协议分析工具提供包过滤器(Filter)用于确定想要捕获的数据包的类型,对于捕获的数据进行解码,以可读方式给出数据包的字段和值。

2.协议分析应用场合

协议分析工具能够检查经过网卡的所有网络数据包,并进行解码和分析。主要应用场合如下。

● 诊断网络通信故障。将它安装在网络上并配置为捕获存在问题的通信序列,通过读取分析所传输的数据包来识别出通信过程中存在的缺陷和错误。

● 测试网络。可以通过侦听不同寻常的通信或向网络中发送数据包来对网络进行测试。

● 评估网络性能和分析流量趋势。

● 用于教学和实验。考察和验证TCP/IP网络中不同数据包的结构和通信序列。

1.4.2 协议分析工具的部署

协议分析工具只能访问和检查实际流经监测计算机所在网卡的数据包,理解这一点非常重要。在传统共享网(以集线器连接)中,可直接获取网络中的所有数据。但是,在交换网络中,只有特定的流量(如广播数据)能够发送到每个计算机的网卡,可直接看到本机收发的流量,通常不能直接看到网络中其他计算机的全部流量。这就需要使用支持监测端口或端口镜像配置的交换机。也可采用其他变通手段,如串接网络分路器(Tap)或集线器(Hub)。实际应用中根据不同网络环境和监测要求来选择部署方式。

● 传统共享式网络

使用集线器(Hub)作为网络中心交换设备的网络,如图1-10所示,可将协议分析工具安装在局域网中任意一台计算机上,可以获取整个网络中所有的通信数据。

● 具备镜像功能的交换式网络

交换式网络会将整个网络分隔成很多小的网域,多数3层或3层以上交换机,以及部分二层交换机具备镜像功能(Cisco将这种功能称为“SPAN”),对于采用这种交换机的网络,如图1-11所示,可在交换机上配置好端口镜像,再将协议分析工具安装在连接镜像端口的主机上,可以捕获整个网络中所有的通信数据。图1-10 传统共享式网络图1-11 具备镜像功能的交换式网络

● 不具备镜像功能的交换式网络

普通交换机可能并不具备镜像功能,这样就不能通过端口镜像实现网络的监测分析。这就需要采取变通手段,可在交换机与路由器(或防火墙)之间串接一个分路器或集线器,分别如图1-12和图1-13所示,可以获取整个网络中所有的通信数据。图1-12 串接网络分路器的交换式网络图1-13 串接集线器的交换式网络

分路器是专用设备,可将连接的链路的全部数据信息复制到监测工具,具有较高的性能,可用于大流量网络,获取100%的数据包,而且方便监测工具接入和移动。

集线器成本很低,仅适用于流量不大的网络,而且现在相关的产品也非常少。

● 部署代理服务器的网络

对于通过代理服务器共享上网的情况,直接将包嗅探工具安装在代理服务器上即可,如图1-14所示,这样可同时对代理服务器的内部网卡和外部网卡进行数据捕获。

● 监测某个特定网段

对于规模较大的网络,常常并不需要监测整个网络,只需要对某些可能出现异常的部门或网段进行监测分析,这时可将网络分路器(也可用集线器替代)串接到要监测的网段,以实现特定网段的数据采集,如图1-15所示。图1-14 串接网络分路器的交换式网络图1-15 串接集线器的交换式网络

本书的实验中只需抓取客户端与服务器之间(点对点通信)的通信数据包,无需获取整个网段的数据通信,因而不用考虑混杂模式和交换网络的特殊布置。前提是要将监测计算机的监测网卡以混杂模式连接到网络。

1.4.3 Wireshark简介

Wireshark是一款主流的的网络协议分析软件,具有非常广泛的用途,应用于故障修复、分析、软件和协议开发以及教育领域,主要有以下应用。

● 网络管理员用来检测网络问题。

● 网络安全工程师用来检查信息安全相关问题。

● 开发人员用来为新的通信协议排错。

● 普通用户或学生用来学习网络协议的相关知识。

Wireshark是完全免费的(开放源码软件),支持UNIX、Linux和Windows平台。其前身是Ethereal。2006 年6 月,因为商标问题 Ethereal 更名为 Wireshark。Wireshark 不是入侵检测软件(Intrusion Detection Software,IDS),对于网络上的异常流量行为,它不会产生警示或是任何提示。然而,仔细分析 Wireshark 抓取的数据包能够帮助使用者对于网络行为有更清楚的了解。它不会对网络数据包进行任何修改,只是反映出目前传输的数据包信息。Wireshark本身也不会向网络送出任何数据包。

Wireshark的安装比较简单,从http://www.wireshark.org/网站上可以下载到最新的版本。这里以Windows版本为例,最好安装其所有组件,在安装过程中根据提示必需安装WinPcap,它是在Windows平台上实现对底层包的截取过滤的接口程序。

Wireshark主界面如图1-16所示,非常简洁,操作方便,提供以下基本功能。图1-16 Wireshark主界面

● 从网络上捕获实时数据包。

● 准确显示数据包协议信息。

● 打开和保存捕获数据包文件。

● 导入和导出数据包,可用于与其他软件共享。

● 提供数据包过滤器(捕获过滤器与显示过滤器)。

● 数据包搜索。

● 基于过滤器的数据包彩色显示。

● 创建多种统计报表。

1.4.4 捕获数据包

捕获网络实时通信数据是 Wireshark 的主要功能。这种功能非常强大,可在不同类型网络环境捕获数据包,支持多种停止捕获触发器,在捕获数据包的同时显示解码信息,捕获大量数据包时可生成多个文件存储。Wireshark可通过以下几种方法开始捕获数据包。

● 单击按钮,或者从主菜单选择“Capture”>“Interfaces…”命令,弹出如图1-17所示的窗口,列出本地网络接口,在相应的网络接口后面单击“Start”按钮,开始捕获该网络接口的数据包。这非常适合有多个网络接口的情况。图1-17 捕获接口

● 单击按钮,或者从主菜单选择“Capture”>“Options…”命令,弹出捕获选项窗口,单击“Start”按钮开始。

● 如果已设置好捕获选项,可单击按钮,或者从主菜单选择“Capture”>“Start”命令开始。

● 使用命令行模式。

最好是设置捕获选项后,再开始捕获,下面通过实验进行示范。(1)单击按钮或者从主菜单选择“Capture”>“Options”命令打开图1-18所示的捕获选项窗口。图1-18 捕获选项(2)从“Interface”下拉列表选择用于捕获数据包的网络接口,“IP address”处将显示该接口的IP地址。(3)在“Buffer size”框中设置捕获缓存区大小,单位是 M。捕获的数据包临时保存在内存缓存中,直到被写入磁盘。(4)选中“Capture packets in promiscuous mode”复选框,使用混杂模式抓包。默认没有选中此复选框,Wiresharkl只能捕获本机的进出数据包。(5)在“Limit each packet”框中设置包大小限制。一般使用默认设置,包大小为65535字节,这对大多数协议都适用。(6)在“Capture Filter”处设置捕获过滤器,捕获所需类型的数据包。默认为空,捕获所有数据包。单击该按钮,弹出捕获过滤器设置对话框进行设置。(7)在“Capture File(s)”区域设置捕获数据包保存文件,这样捕获的数据包将自动保存到该文件。可选中“Use Multiple”复选框,以多文件方式存储,并可设置多文件间存储切换触发器(文件大小、时间间隔等)。(8)根据需要在“Stop Capture…”区域设置停止捕获触发器,从上到下可分别设置捕获数据包数、捕获数据的字节数、捕获时间。另外,在“Capture File(s)”区域最后一行还可设置捕获文件数量。(9)根据需要在“Display Options”区域设置显示选项。其中“Update list of packets in real time”复选框表示捕获数据包的同时实时更新数据包列表窗格;“Automatic scrolling in Live capture”复选框表示捕获数据包时数据包列表自动滚动;“Hide capture info dialog”复选框表示捕获信息窗口不显示。(10)在“Name Resolution”区域设置名称解析。3个复选框分别表示将MAC地址翻译成名称、将网络地址翻译成名称、将传输端口翻译成对应的协议名称。建议选中这3个复选框,便于用户识别和分析捕获数据。(11)设置捕获选项完毕后,单击“Start”按钮保存配置信息,并开始进入捕获状态。默认选中“Hide capture info dialog”复选框,则捕获过程中不会显示捕获信息窗口。如果未选中该复选框,则将显示捕获信息窗口,在捕获过程中显示各种统计信息,包括各种协议百分比、运行时间等信息。

如果单击“Cancel”按钮将关闭捕获选项窗口,而且不保存配置信息。(12)可以从主菜单选择“Capture”>“Stop”命令,或者单击按钮来停止捕获。当然,如果设置了捕获停止触发器,则满足条件将自动停止捕获。

还可以使用主菜单中“Save”或“Save As…”命令将捕获的数据包存储到指定格式的数据包文件中。

在捕获的过程可以单击按钮,或从主菜单选择“Capture”>“Restart”命令,重新开始捕获,这样会丢失所有当前已抓取的数据包。

1.4.5 查看和分析数据包

使用 Wireshark 可以很方便地对捕获的数据包进行协议分析和协

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

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载