TCP/IP入门经典(第5版)

978-7-115-27461-8
作者: 【美】Joe Casad
译者: 井中月巩亚萍
编辑: 傅道坤

图书目录:

详情

本书首先从TCP/IP基础知识讲解,接着介绍了TCP/IP协议系统;然后介绍了TCP/IP连网的相关知识;第4和第5部分分别对网络中使用到的工具和Internet的相关知识进行了讲解;最后介绍了使用TCP/IP的相关服务和应用。

图书摘要

TCP/IP入门经典(第5版)

[美] Joe Casad 著

井中月 巩亚萍 译

人民邮电出版社

北京

本书深入浅出地介绍了TCP/IP协议的入门知识。全书分为6个部分,共24章:首先从TCP/IP基础知识开始;接着着重介绍了TCP/IP协议系统;然后介绍了TCP/IP连网的相关知识;第4部分对TCP/IP中使用的工具进行了讲解;第5部分是与Internet相关的内容;第6部分则介绍了与运行中的TCP/IP相关的内容,比如Web服务、电子邮件、云计算等。

本书叙述简明扼要,通俗易懂,不但适合于计算机网络和 Internet 用户阅读参考,也可作为大专院校有关专业师生的教学参考书或者培训班教材。

 

Joe Casad是一名工程师、作家和编辑,在计算机网络和系统管理方面有大量著作,已经独立或合作编写了12本关于计算机和网络的图书。他当前是《Linux Pro Magazine》和ADMIN Online的首席编辑。在此之前,他是《C/C++ User Journal》的编辑和UnixReview.com的资深编辑。

欢迎阅读本书!本书为新手提供了针对TCP/IP的清晰、简明的介绍,想要深入了解TCP/IP的用户也是本书的读者对象。本书与那些围绕着困难主题进行讲解的网络入门图书不同,它会为读者深入讲解TCP/IP技术。读者将会学到TCP/IP协议簇中的所有重要协议,并会得知TCP/IP 协议簇是如何成为包含丰富工具和服务的生态系统(也就是我们所称的 Internet)的构成基石的。本书第5版包含了TCP/IP近期发展的一些新内容,并对DNS安全、IPv6和云计算等主题进行了详细讲解。读者会在本书中发现有关配置、REST Web服务、HTML5,以及TCP/IP近期发展的一些新信息。

每一章都需要一小时吗

每章的内容都可以让读者在一小时之内完成,其内容短得都可以一下子读完。事实上,读者在一小时之内不仅可以阅读完一章的内容,还有足够的时间来做笔记和重读比较复杂的小节。

如何使用本书

本书致力于通过一些简单、易理解的会话来帮助读者学习某个主题。本书分为6个部分,每一部分都会使读者进一步熟练掌握TCP/IP。

第1部分,“TCP/IP基础知识”,介绍TCP/IP和TCP/IP协议栈。

第2部分,“TCP/IP协议系统”,详细介绍TCP/IP的每一个协议层:网络访问层、网际层、传输层和应用层。内容包括 IP寻址和子网划分、物理网络和应用服务、TCP/IP每一层上运行的协议。

第3部分,“TCP/IP连网”,介绍支持TCP/IP网络的设备、服务和工具,内容包括路由选择、网络硬件、DHCP、DNS和IPv6。

第4部分,“工具”,介绍用于配置、管理和诊断TCP/IP网络的一些常用工具,内容包括ping、Netstat、FTP、Telnet和其他网络工具。你可以大致了解TCP/IP是如何适用于某些重要服务的(比如Web服务器、LDAP身份验证服务器和数据库服务器)。

第5部分,“Internet”,介绍世界上最大的TCP/IP网络:Internet。内容包括Internet的结构、HTTP、HTML、XML、电子邮件和 Internet 流传输,此外还包括 Web 技术如何通过演化发展来提供新一代的服务。

第6部分,“运行中的TCP”,通过提供一个难忘的案例研究来向读者展示,TCP/IP的组件是如何在真实中的环境中交互的。

本书中介绍的概念,就像TCP/IP本身一样,独立于任何操作系统,源自于“Internet请求注解(RFC)”中定义的标准。

本书是如何组织的

本书的每一章由一段简要介绍开始,并列出本章的主要目标。另外还有下面这些组成元素。

主要内容

每章的主要内容都对相应主题进行清晰、易懂的介绍,利用图形和表格来帮助解释文字所描述的概念,还有散布于文字之间的“注意”来提供补充资料,这些资料包括定义、描述或警告,可以帮助读者更好理解学习材料。

注意:

这些补充材料进一步说明正文中讨论的概念,它可能是额外的信息,或是提供了一个例子,但一般都不是理解主题所必需的。如果读者时间有限,或是只想掌握基本内容,可以跳过这些内容。

问与答

每章的最后部分都有一些问答题,其目的是测试读者对本章内容的理解。本书在附录A中提供了问题的答案。

测验

此外,每章后面都包含一个由问题和练习组成的测验,旨在测试读者对本章知识的理解程度,或者是为读者提供完成一个特定任务的练习。在完成测验中的某些练习时,即使你没有必要的软件和硬件,通过阅读这些练习,也会有助于理解工具如何应用于真实的网络实现。

关键术语

