互联网技术及应用
课程的目的与任务:
研究TCP/IP协议栈各子层协议,重点理解应用层协议及部分底层协议原理,了解TCP/IP的网络配置及维护。
第1章概述
1.1 因特网概述
1.2 TCP/IP 网际互连的体系结构
1.3 TCP/IP协议族
1.3.1 TCP/IP的产生与发展
1.3.2 TCP/IP分层模型
1.3.3 TCP/IP协议族中各协议功能
1.3.4 复用和分解
1.3.5 深层的TCP/IP协议和服务
1.4 端口号
1.5 应用编程接口
引言很多不同的厂家生产各种型号的计算机,它们运行完全不同的操作系统,但T C P / I P协议族允许它们互相进行通信。它成为被称作“全球互联网”或“因特网( I n t e r n e t )”的基础。本章主要对T C P / I P协议族进行概述,其目的是为本书其余章节提供充分的背景知识
1.1 因特网概述(见ppt)
计算机网络的概念计算机网络的结构数据交换的方式
Internet 的发展 —— 拓扑结构的演变1,2,3
Internet的组成1,2
因特网部件示例
1.2 TCP/IP 网际互连的体系结构(见ppt)
TCP/IP 网络的特点网络互连的概念
TCP/IP 的网络互连
TCP/IP 网络互连的透明性
TCP/IP常用概念
1.3 TCP/IP协议族(同时参照ppt)
1.3.1 TCP/IP的产生与发展
1.3.2 TCP/IP分层模型协议分层的必要性
由于数据通信系统的复杂性,仅使用单一的协议来处理所有的传输任务是不现实的,而是需要一整套相互合作的协议,这些协议又称为协议族或协议套件。
通信系统的复杂性体现在:
1.硬件故障。主机或路由器可能因硬件故障或操作系统崩溃而不能工作。网络传输链路可能偶尔出现断路或者完全失效的情况。协议软件必须能够检测出这些失效,如果可能,还应进行恢复工作。
2,网络拥塞。即使所有的软硬件都工作正常,网络的承载能力也是有限的。协议软件必须采取一定的策略,使已经发生拥塞的机器能抑制通信量的增加。
3.分组时延与丢失。有时分组的时延特别长,甚至丢失了分组。协议软件必须能适应分组的长时延以及丢失的情况。
4.数据损伤。电磁干扰和硬件的故障会导致传输的差错,因而使所传数据内容出错。协议软件必须能检测这些差错并从差错中恢复过来。
5.数据重复及乱序。提供多路由的网络可能会送出乱序的分组数据或重复的分组。协议软件必须能将分组重新排序并抛弃重复的分组。
协议分层的原则
不论采用何种具体的层次结构以及各层的功能是什么,分层协议软件的操作都基于同一基本原则,即目标机的第n层所收到的数据就是源主机的第n层所发出的数据。
分层原则解释了为什么分层思想是解决复杂协议实现问题的十分有效的方法。它允许协议的设计者能在一段时间内把注意力集中到某一层上而不必考虑较低层的执行情况。
例如,在编制文件传输应用程序时,设计者仅仅需要考虑把两份应用程序分别放到两台机器上,然后如何进行报文的交互来完成文件的传输。设计者认为一台主机上的应用程序所收到的数据就应该是另一台主机的应用程序发来的数据。这样就把复杂的问题进行了分解,使之模块化、简单化,有利于协议的开发与调试。
对协议分层的理解
1,每个协议属于分层的协议体系的层次之一。
2,某一层的某个协议分布于具体的网络实体(包括端系统和分组交换机)之中,由网络实体实现。
3,对于第n层上运行的协议数据单元(PDU),常表示为n-PDU。一个n-PDU的内容和格式以及这些n-PDU在网络元素之间交换的方式,由第n层协议定义。
4,各层的所有协议统称为协议族。
5,第n-1层向第n层提供服务。 为了实现两个层次之间的相互操作,层次间的接口必须精确定义。标准化组织精确的定义了相邻层次间的接口(例如,经这些层次传输的PDU格式),但允许网络软件和硬件的研制者根据他们的意愿实现这些层次的内部。
协议层能够以软件、硬件或两者结合的方式实现。
每一层的功能或任务
1.差错控制:使两个对等网络元素中层次间的逻辑通信更可靠
2.流控制:避免用PDU过载一个较慢的对等方
3.分段和重组:发端将大的数据块分割成小块,收端将小块重组
4.复用:允许一个较高层会话共享一个较低层连接
5.连接建立:提供对等方的握手
TCP/IP分层的工作原理
TCP/IP协议体系和OSI模型的分层结构虽然不完全相同,但它们的分层原则是一致的,即都遵循这样一个思想:分层的协议要被设计成达到这样的效果,即目标机的第n层所收到的数据就是源主机的第n层所发出的数据。
图1-3描述了TCP/IP分层工作原理,它表示了两台主机上的应用程序之间传输报文的路径。主机B上的第n层所收到的正是主机A上的第n层所发出的对象.
在图1—3中忽略了一个重要的内容,即没有描述发送方主机上的应用程序与接收主机的应用程序之间通过路由器进行报文传输的情况。
图1—4中描述使用路由器的TCP/ IP分层工作,图中报文经历了两种结构不同的网络,也使用了两种不同的网络帧,即一个是从主机A到路由器R,另一个是从路由器R到主机B。主机A发出的帧和路由器R接收到的帧相同,但不同于路由器R和主机B之间传送的帧。与此形成对照的是应用程序层和传输层处理端到端的事务,因此发送方的软件能和最终的接收方的对等层软件进行通信。也就是说,分层原则保证了最终的接收,方的传输层所收到的分组与发送方的传输层送出的分组是一样的。
OSI与TCP/IP模型网络协议通常分不同层次进行开发,每一层分别负责不同的通信功能。T C P / I P通常被认为是一个四层协议系统,如图1 - 1所示。每一层负责不同的功能:
链路层:包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。
2) 网络层:处理分组在网络中的活动。
3) 运输层:为两台主机上的应用程序提供端到端的通信。
4 ) 应用层:负责处理特定的应用程序细节。例:

1 - 2中列举了四种不同层次上的协议。F T P是一种应用层协议,T C P是一种运输层协议,I P是一种网络层协议,而以太网协议则应用于链路层上。T C P / I P协议族是一组不同的协议组合在一起构成的协议族。尽管通常称该协议族为T C P / I P,但T C P和I P只是其中的两种协议而已(该协议族的另一个名字是I n t e r n e t协议族(Internet Protocol Suite))。网络接口层和应用层的目的是很显然的—前者处理有关通信媒介的细节(以太网、令牌环网等),而后者处理某个特定的用户应用程序( F T P、Te l n e t等)。但是,从表面上看,网络层和运输层之间的区别不那么明显。为什么要把它们划分成两个不同的层次呢?为了理解这一点,我们必须把视野从单个网络扩展到一组网络。
在图1 - 3中,我们可以划分出端系统( End system )(两边的两台主机)和中间系统(Intermediate system)(中间的路由器)。应用层和输层使用端到端( En d - t o - e n d)协议。在图中,只有端系统需要这两层协议。但是,网络层提供的却是逐跳( Ho p - b y - h o p)协议,两个端系统和每个中间系统都要使用它。

在T C P / I P协议族中,网络层I P提供的是一种不可靠的服务。也就是说,它只是尽可能快地把分组从源结点送到目的结点,但是并不提供任何可靠性保证。而另一方面,T C P在不可靠的I P层上提供了一个可靠的运输层。为了提供这种可靠的服务,T C P采用了超时重传、发送和接收端到端的确认分组等机制。由此可见,运输层和网络层分别负责不同的功能。
TCP/IP模型的分界线分界线1:协议地址分界线,区分高层和底层寻址。高层寻址使用IP 地址,底层寻址使用物理地址。
分界线2:操作系统分界线,区分系统程序和应用程序。当协议软件集成到操作系统中后,提高了数据传输的效率。
1.3.3 TCP/IP协议族中各协议功能(同时参照ppt)
TCP/IP 协议的体系结构
TCP/IP协议族中不同层次的协议在T C P / I P协议族中,有很多种协议。图1 - 4给出了本书将要讨论的其他协议。