每章都会包含本章介绍的一些重要术语。这些关键术语按照字母排序,依次出现在每章末尾。

第1章 什么是TCP/IP

第2章 TCP/IP的工作方式

本章介绍如下内容:

网络和网络协议;

TCP/IP的历史;

TCP/IP的重要特性。

TCP/IP是一类协议系统,它是一套支持网络通信的协议集合。要回答什么是协议,首先必须回答什么是网络。

本章将介绍网络的概念,并解释网络为什么需要协议。此外,还将介绍TCP/IP的概念、功能及其历史。

学完本章后,你可以:

定义术语“网络”;

解释什么是网络协议簇;

解释什么是TCP/IP;

讨论TCP/IP的历史;

列出TCP/IP的一些重要特性;

了解监管TCP/IP和Internet的组织;

解释RFC是什么以及从哪里可以找到它们。

网络是计算机或类似计算机的设备之间通过常用传输介质进行通信的集合。通常情况下,传输介质是绝缘的金属导线,它用来在计算机之间携带电脉冲,但是阐述介质也可以是电话线,甚至没有线路(比如在无线网络中)。

无论计算机如何连接,计算机之间的通信过程都需要将来自于其中一台计算机的数据, 通过传输介质传输到另外一台计算机。在图1.1中,计算机A必须能够发送消息或请求到计算机B。计算机B必须能够理解计算机A的消息,并通过将一条消息发回计算机A来进行响应。

图1.1 典型的局域网

计算机可以通过一个或多个应用程序与世界进行交互,这些应用程序用来执行特定任务和管理通信过程。在现代系统中,可以轻松地实现网络通信,以至于用户几乎感觉不到它的存在。例如,当你在网上冲浪时,你的Web浏览器正在与URL中指定的Web服务器进行通信。当你在Windows Explorer或Mac OS Finder中查看邻居计算机列表时,这些位于局域网中的计算机也相互通信,以表明它们的存在。在任何情况下,只要你的计算机隶属于一个网络,那么,该计算机上的应用程序必须能够与该网络中其他计算机上的应用程序相互通信。

网络协议就是一套通用规则,用来帮助定义复杂数据传输的过程。数据传输从一台计算机上的应用程序开始,通过计算机网络硬件,经过传输介质到正确目的地,然后上传到目的地计算机网络硬件,最后到达负责接收的应用程序(见图1.2)。

图1.2 网络协议簇的规则

TCP/IP协议定义了网络通信过程,更重要的是,定义了数据单元的格式和内容,以便接收计算机能够正确解释接收到的消息。TCP/IP及其相关的协议构成了一套在TCP/IP网络中如何处理、传输和接收数据的完整系统,相关协议的系统,例如TCP/IP协议,被称为协议簇(protocol suite)。

确定 TCP/IP 传输格式和过程的实际行为是由厂商的 TCP/IP 软件来实现的。例如, Microsoft Windows中的TCP/IP软件使得安装了Windows的计算机可以处理TCP/IP格式的数据,并参与到TCP/IP网络中。在阅读本书时,应该了解下列区别。

TCP/IP标准定义了TCP/IP网络的通信规则;

TCP/IP实现是一个软件组件,计算机通过它参与到TCP/IP网络中。

TCP/IP标准的目的是确保所有厂商提供的TCP/IP实现都能够很好地兼容。

注意:在谈论到TCP/IP时,TCP/IP标准和TCP/IP实现之间的区别往往很模糊,有时会误导读者。例如,作者通常会讨论到为其他层提供服务的TCP/IP模型的分层,实际上,不是TCP/IP模型提供服务,它只是定义了其应该提供的服务,而真正提供这些服务的则是实现了TCP/IP的厂商软件。

之所以要设计TCP/IP,这是由它作为Internet协议系统的历史角色决定的。Internet与其他高技术的发展一样,最初是由美国国防部主持研究的。在20世纪60年代末期,美国国防部开始注意到军队购置了大量而且型号不同的计算机。有些计算机不能够联网,而有些计算机利用一些不兼容的专属协议就可以编组到一个小型的封闭网络中。

这里的“专属(Proprietary)”意味着该技术受到私有实体(比如一个公司)的控制。该实体不可能透露该协议的一些信息,这样用户就不能使用协议连接到其他(比如竞争对手)的网络协议中。

国防部的官员开始考虑是否可以利用这些分散的计算机来共享信息。这些有远见的官员创建了一个网络,被美国国防部高级研究计划署(ARPA)命名为ARPAnet。

随着该网络逐渐成型,由Robert E.Kahn和Vinton Cerf领导的一组计算机科学人员,开始研究通用的协议系统,以支持多种硬件并提供弹性的、可冗余的和分散的系统,该系统可以在全球范围内传输大量数据。这个研究的成果就是TCP/IP协议簇的开端。当美国国家科学基金会想建立连接到研究机构的网络时,它采纳了ARPAnet的协议系统,并开始构建Internet。伦敦大学学院和其他欧洲研究结构致力于TCP/IP早期的开发,第一个跨越大西洋的通信测试开始于1975年左右。随着越来越多的大学和研究机构的加入,Internet现象开始传播到世界各地。

在随后的学习中你会知道,最初分散的ARPAnet已经演变成了当前的TCP/IP协议系统,并成为Internet比较成功的一个部分。TCP/IP为这个分散的(decentralized)环境提供了两个重要的特性,如下所示。

端点验证:两台实际通信的计算机都称为端点,因为它们位于信息链的末端,负责确认和验证传输。所有的计算机都是对等操作,没有监视通信的中心模式。

动态路由选择:节点通过多条路径连接,路由器基于当前的条件选择一条路径来传输数据。本书后面会详细介绍路由选择及其路由路径。

个人计算机的革命

当 Internet 开始流行的时候,大多数计算机是多用户系统。位于一个办公室(或园区)的多个用户通过称之为终端的文本屏幕界面设备连接到一台计算机中。尽管用户之间的工作相互独立,但实际上他们访问的是同一台计算机,而且这一台计算机只需要一条 Internet 连接来向一大组用户提供服务。个人计算机在20世纪80年代和90年代的兴起改变了这一局面。

在个人计算机的早期,大多数用户没有必要为连网而费心。但是随着 Internet 的发展超出了其最初的学术目的进入民间之后,使用个人计算机的用户开始寻找接入Internet的方法。一种方法是使用modem拨号连接,它是通过一条电话线来提供网络连接的。

但是用户还希望能够与办公室中的其他计算机连接起来,以达到共享文件和访问外围设备的目的。为了满足这一需求,局域网(Local Area Network,LAN)这一网络概念登上舞台。

早期的LAN协议不提供Internet连接,而且是围绕着专有的协议系统来设计的。很多协议不支持任何类型的路由选择。位于一个工作组的计算机使用这些专有协议中的其中一种相互通信,用户要么不使用 Internet,要么就是通过拨号线路单独连接 Internet。随着 Internet服务提供商数量的增加,接入Internet的费用也逐渐降低,各个公司开始考虑采用一种永久、快速的Internet连接,而且这种连接可以永远在线。多种解决方案应运而生,它们可以让LAN用户接入到基于TCP/IP的Internet。为了让这些局域网接入到Internet,可以使用专门的网关来进行必要的协议转换。然而,随着万维网的成长,催生了终端用户与Internet的连接需求,这使得TCP/IP更为必要,而诸如AppleTalk、NetBEUI和Novell的IPX/SPX这样的LAN协议则丧失了用武之地。

包括Apple和Microsoft在内的操作系统厂商开始将TCP/IP作为局域网、Internet的默认协议。TCP/IP也在UNIX系统中成长起来,而且所有的UNIX/Linux版本都可以流畅地运行TCP/IP。最终,TCP/IP成为适用于小到小型办公室,大到大型数据中心的连网协议。

读者在第 3 章将知道,为了与 LAN 相适应,厂商在实现硬件相关的协议(而且这些协议是TCP/IP的基础)时,已经进行了大量的创新。

TCP/IP包括许多重要的特性,读者将在本书中学习到这些特性。请特别注意TCP/IP协议簇处理以下问题的方式:

逻辑编址;

路由选择;

名称解析;

错误控制和流量控制;

应用支持。

这些问题是 TCP/IP 的核心。下面将介绍这些重要的特性,其细节将在本书后面的章节中讲解。

网络适配器有一个唯一的物理地址。在以太网的例子中,当适配器在出厂时,通常会为其分配一个物理地址,这个物理地址有时候称为 MAC 地址。当然,当前有些设备提供了修改该物理地址的方法。在 LAN 中,低层的与硬件相关的协议使用适配器的物理地址在物理网络中传输数据。现在有多种类型的网络,而且它们传输数据所使用的方法也不相同。例如,在基本的以太网中,计算机直接在传输介质至上发送消息。每台计算机的网络适配器监听局域网络中的每一个传输,以确定消息是否是发送到它的物理地址。

注意:并没有那么简单

当你在学习第9章时将会知道,今天的以太网比计算机直接在传输线路上发送信息的理想场景要复杂一些。以太网有时包含硬件设备,比如用来管理信号的交换机。

当然,在大型网络中,每个网络适配器不能监听所有的信息(想象一下你的计算机监听在Internet中传输的所有数据)。当传输介质随着计算机越来越普及时,物理地址模式不能有效地发挥作用。网络管理员经常使用设备(例如路由器)将网络分段,以减少网络的拥堵。在路由式网络中,管理员需要一种细分网络到更小的子网(称为subnets)的方法,并且加入一个分层设计以便让信息有效地传输到它的目的地。TCP/IP通过逻辑编址提供了这样的子网化能力。逻辑地址是一个通过网络软件来配置的地址。在TCP/IP中,计算机的逻辑地址称为IP地址。在第4章和第5章将学到,一个IP地址包括:

一个识别网络的网络ID数值;

一个识别网络中子网的子网ID数值;

一个识别子网中计算机的主机ID数值。

IP编址系统也能让网络管理员在网络中加入一个明智的编址方案,这样地址的级数就能反映网络的内部结构。

注意:Internet就绪(Internet-Ready)地址