T C P和U D P是两种最为著名的运输层协议,二者都使用I P作为网络层协议。
虽然T C P使用不可靠的I P服务,但它却提供一种可靠的运输层服务。U D P是不可靠的,它不能保证数据报能安全无误地到达最终目的。
I P是网络层上的主要协议。T C P和U D P的每组数据都通过端系统和每个中间路由器中的I P层在互联网中进行传输。
I C M P是I P协议的附属协议。I P层用它来与其他主机或路由器交换错误报文和其他重要信息。
I G M P是I n t e r n e t组管理协议。它用来把一个U D P数据报多播到多个主机。
A R P(地址解析协议)和R A R P(逆地址解析协议)是某些网络接口(如以太网和令牌环网)使用的特殊协议,用来转换I P层和网络接口层使用的地址。
1.3.4 复用和分解(封装和分用)
封装当应用程序用T C P传送数据时,数据被送入协议栈中,然后逐个通过每一层直到被当作一串比特流送入网络。其中每一层对收到的数据都要增加一些首部信息(有时还要增加尾部信息),该过程如图1 - 7所示。
以太网数据帧的物理特性是其长度必须在4 6~1 5 0 0字节之间。

U D P数据与T C P数据基本一致。唯一的不同是U D P传给I P的信息单元称作U D P数据报(UDP datagram),而且U D P的首部长为8字节。由于T C P、U D P、I C M P和I G M P都要向I P传送数据,因此I P必须在生成的I P首部中加入某种标识,以表明数据属于哪一层。为此,I P在首部中存入一个长度为8 b i t的数值,称作协议域。
类似地,许多应用程序都可以使用T C P或U D P来传送数据。运输层协议在生成报文首部时要存入一个应用程序的标识符。T C P和U D P都用一个1 6 b i t的端口号来表示不同的应用程序。T C P和U D P把源端口号和目的端口号分别存入报文首部中。
网络接口分别要发送和接收I P、A R P和R A R P数据,因此也必须在以太网的帧首部中加入某种形式的标识,以指明生成数据的网络层协议。为此,以太网的帧首部也有一个16 bit的帧类型域。
分用当目的主机收到一个以太网数据帧时,数据就开始从协议栈中由底向上升,同时去掉各层协议加上的报文首部。每层协议盒都要去检查报文首部中的协议标识,以确定接收数据的上层协议。这个过程称作分用( D e m u l t i p l e x i n g),图1 - 8显示了该过程是如何发生的。