如果你的网络与Internet相隔离,则可以随意使用任何IP地址(只要网络遵循基本的IP编址规则)。但是,如果你的网络与Internet相连,互联网名称与数字地址分配机构(ICANN,成立于1998年)将分配一个网络ID给你的网络,该网络ID成为IP地址的第一部分(见第4章和第5章)。一个有趣的新技术是一个被称为网络地址转换(NAT)的系统,它可以让你在局域网中拥有私有的、不可路由的IP地址。当需要与Internet通信时,NAT会将这个地址转换为正式的Internet就绪地址。有关NAT的详情将在第12章介绍。

在TCP/IP中,逻辑地址与具体硬件的物理地址之间的转换是使用地址解析协议(Address Resolution Protocol,ARP)和逆向地址解析协议(Reverse ARP,RARP)实现的。这两个协议将在第4章讲解。

路由器是一种特殊的设备,能够读取逻辑地址信息,并将数据通过网络直接传送到它的目的地。最简单的应用是,路由器将一个局域子网从较大的网络中分离出去(见图1.3)。

图1.3 路由器将一个局域网连接到一个大型的网络上

在局域网中,数据传输到另一台计算机或设备时,不用经过路由器,因此不会给大型网络的传输线路带来负担。如果数据要传送到子网以外的计算机上,路由器将负责转发数据。本章前面提到,大型网络(例如Internet)包括了许多路由器,并且提供从源到目的地的多条路径(见图1.4)。

图1.4 路由式网络

TCP/IP包括了定义路由器如何找到网络路径的协议。有关TCP/IP路由选择和路由协议的更多知识将在第8章进行讲解。

注意:其他过滤设备

你在第9章将学到,像网桥、交换机和智能HUB这样的网络设备也都可以过滤流量并减少网络拥塞。由于这些设备使用的都是物理地址而不是逻辑地址,因此它们不能执行图1.4中所示的复杂路由功能。

尽管对用户而言,数字化的IP地址要比网络适配器的物理地址更方便使用,但是IP地址的设计初衷是方便计算机的操作,而不是用户。人们在记忆计算机的地址是111.121.131.146还是111.121.131.156时,可能会相当麻烦。因此,TCP/IP同时提供了IP地址的另外一种结构,它以字母数字命名,可以方便用户的使用。这种结构称为域名或域名系统(Domain Name System,DNS)。域名到IP地址的映射称为名称解析。称为域名服务器的专用计算机中存储了用于显示域名和IP地址转换方式的表。

通常与E-mail或万维网相关联的计算机地址被表示为DNS名称(例如,www.microsoft.com、falcon.ukans.edu和idir.net)TCP/IP的域名服务系统提供分层的域名服务器,这些服务器为网络中注册DNS的计算机提供域名和IP地址之间的映射。这意味着用户几乎不用输入或解读(decipher)真实的IP地址了。

DNS是用于Internet的域名解析系统,也是最常见的域名解析方法。然而,也可以使用现有的其他技术将字母数字化的域名解析为IP地址。这些可用的替代系统的重要性在近年来逐渐淡化,但是域名解析服务,例如将NetBIOS解析为 IP地址的Windows Internet命名服务(WINS)仍在世界范围内使用。

第10章将详细讲解TCP/IP名称解析。

TCP/IP 协议簇提供了确保数据在网络中可靠传送的特性。这些特性包括检查数据的传输错误(确保到达的数据与发送的数据一致)和确认成功接收到网络信息。TCP/IP 的传输层(见第 6章)通过 TCP协议定义了许多这样的错误控制、流量控制和确认功能。位于TCP/IP的网络访问层(见第3章)中的低层协议在错误控制的整体系统中也起到了一定作用。

在同一台计算机上可以运行多种网络应用程序。协议软件必须提供某些方法来判断接收到的数据包属于哪个应用程序。在 TCP/IP 中,这个通过系统的逻辑通道实现从网络到应用程序的接口被称为端口。每个端口有一个用于识别该端口的数字。可以把端口想象为计算机中的逻辑管道,数据通过这些管道实现在应用程序和协议软件之间的传输(见图1.5)。

第6章将讲解在TCP/IP传输层的TCP和UDP端口。应用程序支持和TCP/IP应用层将在第7章详细讲解。

TCP/IP簇还包括一些现成的应用程序,用来辅助各种网络任务。一些典型的TCP/IP功能见表1.1。这些TCP/IP功能的详情将在第14章介绍。

图1.5 应用程序通过称为端口的逻辑通道访问Internet

表1.1 典型的TCP/IP工具

注意:新纪元

在本书编写之时,TCP/IP 实际上已经进入了一个新的阶段。像无线网络、虚拟专用网络(VPN)和NAT这样的新技术增加了新的复杂性,这是TCP/IP的创造者难以想象的。而且下一代IP地址协议IPv6很快就会改变IP编址的格局。本书后面的章节将会详细介绍这些技术。

有多家组织一直在致力于 TCP/IP 和 Internet 的开发。在过去和现在仍然致力于 TCP/IP的组织有下面几家。

Internet架构委员会(IAB):设置Internet的策略和负责TCP/IP标准未来发展的理事会。

Internet工程任务组(IETF):研究和管辖工程任务的组织。IETF被划分为研究TCP/IP和Internet具体内容(比如应用、路由选择、网络管理等)的工作组。

Internet研究任务组(IRTF):IAB的分支机构,致力于长期的研究。

互联网名称与数字地址分配机构(ICNN):成立于1998年,协调Internet域名、IP地址和全球唯一协议参数(比如端口号)的分配(www.icann.com)。

由于TCP/IP是一个标准开放的系统,不被任何公司或个人持有,因此Internet社区需要一个全面、独立而且中立于厂商的过程,来提出、讨论和发布对TCP/IP所做的变更和添加。TCP/IP的大多数官方文档都通是通过一系列的RFC发布的。RFC的库包含了Internet标准来自工作组的报告。IETF的官方规范也是以RFC形式发布的。多数RFC旨在解释TCP/IP或Internet的某一方面。在本书中你会发现引用了多个RFC,这是因为TCP/IP簇是在一个或多个RFC文档中定义的。尽管大多数的RFC是由行业工作组和研究机构创建的,但是任何人都可以提交RFC以供审查。你可以将提出的RFC(proposed RFC)发送给 IETF,或者是直接通过邮件将RFC提交给RFC编辑,其地址为rfc-editor@rfc-editor.org。

RFC 为想深入了解 TCP/IP 的任何人提供了必要的技术背景,其中包括有关协议、功能和服务的技术论文,以及一些与TCP/IP相关的一些诗歌,虽然这与TCP/IP的简洁和经济并不匹配。

在Internet的多个地方都可以找到RFC,比如www.rfc-editor.org。表1.2列出了几个有代表性的RFC。

表1.2 Internet RFC中的一些示例

本章介绍了什么是网络,以及为什么网络需要协议。我们知道了 TCP/IP 起源于美国国防部的实验性ARPAnet网络,以及TCP/IP旨在在多样化的环境中提供分散的连网方式。

本章还介绍了 TCP/IP 的几个重要特性,例如逻辑编址、名称解析和应用支持。还概述了TCP/IP的几个监管组织和RFC文档(作为TCP/IP和Internet的官方文档的技术论文)。

问:协议标准和协议实现之间的不同是什么?

答:协议标准是一系列规则。协议实现是应用这些规则的软件组件,使得计算机能够具有连网功能。

问:为什么端点验证是ARPAnet的一个重要特性?

答:按照设计,网络不应该由任何中心节点来控制。因此发送和接收数据的计算机必须负责验证自己的通信。

问:为什么较大网络使用名称解析?

答:IP地址不便于记忆并容易搞错。DNS样式的域名容易记忆,因为它们允许将一个单词或名字与IP地址相关联。

下面的测验由一组问题和练习组成。这些问题旨在测试读者对本章知识的理解程度,而练习旨在为读者提供一个机会来应用本章讲解的概念。在继续学习之前,请先完成这些问题和练习。有关问题的答案,请参见附录A。

1.什么是网络协议?

2.TCP/IP的哪两个特性使得TCP可以在分散的环境中运行?

3.什么系统负责域名和IP地址之间的映射?

4.什么是RFC?

5.什么是端口?

1.访问www.rfc-editor.org,并查看几个RFC。

2.通过datatracker.ietf.org/wg/网站来访问IETF,并查看几个活跃的工作组。

3.通过www.irtf.org来访问IRTF,并查看正在进行的研究。

4.通过www.icann.org/en/about/来查看ICANN的About页面,并了解ICANN的任务。

5.阅读RFC 1160,以了解 IAB和 IETF在 1990年之前的历史。

复习下列关键术语:

ARPAnet:一种实验性网络,也是TCP/IP的诞生地。

域名:通过TCP/IP的DNS域名服务系统,与IP地址相关联的名字。

网关:连接LAN到大型网络的路由器。在专属LAN协议当道的时期,术语“网关”有时指执行一些协议转换的路由器。

IP地址:用于定位TCP/IP网络上计算机或其他连网设备的逻辑地址(例如,打印机)。

局域网(LAN):供单个办公室、组织或家庭使用的小型网络,通常只占据一个地理位置。

逻辑地址:通过协议软件配置的网络地址。

域名服务:将网络地址与便于人记忆的名字相关联的一种服务。提供该服务的计算机被称为域名服务器,将名字解析为地址的行为称为名称解析。

网络协议:对通信过程的一个具体方面进行定义的一组通用规则。

物理地址:与网络硬件相关的地址。在以太网适配器中,物理地址通常在适配器出场之前分配给它。

端口:一种内部通道或地址,它在应用程序和TCP/IP传输层之间提供了一个接口。

专属:有私有实体(比如一个公司)控制的技术。

协议实现:实现了协议标准中定义的通信规则的软件组件。

RFC:提供有关TCP/IP或Internet信息的官方技术文档。可以在网络的多个地方找到RFC,例如www.rfc-editor.org。

路由器:通过逻辑地址来转发数据的一种网络设备,并且也可以用来将大型网络分为几个较小的子网。

TCP/IP:在Internet和很多其他网络上使用的网络协议簇。

本章介绍如下内容:

TCP/IP协议系统;

OSI模型;

数据包;

TCP/IP的交互方式。

TCP/IP是一个协议系统或协议簇,而每个协议都是由规则与过程组成的系统。在大多数情况下,通信计算机的硬件和软件实现TCP/IP通信的规则,用户不必关心其中的细节。但是,如果想对TCP/IP网络进行配置或故障排错,就有必要掌握TCP/IP知识了。