1.3.5 深层的TCP/IP协议和服务
只要两个应用程序之间通过TCP/IP网络交换数据,它们就会使用TCP/IP所提供的每一个主要层。
这一点,通过使用SMTP的邮件客户往本地服务器上发送邮件就可以看得出来,如图所示。用户使用的电子邮件软件包含本地应用程序专用的代码以分离和显示电子邮件消息,但其他事情全部由网络协议如SMTP、TCP和IP来完成。
数据在不同的层之间传递的同时,包也产生了。它包含两个独立的元素,首部 (header)和数据。当信息通过协议栈往下传时,每一层都会把先前层的信息(包括首部和数据)封装到一个新包中,新包包含新层专用首部和新组合的数据段。这个过程如图1-6所示。
在最底层,物理网络用于在两个网络设备之间传输数据位(所谓的“帧”)的。IP包包含在这些网络专用帧中。IP用在这个过程中的惟一原因是数据可能涉及一些不同的网络拓扑结构,TCP/IP则必须能够一致地寻址和路由传输业务,而不管用的是什么网络。
TCP片段嵌入在IP数据报中,它为正在使用的SMTP应用程序提供了可靠的虚拟电路,TCP所完成的任务有:在两个应用协议终端之间打开一个连接,重新发送丢失的数据,丢弃重复和执行流控制等等。这些工作中的每一个都超出了IP自身的简单发送功能,然而IP作为独立的服务仍然非常常见.
SMTP应用协议包括应用程序专用语义。在这个例子里,可能包含了SMTP命令如“RCPT TO ehall”和应用程序专用响应代码如250(“okay”)。注意SMTP所用的命令和数据都遵守NVT规范,这个规范描述了如何格式化数据,允许的数据类型等等,但所有这些工作都是由SMTP来完成的。
正如我们看到的,TCP/IP组的每一层都对高于和低于它的层提供了特定的功能,并使得整个设计完全模块化。正是模块化使得TCP/IP变得如此强大,也使它变得如此复杂。
1.4 端口号在TCP/IP协议簇中,IP提供在主机之间传送数据报的能力,每个数据报根据其目的主机的IP地址进行在Internet中的路由选择。传输层协议为应用层提供的是进程之间的通信服务。为了在给定的主机上能识别多个目的地址,同时允许多个应用程序在同一台主机上工作并能独立地进行数据报的发送和接收,TCP/UDP提供了应用程序之间传送数据报的基本机制,它们提供的协议端口能够区分一台机器上运行的多个程序。
也就是说,TCP/UDP使用IP地址标识网上主机,使用端口号来标识应用进程,即 TCP/UDP用主机IP地址和为应用进程分配的端口号来标识应用进程。端口号是16位的无符号整数,TCP的端口号和UDP的端口号是两个独立的序列。尽管相互独立,如果 TCP和UDP同时提供某种知名(well-known)服务,两个协议通常选择相同的端口号。这纯粹是为了使用方便,而不是协议本身的要求。利用端口号,一台主机上多个进程可以同时使用TCP/UDP提供的传输服务,并且这种通信是端到端的,它的数据由IP传递,但与IP数据报的传递路径无关。网络通信中用一个三元组可以在全局惟一标志一个应用进程:
(协议,本地地址,本地端口号)
这样一个三元组,叫做一个半相关(half-association),它指定连接的每半部分。一个完整的网间进程通信需要由两个进程组成,并且只能使用同一种高层协议。也就是说,不可能通信的一端用TCP协议,而另一端用UDP协议。因此一个完整的网间通信需要一个五元组来标识,
(协议,本地地址,本地端口号,远地地址,远地端口号)
这样一个五元组,叫做一个相关(association),即两个协议相同的半相关才能组合成一个合适的相关,完全指定一个连接。
前面已经指出过,T C P和U D P采用16 bit的端口号来识别应用程序。那么这些端口号是如何选择的呢?
服务器一般都是通过知名端口号来识别的。任何T C P / I P实现所提供的服务都用知名的1~1 0 2 3之间的端口号。
客户端通常对它所使用的端口号并不关心,只需保证该端口号在本机上是唯一的就可以了。客户端口号又称作临时端口号(即存在时间很短暂)
大多数T C P / I P实现给临时端口分配1 0 2 4~5 0 0 0之间的端口号。大于5 0 0 0的端口号是为其他服务器预留的( I n t e r n e t上并不常用的服务)。
保留端口号
U n i x系统有保留端口号的概念。只有具有超级用户特权的进程才允许给它自己分配一个保留端口号。
这些端口号介于1~1 0 2 3之间,一些应用程序(R l o g i n)将它作为客户与服务器之间身份认证的一部分。
1.5 应用编程接口使用T C P / I P协议的应用程序通常采用两种应用编程接口( A P I):s o c k e t和T L I(运输层接口:Transport Layer Interface)。前者有时称作,Berkeley socket”,表明它是从伯克利版发展而来的。后者起初是由AT & T开发的,有时称作XTI(X/Open运输层接口),以承认X/Open这个自己定义标准的国际计算机生产商所做的工作。XTI实际上是TLI的一个超集。
1.6 小结本章快速地浏览了TCP/IP协议族,介绍了在后面的章节中将要详细讨论的许多术语和协议。
T C P / I P协议族分为四层:链路层、网络层、运输层和应用层,每一层各有不同的责任。
在T C P / I P中,网络层和运输层之间的区别是最为关键的:网络层( I P)提供点到点的服务,而运输层( T C P和U D P)提供端到端的服务。
一个互联网是网络的网络。构造互联网的共同基石是路由器,它们在I P层把网络连在一起。第一个字母大写的I n t e r n e t是指分布在世界各地的大型互联网,其中包括1万多个网络和超过1 0 0万台主机。在一个互联网上,每个接口都用I P地址来标识,尽管用户习惯使用主机名而不是I P地址。域名系统为主机名和I P地址之间提供动态的映射。端口号用来标识互相通信的应用程序。服务器使用知名端口号,而客户使用临时设定的端口号。
第一章重点:
基本网络术语和概念
TCP/IP分层模型及其工作原理
TCP/IP协议族结构复用和分解的原理端口号的概念