本章将介绍TCP/IP协议系统,以及TCP/IP组件如何协同工作,以在网络上发送和接收数据。

学完本章后,你可以:

描述TCP/IP协议系统的分层以及各层的功能;

描述OSI协议模型的分层并解释OSI分层与TCP/IP的关系;

解释TCP/IP协议的报头,以及数据在协议栈的每一层,是如何使用该层的报头信息进行封装的;

对位于TCP/IP协议栈每一层的数据包进行命名;

讨论TCP、UDP和IP协议,以及它们如何共同实现TCP/IP功能。

在介绍TCP/IP的组成部分之前,最好先简要了解协议系统的职责。

像TCP/IP这样的协议系统必须负责完成以下任务。

把消息分解为可管理的数据块,并且这些数据块能够有效地通过传输介质。

与网络适配器硬件连接。

寻址,即发送端计算机必须能够定位到接收数据的计算机,接收计算机必须能够识别自己要接收的数据。

将数据路由到目的计算机所在的子网,即使源子网和目的子网分处不同的物理网络。

执行错误控制、流量控制和确认:对可靠的通信而言,发送和接收计算机必须能够发现并纠正传输错误,并控制数据流。

从应用程序接收数据并传输到网络。

从网络接收数据并传输到应用程序。

为了实现上述功能,TCP/IP 的创建者使用了模块化的设计。TCP/IP 协议系统被分为不同的组件,这些组件从理论上来说能够相互独立地实现自己的功能。每个组件分别负责通信过程中的一个步骤。

这种模块化设计的好处在于让厂商方便地根据特定硬件和操作系统对协议软件进行修改。例如,网络访问层(第3章将学到)包含了与物理网络规范和设计相关的功能,由于TCP/IP的模块化设计,像Microsoft这样的厂商在使用光纤网络时就不必重新构建一个全新的TCP/IP软件包,上层不会受到网络物理结构变化的影响,只要修改网络访问层即可。

TCP/IP协议系统划分为不同层次的组件,分别实现特定的功能(见图2.1)。这个模型或栈来自于早期的TCP/IP,有时也被称为TCP/IP模型。下面的列表描述了官方的TCP/IP协议层及其功能,把它与前面列出的协议系统功能相比,就可以看出这些功能是如何分布在各个层次中的。

注意:许多模型

图2.1中的四层模型是描述TCP/IP网络的常见模型,但并不是唯一的模型。比如RFC 871中描述的ARPAnet模型有3层:网络接口层、主机到主机层和处理/应用层。其他的一些TCP/IP模型包含5层:用物理层和数据链路层代替了网络访问层(与OSI相匹配)。还有些模型可能不包含网络访问层或应用层,因为这些层的定义并不是非常一致,而且比中间层更难以明确定义。而且每一层的名字也不相同。ARPAnet各层的名字仍然可以在TCP/IP的一些讨论中见到,而网际层有时则称为网间层或网络层。

本书中使用的是四层模型,其名字如图2.1中所示。

图2.1 TCP/IP 模型的协议层

网络访问层:提供了与物理网络连接的接口。针对传输介质设置数据的格式,根据硬件的物理地址实现数据的寻址,对数据在物理网络中的传递提供错误控制。

网际层:提供独立于硬件的逻辑寻址,从而让数据能够在具有不同物理结构的子网之间传递。提供路由功能来降低流量,支持网间的数据传递(术语“网间”(internetwork)指的是多个局域网互相连接而形成的较大的网络,比如大公司里的网络或Internet)。实现物理地址(网络访问层使用的地址)与逻辑地址的转换。

传输层:为网络提供了流量控制、错误控制和确认服务。充当网络应用程序的接口。

应用层:为网络排错、文件传输、远程控制和 Internet 操作提供了应用程序,还支持应用编程接口(API),从而使得针对特定操作系统编写的程序能够访问网络。本书后面的章节将详细介绍TCP/IP协议每一层的行为。

当 TCP/IP 协议软件准备通过网络传递数据时,发送端计算机上的每一层协议都在数据上添加层信息,对应于接收端计算机上相应的层。例如,发送端计算机的网际层会向数据添加报头信息,这些信息对于接收端计算机的网际层是十分重要的。这个过程有时也被称为封装。在接收端,当数据在协议栈里传递时,这些报头信息被逐步去除。

注意:

在计算机行业中,“层”这个术语在协议组件层级(比如图2.1中的协议层组件级)得到了广泛应用。当数据在协议栈的组件之间传递时,每一层的报头信息被添加到数据中。对于组件本身来说,“层”这个术语就是一种比喻。

图2.1所示为数据要经过一系列接口传输的示意图。只要接口保持不变,一个组件内的处理过程就不会影响到另一个组件。把图2.1横过来看,它就像一条流水线,这也是对于协议组件关系的一个很好的比喻。当数据按规定到达流水线上的每一个点时,每个组件就独立地对其进行处理。

网络业界针对网络协议体系有一个标准的七层模型,称为“开放系统互连(OSI)”模型,这是ISO(国际标准化组织)为了标准化网络协议系统所做出的规范,旨在提高网络互连性,并且方便软件开发人员以一种开放方式来使用协议标准。

当OSI标准体系出现时,TCP/IP已经处于开发过程之中了。严格来讲,TCP/IP没有遵守OSI模型,然而这两种模型的确具有类似的目标,而且它们的设计者之间有足够的交互,所以它们具有一定的兼容性。OSI 模型对于协议实现的开发与发展具有非常大的影响力,所以了解OSI术语如何应用于TCP/IP是理所应当的。

图2.2所示为TCP/IP标准四层模型与OSI七层模型之间的关系。注意到OSI模型把应用层的功能划分到3个层:应用层、表示层和会话层。OSI还把网络访问层的功能划分到数据链路层和物理层。这种新增的细分带来了一定的复杂性,但是通过让协议层具有更明确的服务,也为开发人员提供了灵活性。尤其是在底层对数据链路层和物理层的划分,就把通信组织相关的功能与访问通信介质的功能分离开了。而OSI的最上三层让应用程序能够以更灵活的方式与协议栈进行交互。

图2.2 OSI七层模型

OSI模型的7层分别如下所示。

物理层:把数据转换为传输介质上的电子流或模拟脉冲,并且监视数据的传输。

数据链路层:提供与网络适配器相连的接口,维护子网的逻辑链接。

网络层:支持逻辑寻址与路由选择。

传输层:为网络提供错误控制和数据流控制。

会话层:在计算机的通信应用程序之间建立会话。

表示层:把数据转换为标准格式,管理数据加密与压缩。

应用层:为应用程序提供网络接口,支持文件传输、通信等功能的网络应用。

需要注意的是,TCP/IP模型与OSI模型都是标准,而不是实现。TCP/IP的具体实现并没有严格遵守图2.1和图2.2中的模型,而图2.2所示的完美通信关系在业界也有不同意见。

注意到在重要的传输层和网际层(在OSI里被称为网络层),OSI和TCP/IP模型是最相似的,这些层包含的组件最能体现网络协议之间的区别,所以很多协议根据其传输层和网络层进行命名并不是一种偶然。在本书后面的学习中你会知道,TCP/IP协议簇的名称就来自于TCP(一个传输层协议)和IP(一个网际层/网络层协议)。

关于TCP/IP协议栈需要强调的是,其中每一层都在整个通信过程中都扮演一定的角色,并调用必要的服务来完成相应的功能。在数据发送过程中,其流程是从堆栈的上到下,每一层都把相关的信息(被称为“报头”)捆绑到实际的数据上。包含报头信息和数据的数据包就作为下一层的数据,再次被添加报头信息和重新打包。这个过程如图 2.3 所示。当数据到达目的计算机时,接收过程恰恰是相反的,在数据从下到上经过协议栈的过程中,每一层都解开相应的报头并且使用其中的信息。

当数据从上至下通过协议栈时,其情形有点像俄罗斯的套娃。最里面的娃娃被套在稍大的娃娃里,后者又被装在更大一些的娃娃里,以此类推。在接收端,当数据从下至上经过协议栈时,数据包被逐渐解包。接收端计算机上的网际层会使用网际层的头信息,传输层会使用传输层的报头信息。在每一层中,数据包的格式都能向相应的层提供必要的信息。由于每一层分别具有不同的功能,所以每一层基本数据包的形式也是千差万别的。

图2.3 在每一层,都要使用该层的报头信息对数据重新打包

注意:传输套娃

网络界不仅有很多缩写名词,也有很多类比,比如前面提到的俄罗斯套娃,它们可以形象地展示某些概念,但不应被过度使用。需要指出的是,在物理网络中(比如以太网),数据在网络访问层被分解为较小的单元。对此更准确的比喻是把套娃分解为碎片,把这些碎片封装到很小的娃娃里,再把它们以1和0的模式表示。接收端收到这些1和0之后,重新组合为小娃娃,再重建整个套娃。整个过程是相当复杂,所以很多人不使用套娃作为比喻。

数据包在每一层具有不同的形式和名称。下面是数据包在每一层的名称。

在应用层生成的数据包被称为消息。

在传输层生成的数据包封装了应用层的消息,如果它来自于传输层的TCP协议,就被称为分段;如果来自于传输层的UDP协议,就被称为数据报。

在网际层的数据包封装了传输层的片段,被称为数据报。

在网络访问层的数据包封装了数据报(而且可能对其进行再分解),被称为帧。帧被访问层里的最低子层转化为比特流。

本书后面的章节将更详细地介绍每一层的数据包。

关于协议系统分层的介绍到处可见。这种分层方式的确可以让我们深入理解协议系统,而且如果不介绍分层体系也就不可能描述 TCP/IP,但是只关注各个协议层也有一定的局限性。

首先,讨论协议层而不是协议会使本来就非常抽象的概念更加抽象。其次,详细列出协议层里的各种协议会使人误认为它们是同等重要的。实际上,虽然TCP/IP协议簇里每个协议都有自己的作用,但TCP/IP协议簇的主要功能是可以通过几个最重要的协议来完成的。在了解了前面关于协议分层的基础知识之后,对重要协议的简要介绍是很有好处的。

图2.4描述了基本的TCP/IP协议连网系统。当然,在完整的数据包里还包含其他的协议和服务,图中展示的是最主要的部分。

图2.4 基本的TCP/IP联网系统

基本场景如下。

1.数据从工作于应用层的协议、网络服务或应用编程接口(API)通过TCP或UDP端口传递到两个传输层协议(TCP或UDP)中的一个。程序可以根据需要通过TCP或UDP访问网络。

TCP是面向连接的协议。第 6章将讲到,与无连接的协议相比,面向连接的协议提供更复杂的流量控制和错误控制。TCP能够确保数据的发送质量,比UDP更可靠,但由于需要进行额外的错误检测和流量控制,因此比UDP的速度慢。

UDP是个无连接的协议,比 TCP快,但是不可靠,它把错误控制的责任推给了应用。

2.数据分段传递到网际层,IP协议在此提供逻辑寻址信息,并且把数据封装为数据报。

3.IP 数据报进入网络访问层,传递到与物理网络相连接的软件组件。网络访问层创建一个或多个数据帧,从而进入到物理网络。在像以太网这样的局域网系统中,帧可能包含从表格里获得的物理地址信息,而这些表格是由网际层的ARP维护的(ARP是地址解析协议,把IP地址转换为物理地址)。

4.数据帧被转化为比特流,通过网络介质进行传输。

当然,每个协议在实现其功能时还涉及很多的细节,比如TCP如何提供流量控制、ARP如何将物理地址映射为IP地址,以及IP如何知道应该向其他子网的地址发送数据报。这些问题将在本书的后续章节介绍。

本章介绍了TCP/IP协议栈的分层结构及其之间的相互关系,还讲解了经典的TCP/IP模型与OSI七层模型之间的关系。在协议栈的每一个层中,数据都被进行了封装,添加了接收端相应层所需的信息。本章讨论了在每个协议层封装报头信息的过程,概述了每一层数据包的名称。最后,我们还通过TCP/IP的一些最重要的协议概述了它是如何运行的,这些协议包括TCP、UDP、IP和RAPP。

问:TCP/IP模块化设计的主要优点是什么?

答:由于TCP/IP的模块化设计,TCP/IP协议栈能够方便地进行修改来适应特定的硬件和操作环境。将网络软件划分为具体的、设计良好的组件,有助于开发人员更容易地编写出于协议系统进行交互的程序。

问:网络访问层提供了什么功能?

答:网络访问层提供了与特定物理网络相关的服务,包括基于特定传输介质(比如以太网电缆)准备、发送和接收数据帧。

问:OSI模型的哪一层对应于TCP/IP的网际层?

答:OSI的网络层对应于TCP/IP的网际层。

问:为什么要在TCP/IP协议栈的每一层封装报头信息?

答:因为接收设备上每个协议层需要不同的信息来处理收到的数据,所以发送设备上的每一层就封装相应的报头信息。

下面的测验由一组问题和练习组成。这些问题旨在测试读者对本章知识的理解程度,而练习旨在为读者提供一个机会来应用本章讲解的概念。在继续学习之前,请先完成这些问题和练习。有关问题的答案,请参见附录A。

1.OSI的哪两层对应于TCP/IP的网络接入层?

2.TCP/IP的哪一层负责将数据从一台计算机路由到另外一台计算机?

3.与TCP相比,UPD的优势和劣势分别是什么?

4.哪一层处理帧?

5.每一层封装数据的真实含义是什么?

1.列举TCP/IP协议栈中每一层所执行的功能。

2.列出处理数据报的层。

3.如何修改TCP/IP,才能使用新发明的网络类型?

4.为什么说TCP/IP是可靠的协议?

复习下列关键术语:

地址解析协议(ARP);将逻辑IP地址解析为物理地址的协议。

应用层:TCP/IP栈中的一层,它支持网络应用,提供与本地操作环境相交互的接口。

数据报:从网际层传输到网络访问层的数据包,或是从传输层的UDP传递到网际层的数据包。

:在网络访问层创建的数据包。

报头:在协议栈每一层附加到数据上的协议信息。

网际层:TCP/IP栈中的一层,提供逻辑寻址和路由选择。

IP:网际层的协议,提供逻辑寻址和路由选择功能。

消息:在TCP/IP网络中,消息是从应用层传递到传输层的数据包。该属于通常也用于描述从网络上一个实体传递到另一个实体的信息,它并不总是指应用层数据包。

网络访问层:TCP/IP协议中的一层,提供与物理网络连接的接口。

分段:从传输层的TCP传递到网际层的数据包。

TCP(传输控制协议):传输层中一个可靠的、面向连接的协议。

传输层:TCP/IP协议栈中的一层,提供错误控制和确认功能,并充当网络应用程序的接口。

UDP(用户数据报协议):传输层中一个不可靠的、无连接的协议。

相关图书

Web应用安全
Web应用安全
企业“IPv6+”网络规划设计与演进
企业“IPv6+”网络规划设计与演进
“IPv6+”网络技术创新:构筑数字经济发展基石
“IPv6+”网络技术创新:构筑数字经济发展基石
社交网络对齐
社交网络对齐
华为HCIA路由交换认证指南
华为HCIA路由交换认证指南
非常网管 IPv6网络部署实战
非常网管 IPv6网络部署实战

相关文章

相关课程