TCP-IP 第四版 第二章 OSI模型和TCP/IP协议族

时间:2023-02-10 12:27:24

摘要: 又是一个周末,离开办公地点,回到家就是睡觉,游玩!终究是没有控制住自己。计划的一个月把这边本看完。看来成一个困难了。终于进入到想要内容的步伐了。

  1990年以前,在数据通信和组网文献中占主导地位的分层模型是开放系统互连(Open System interconnection,OSI)模型。当是所有人都认为 OSI模型将是数据通信的最终标准——然而这种情况并未发生。现在 TCP/IP 协议族成为了占主导地位的商用体系结构。因为它已经在因特网中应用。并且通过广泛的测试,而 OSI 模型则从来没有被完全实现过。  本章首先简要地讨论一下 OSI 模型,然后再来关注 TCP/IP 协议族。
目标
本章有以下几个目标:
□ 讨论数据通信和组网中多层结构的思想以及层与层之间的相互关系。
□ 讨论 OSI 模型以及其体系结构,并指出层与层的接口。
□ 简单的讨论一下 OSI 模型中每一层的功能。
□ 介绍 TCP/IP 协议族,并将其层次结构与 OSI模型中相对应的层进行比较。
□ 举例说明 TCP/IP 协议中每一层的功能。
□ 讨论在 TCP/IP 协议族的一些层中为将报文从源点传递到终点而使用的编制机制。

2.1 协议分层

  在第 1 章中我们已经了解到两个实体之间进行通信就需要有一个协议。而当该通信比较复杂时,就有必要将这个复杂的任务划分为多层。此时我们就需要有多个协议,每一个层都有各自的协议。  也许通过一段现实场景的描述可以更好地理解协议分层的作用。下面举两个例子。在第一个例子中,因为通信过程非常简单,所以只需要单层就可以实现。而在第二个例子中则需要有三层。
  例2.1
  假设玛利亚和安是邻居,他们志趣相投。但是玛利亚只会讲西班牙语而安只会说英语。由于她们俩在儿时都曾学过手语。每星期中有两三天他们会抽时间在咖啡馆见面。并用手语交换彼此的观点和想法。偶尔,他们也会使用双语词典。此时的通信是面对面的,只需要单层就可以实现,如图2.1所示:TCP-IP 第四版 第二章 OSI模型和TCP/IP协议族

图2.1 例2.1

  例2.2
  再假设由于工作上的原因,安不得不搬迁到另一个城市。在搬走之前,两人最后一次在咖啡馆见面。虽然都很伤心,但是玛利亚给安带来了一个惊喜,她打开一个小包,里面装着两台机器。第一台机器能够扫面英语写的信,并把信的内容翻译成某种密码,反之也可以将密码翻译成英语。另一台机器则能够将西班牙语写的信息翻译成密码,也能将密码翻译成西班牙语。安带走了第一台机器,而玛利亚留下了第二台机器。通过使用密码,这两个好朋友仍然能够互相通信,如图2.2所示:

TCP-IP 第四版 第二章 OSI模型和TCP/IP协议族

图2.2 例2.2

  玛利亚和安之间的通信过程如下。在第三层,玛利亚用她所擅长的西班牙语写了一封信,然后用那台翻译机扫描信的内容并将其翻译成一封密码信。接着玛利亚吧信放进信封并投入邮局的信箱。邮车会将信送到安居住的城市的邮局。而邮局又会将信投递到安的住所。安用她的翻译机将信中的密码翻译成英语。对于从安到玛利亚的通信过程,其处理方式相同,方向相反。不管是那个方向,信的内容都是用密码来传递的。虽然玛利亚和安都不懂密码。但是通过分层的通信,她们仍然能够交换彼此的想法。

2.1.1 分层结构

  从例 2.2 可知发送方一共完成了三项不同的任务。而接收方也有三项相应的任务。在寄信人和收信人之间传送信件的过程是有邮车完成的。而这些任务必须按照分层中指定的顺序执行。这一点可能不那么显而易见。在发送方,这封信首先必须写好,在翻译成密码。然后在投递到邮箱中,之后再由邮车从邮箱中取出并传递到邮局。在接收方,这封信首先必须要投递到收件人的信箱中,收信人才能是收到信并读取其内容。

2.1.2 服务

  发送方的每一层都要使用下一层所提供的服务。位于最高一层的寄信人使用了中间一层提供的服务。而中间一层使用了最低一层提供的服务,最低一层则使用到了邮车服务。

2.2 OSI 模型

  成立于 1947 年的国际标准化组织(Internet Standard Organization,ISO)是一个躲过团体。专门就一些国际标准达成世界范围的一致。全世界大约有四分之三的国家派代表参加。一个全方位覆盖网络通信问题的 ISO 标准就是开放系统互联(OSI)模型,它最早出现在 20世纪 70 年代后期。

ISO 是个组织;而 OSI 是一个模型

  一个开放系统(Open System)就是一组协议的集合,它使得两个不同的系统之间能够互相通信。而无须考虑其底层体系结构。OSI 模型的作用就是展示两个不同的系统怎么才能做到互相通信。且不需要改进底层的硬件或软件的逻辑。OSI 模型不是一个协议,它是一个为了更好地理解并设计出灵活、稳健且可互操作的网络体系结构而存在的模型。为 OSI 框架中的各种协议的创建提供基础,这才是 OSI 模型的本意。

   OSI 模型是一个分层的框架结构,其目的是为了设计互能够让各种类型的计算机系统相互通信的网络系统。它由七个独立且相关的层组成,而每层都定义了信息通过网络传输的完整过程中的一部分(见图 2.3)。掌握 OSI 模型的基本概念后,就有了学习数据通信的牢固基础。

TCP-IP 第四版 第二章 OSI模型和TCP/IP协议族

图2.3 OSI 模型

2.2.1 分层的体系结构

  OSI 模型是由七个顺序排列的层组成:

  • 物理层(第一层)
  • 数据链路层(第二层)
  • 网络层(第三层)
  • 运输层(第四层)
  • 会话层(第五层)
  • 表示层(第六层)
  • 应用层(第七层)

  图2.4所示为设备 A 把一个报文发送到设备 B的过程中设计到的层。在报文从设备 A 到设备 B 的的途中可能会经过多个中间节点。这些中间节点一般只涉及到 OSI 模型的下三层。

  在开发这个模型时,设计者们首先提取出传输数据过程中最基本的要素,然后进一步判断哪些组网需要配合使用。并将这些功能划分为不同的组。从而形成了这些层。每一层都定义了一组关系密切的工能。并且这些功能与其它层的工能有着显明的区别。用这种方式来定义和定位功能集,社记者们创建出来既有丰富功能又很灵活的体系结构。最重要的是,OSI 模型使得各系统完全可互操作,而没有 OSI 模型这些系统无法兼容。

  处于一台机器上的每一层都要调用紧挨的下一层的服务。例如,第三层使用第二层提供的服务。同时它又向第四层提供服务。而机器和机器之间。从逻辑上看起来像是一台机器中的第 x 层与另一台机器中的第 x 层之间在相互通信。这种通信时由协议来控制的。协议就是事先都同意的一组规定和约定。

TCP-IP 第四版 第二章 OSI模型和TCP/IP协议族

图2.4 OSI 各层

2.2.2 层与层之间的通信

  在图 2.4 中,设备 A 向设备 B 发送报文(经过中间节点)。从发送方看,报文从第 7 层开始一直向下传递到第 1 层。在第 1 层中完整的数据包被转化为可传送到接送设备的形式。从接受方看,报文又从第 1 层开始向上一直传递到第 7 层。

  层之间的接口
  这些数据和网络信息之所以能够在刚发送设备中逐层向下传递。同时又在接受设备中能够逐层向上交付。是因为每对相邻的层之间有一个接口(interface)。每个接口都定义了该层必须向它的上层提供什么样的信息和服务。定义清晰明确的接口和功能可以使网络模块化。只要改层向它的上层提供了预期的服务。层功能的具体是现实可以修改或替换的,而不需要对周围的其它层进行改动。

  层的组织方式
  上述 7 层可看成分属于三个组:

  • 第 1、2 和 3层(物理层、数据链路层和网络层)是网络支撑层,这些层的任务是在物理上把数据从一个设备传送到另一个设备(例如,电气规约、物理连接、物理编制、以及运输的定时和可靠性)。
  • 第5、6 和 7层(会话层、表示层和应用层)可以看成是用户的支撑层,这些层使得一些本来没有关系的软件系统之间有了互操作性
  • 第4 层(运输层)将这两部分连接起来,使得底层所发送的是高层可使用的形式。OSI 的高层肌肤都是用软件来实现的,而底层则是硬件和软件的结合。除了物理层,它的绝大部分是硬件

  图2.5给出了 OSI 各层的概貌,D7 数据表示第 7 层的数据单元,D6 数据表示第 6 层的数据单元,如此类推。处理过程从第 7 层(应用层)开始,然后按降序逐层下传。每一层都可以在数据单元上附加一个首部。在第 2 层还要加上尾部。当这样格式化的数据单元通过物理层(第 1 层)时,就转换为电磁信号并沿着一天物理链路传输。

  到达终点后,信号首先进入第 1 层,并还原为它的数字形式。这个数据单元向上逐层通过 OSI 各层。每个数据块在到达上一层时,相应的发送层所附加的首部和尾部就被移去,然后由该层进行相应的处理,当数据块到达第 7 层时,这个报文就变为应用层所需要的形式,交给接收者使用。

TCP-IP 第四版 第二章 OSI模型和TCP/IP协议族

2.5 使用 OSI 模型交换数据

2.2.3 封装

  图 2.5 揭示了 OSI 模型中数据通信的另一个特点:封装。第 7 层的分组被封装在第 6 层的分组中。整个第 6 层的分组又被封装在第 5 层的分组中,以此类推。

  换而言之,第 N 层的分组的数据部分就是第 N + 1 层的完整分组(数据和开销)。这一概念称为封装,因为第 N层并不知道封装后的分组中的那个部分是数据,哪个首部或尾部,所以对第 N 层来说,从第 N +1 层传来的整个分组被看做是一个整体。

2.2.4 OSI 模型中的各层

  在本节中,我们将简要地叙述OSI 模型中各层的工能。

  物理层
  物理层(physical layer) 协调通过物理媒体传送比特流时所需要的各种功能。物理涉及到接口和传输媒体的机械和电气规约。它还定义了这些物理设备及接口为了实现传输必须完成的过程和功能。

物理层负责把逐个的比特从一跳(节点)移动到下一跳。
物理层关心的是一下一些内容
接口和媒体的物理特征 物理层定义了设备与传输媒体之间的接口特征。它还定义了传输媒体的类型(见第 3 章)
比特的表示 物理层的数据由一串没有任何解释的比特(bit)流(0 和 1的序列)组成。发送时,比特必须经过编码变成信号——电的或光的。物理层对编码(encoding)的类型也进行了定义(即 0 和 1 怎么变为信号)
数据率 传输速度(transmission rate) 即每秒发送的比特数,也在物理层定义。换言之,物理层定义一个比特的持续时间
比特的同步 发送设备和接收设备不接要使用同样的比特率,而且还要在比特级进行同步。换言之,发送设备和接收的时钟必须是同步的
线路配置 物理层要考虑到设备与媒体的链接。点对点配置(point-to-point configuration)时两个设备通过专用链路链接在一起。多点配置(multipoint configuration)是若干个设备供共享一条链路
物理拓扑 物理拓扑定义了设备如何连成一个网络。设备的链接可使用
网状拓扑(mesh topology,每一个设备都和其它所有设备链接),
星装拓扑(star topology,所有设备都通过*设备来连接),
环装拓扑(ring topology,每一设备都连接到下一个设备都通过*设备来管理),
总线拓扑(bus topology,所有设备都在一个公共链路上)等方式。
传输方式 物理层还定义了两个设备之间的传输方向:单工、半双工或全双工。
单工方式(simplex mode)下,只有一个设备可以发送,另一个设备只能接受。单工方式是一种单项通信。
半双工方式(half-duplex mode)下,两个设备都可以发送和接收,但不能在同一时间进行。
全双工方式(full-duplex mode,或简称为双工方式)下,两个设备可在同一时间发送和接收。

  数据链路层
  数据链路层(data link layer)把物理层(即原始的传输设施)转换为可靠的链路。它使物理层对上层(网络层)看起来好像是无差错的。数据链路层的任务包括:

组帧 数据链路层把从网络层收到的比特流划分成可以处理的数据单元,称之为(frame)
物理编址 如果这些帧需啊哟发送给本网络内的另一个系统,那么数据链路层就要在帧上附加一个首部,指明帧的发送方会 和/或 接收方。如果这个帧要发送给本网以外的一个系统,则接收方地址当是连接本网络和下一个网络的链接设备的地址。
流量控制 如果接受方吸收数据的速率小于发送产生的速率,那么数据链路层就应使用流量控制机制来预防接收方因过负荷而无法工作
差错控制 数据链路层增加了一些措施来检测并重传受损伤或丢失的帧,因而是物理层增加了可靠性。他还采用了某种机制老是被重复的帧。差错控制通常是在一个帧的后面加上一尾部来实现。
接入控制 当两个或更多的设备链接到同一条链路时,数据链路层就必须定任一时刻该由那个设备对链路有控制权

  网络层
  网络层(network layer)负责把分组从源点交付到终点,这可能要跨越多个网络(链路)。如果说数据链路层监督的同一个网络(链路)上的两个系统之间的分组交付。那么网络层要确保每个分组从源点出发并最终抵达目的地。

  如果两个系统连接到同一条链路上,则一般来说就不需要网络层了。但是,如果两个系统连续在不同的网络(链路)上,而这些网络(链路)是由一些连接设备连接起来的,那么就需要网络层来完成从源点到终点的交付。数据链路层的任务包括。

逻辑地址 由数据链路层实现的物理编址处理的是本地寻址问题。如果分组穿过了网络的边界,我们就需要另一种编址系统来帮助我们区分源系统和目的系统。网络层给从上层传来的分组附加一个首部。其中包括发送方和接收方的逻辑地址,以及其它一些信息。
路由选择 当多个独立的网络或链路互相连接组成互联网(网络的网络)或组成一个更大的网络时,这些连接设备(称为路由器或交换机)就要为数据分组选路或交换以到到它们的最终目的地。网络层的功能之一就是提供这种机制

  运输层
  运输层(transport layer)负责完整报文的进程到进程的交互(process-to-process delivery)。进程是运行在主机上的应用程序。网络管理的是单个分组从源点熬终点的交付(source-to-destination delivery),它并不考虑这些分组之间的关系。网络层独立地处理每个分组,就好像每个分组属于独立的报文那样。而不管是否真的如此。运输层则要保证整个报文原封不动地按顺序到达,它要监督从源点到终点这一级的差错控制和流量控制。运输层的任务包括:

服务点编址 计算机往往在同一时间运行多个程序。因此,从源点到终点的交付并不仅仅是从某一个计算机交付到另一个计算机,同时还指从某个计算机上的特定进程(运行着的程序)交付到另一个计算机上的特定进程(运行着的程序)。因此,运输层的首部必须包括一种称为 服务店点地址(或端口地址)的地址。网络层将各分组送抵正确的计算机。而运输层则将完整的报文递交给该计算机上的正确进程。
分段和重装 一个报文被划分成若干个可传输的报文段,每个报文段应包含一个序号。在报文到达中终点是,运输层利用这些序号能够把它们重装起来,同时对在传输时就是的分组也能够识别并替换为正确的分组。
连接控制 运输层可以是无连接的, 也可以是面向连接的。无连接的运输层把每个报文段看成是独立的数据报,并把报文段交付给终点设备上的运输层。面向连接的运输层在发送报文段之前,先要与终点设备上的运输层建立一条连接。当全部数据都传送完毕后,连接被释放掉。
流量控制 如同数据链路层一行,运输层也要负责流量控制。不同的是运输层的流量控制是端到端的,而不是单条链路上的流量控制。
差错控制 如同数据链路层一样,运输层也要负责差错控制。不同的是运输层的差错控制是端到端的,而不是只限于单条链路上的差错控制。发送端的运输层必须确保整个报文没有差错(即无损伤、无丢失、无重复)地到达接收端的运输层。纠错通常通过重传来完成。

  会话层
  对某些进程来说,下四层(物理层、数据链路层、网络层和运输层)提供了服务还不够充分。会话层(session layer)就是网络的对话控制器。它用于建立、维持并同步正在通信的系统之间的交互。会话层的具体任务包括:

对话控制 会话层允许两个系统进入对话状态。它允许两个进程之间按半双工(在某个时刻单向通信)或全双工(在某个时刻双向通信)方式进行。
同步 会话层允许进程在数据流中插入若干个检查点(同步点)。例如,如果某系统要发送一个 2000页的文件,那么可以在每 100页后面插入一个检查点,这样就保证了以每 100页为一个单元的数据独立地连接和确认。在这种情况下,如果传输第 523页时计算机 崩溃了,那么系统恢复后只需要重传 501-523页。第 501页以前的就不需要重传了。

  表示层
  表示层(presentation layer)考虑的问题是两个系统所交换的信息的语法和语义。表示层的具体任务有一下一些:

转换 分别位于两个系统上的进程(运行着的进程)所交换的信息的形式通常都是字符串、数字等等等。这些信息在传输之前必须变为比特流。由于不同的计算机使用不同的编码系统,表示层的任务就是在这些不同的编码方法之间提供互操作性。发送方的表示层把信息从与发送方相关的格式转成一种公共的格式,而接收方的表示层把这种公共的格式转换为与接收方相关的格式。
加密 为了携带敏感信息,一个系统必须能够做到保密。加密是发送发把原始信息转成另一种形式,然后将转换后的报文发送到网络上。解密就是把原过程反过来,把加密信息恢复成原来的形式。
压缩 数据压缩减少了信息总所包含的比特数。在传输多媒体信息(如文本、声音和视像)时,数据压缩就特别重要。

  应用层
  应用层(application layer)让用户(不管是人还是软件)能够介入网络。应用层给用户提供了接口,也提供了多种服务支持,如电子邮件、远程访问和传送、共享数据库管理。以及其它多种的分布式信息服务。应用层提供的特定服务有以下一些:

网络虚拟终端 网络虚拟终端是物理终端的软件版本,用来使用户能够登陆到远程主机上。为此,这个应用程序穿件一个软件对远程主机的终端进行仿真。用户的计算机先与这个软件终端交谈,然后这个软件终端再和主机交谈,反之亦然。远程主机认为它正在和自己的和自己的终端交谈。因此就允许你进行登录。
文件传送、存取和管理(FTAM) 这个应用允许用户访问远程计算机的文件(改变数据或读取数据)、将文件从远程计算机读取到本地计算机上来使用以及在本机在本机上管理和控制远程计算机中的文件
邮件服务 这个应用程序提供转发和存储电子邮件的基本功能
名录服务 这个应用程序提供分布式数据库源,以及对全球各种对象和服务信息的存取

2.2.5 OSI 各层小结

  图 2.6 归纳总结了每一层的任务。下一节我们会讲到,有一部分认识是如何在 TCP/IP 协议族中被混合并重新划分五类。

TCP-IP 第四版 第二章 OSI模型和TCP/IP协议族

图2.6 OSI 七层结构小结

2.3 TCP/IP 协议族

  TCP/IP 协议族的开发要比 OSI 模型更早,因此 TCP/IP 协议族的封层结构无法准确地与 OSI 模型一一对应。原始的TCP/IP 协议族定义为建立在硬件基础上的四个软件层,不过目前 TCP/IP 协议族被认为是一个五层的模型,其层的命名类似于 OSI 模型中相应的层。图 2.7分别描述了这两种机构。

TCP-IP 第四版 第二章 OSI模型和TCP/IP协议族

图2.7 TCP/IP 协议族的分层结构

2.3.1 OSI和TCP/IP 协议族的比较

  当我们比较这两个模型时会发现,在 TCP/IP协议族中没有会话和表示这两层。即使在OSI 模型发布后,TCP/IP 协议族也没有因此而增加这两层。在TCP/IP协议族通常认为应用层时OSI 模型的最高三层的合并。如图 2.8所示。

TCP-IP 第四版 第二章 OSI模型和TCP/IP协议族

图2.8 TCP/IP 和 OSI 模型

  采用这一决定的理由有两个。首先,TCP/IP 有多个运输层协议,而会话层的某些功能在一些运输层协议中已具备。其次,应用层并不仅仅是一个软件,这一层允许开发的应用程序有很多。如果特定的应用程序需要用到会话层和表示层中某些相应的功能,那么这些功能也可以包含在该应用软件中进行开发。

  TCP/IP 是一种分层协议,它由多个交互的模块构成,每个模块都提供了特定的功能,但是这些模块并不是必须相互依赖的。OSI 模型具体规定了那一层应该具有哪些功能,而 TCP /IP 协议族的每一层则包含的是一些相对独立的协议。可以根据系统的需要把这写协议混合并重新搭配使用。术语“层次化”指的是每一个上层协议都是由一个或多个下层协议来支持。

2.3.2 TCP/IP 协议族的分层

  本节我们简单地讨论一下 TCP/IP 协议族中的各层的作用。在研究每一层所起的作用时,考虑一个专用的互联网要比考虑全球因特网更加简单。我们假设在一个小型的专用互联网内使用 TCP/IP 协议族。这种互联网是由若干个小型的称之为链路的网路组成的。一条链路(link)就是允许一组计算机互相通信的一个网络。例如,一个办公司的所有计算机都通过网线连接在一起,这种连接关系就形成了一条链路。若某私人企业中的若干台计算机通过卫星信道互相连接,此链接也是一条链路。就像我们将在第 3 章中讨论的那样,一条链路有可能是服务小范围区域的 LAN(局域网),也有可能是服务很大范围区域的 WAN(广域网)。我们还要假设不同链路通过称为路由器或者交换机的设备连接在一起,这些设备会为数据选路一送抵他们最终的目的地。图 2.9 所示为我们虚构的一个互联网,用来说明 TCP/IP 各层的作用。图中的六条链路和四个路由器(R1 到 R4)。在这幅图中只画出了两台计算机,计算机 A和计算机 B。

TCP-IP 第四版 第二章 OSI模型和TCP/IP协议族

图2.9 一个专用的互联网

  物理层
  在物理层,TCP/IP 没有定义任何特定的协议。它支持所有标准和专用的协议。在这一层,通信发生在两跳或两个节点之间,可能是计算机,也可能是有路由器。通信以比特为单位。当两个节点之间建立连接后,就会有一个比特流在它们之间流动。但是对于物理层来说每个比特都被独立的对待。图2.10所示为节点之间的通信。我们假设此时两台计算机都已知道了与对方通信的最有效率路劲是经过路由器 R1、R3、和R4。至于如何知道则属于后面的章节所要讨论的内容。

  请注意,如果一个节点与 n 条链路相连,那么它需要 n 个物理层协议,每条链路个需要一个,原因在与不同的链路可能是使用不通的物理层协议。图中只显示了此次通信所涉及得到的物理层,每台计算机仅涉及一条链路。而每台路由器仅涉及两条链路如图 2.10所示,这些比特在计算机 A 和 计算机 B之间的旅程是由四个独立的短途旅行构成的。计算机 A 以链路 1 所使用的协议格式向路由器 R1 发送个比特。路由器 R1 以链路 3 所使用的协议格式想路由器 R3 发送这些比特,依次类推。路由器 R1 有三个物理层(在我们假设的场景中只显示了两个),连接到链路 1 的物理层根据链路 1 所使用的格式来接收这些比特,连接到链路 3 的物理层根据链路 3 所使用的协议的格式来发送这些比特。此次通信过程中涉及的其它两个路由器的情况也与此相同。

TCP-IP 第四版 第二章 OSI模型和TCP/IP协议族

图2.10 在物理层上的通信

物理层的通信单位是比特。

  除了传送比特之外,物理层的其它任务也与 OSI 模型的物理层相对应,且主要取决于提供链路的底层技术。例如,在下一章中我们就会看到局域网和广域网的物理层有很多协议可用。

  数据链路层
  TCP/IP 没有为数据链路层定义任何特定的协议。它支持所有的标准和专用的协议。在这一层,通信仍然发生在两跳或两个结点之间,不过通信的单位却是称为
的分组。一个帧机就是封装了来自网络层的数据的分组。并为去附加一个首部。有时还再加一个尾部。在首部中,除了一些在通信时需要用到的信息之外,最主要的是包含了这个帧的源地址和目的地址。目的地址是为了指明正确的接收者,因为连接到该链路上的节点很可能不止一个,而有了源地址擦可以实现某些协议所要求的响应或确认。图 2.11 显示了数据链层上的通信。

  请注意,在计算机 A 和路由器 R1 之间传递的帧有可能不同于路由器 R1 到路由器 R3之间传递的帧。当路由器 R1 接收到一个帧后,就会将其交给数据链路层协议。如图中 R1 左侧所示,该帧就会被打开,数据被卸下。然后将这个数据交个 R1 右侧的数据链路层协议,从而生成一个将要发送到路由器 R3的新帧。这样做的原因在于这两条线路(链路 1 和链路 3)可能使用不同的协议且要求不同格式的帧。还要注意,图中没画出这些帧的物理传输过程。因为物理上的传输只发生在物理层。这两个节点上的数据链路层之间的通信时逻辑上的,而非物理上的。换言之,路由器 R1上的数据链路层认为帧是从计算机 A的数据链路层直接发送过来的,而实际上真正从 A发到 R1 的是一个比特流,它从 A 的物理层达到 R1 的物理层。因为在计算机 A 上,帧被转化成一个比特流,而到了路由器R1,这个比特流又被转换回帧,所以在两个数据链路层看来,它们之间交互的就是一个帧。

TCP-IP 第四版 第二章 OSI模型和TCP/IP协议族

图2.11 数据链路层的通信

数据链路层的通信单位是帧。

  网络层
  在网路层(或者更准确的说是互联网层),TCP/IP 支持的是网际协议。网际协议(Internet Protocol,IP)是TCP/IP协议使用的传输机制。IP 传输的是称为 数据报(datagram)的分组,每个数据报独立传输,不同的数据报可以走不同的路由,也可能不按顺序地到达,也可能会重复。IP不会跟踪记录这些数据报经过的路由,并且在它们到达终点后,IP 也不具有按原属顺序重排的能力。图 2.12所示为网络层上发生的通信。

TCP-IP 第四版 第二章 OSI模型和TCP/IP协议族

图2.12 网路层上的通信

  需要注意的网络层的通信与数据链路层或物理层的通信之间有一个很大的区别。网络层上通信是端到端的通信,而在另外两层的通信是节点到节点。从计算机 A 出发的数据报就是最后到达计算机 B 的数据报。路由器上的网络层可以查看分组中的源地址和目的地址以查找最佳路由,但不允许更改分组中的内容。当然,此通信也是逻辑上的,而非物理上的。虽然计算机 A 和 B 的网络层认为它们正在发送和就收数据报。大真正的通信过程发生在物理层。

网络层的通信单位是数据报。

  运输层
  在运输层和网络层之间有一个重要区别,那就网路中的所有节点都必须具有网络层,但只有两端的计算机上才需要运输层。网络层负责就给你一个个数据报独立的从计算机 A 发送到计算机 B。为运输层则要负责将完整的报文(也称为报文段、u哦能过户数据或分组)从计算机 A 交付到计算机 B。一个报文段可能包含了几个到几十个数据报。报文段先要被拆分为多个数据报,然后在将这些数据报分别递交给网路给网络层来传输。因为网际协议会为每个数据报指定不同的路由,所以这些数据报有可能会失序到达,也有可能丢失。计算机 B 的运输层需要等所有的数据报全部抵达后进行重装,从而得到报文段。图 2.13所示为发生在运输层的通信过。

TCP-IP 第四版 第二章 OSI模型和TCP/IP协议族

图2.13 运输层的通信

  同理可知,两个运输层会简单的认为他们之间正在用报文段互相通信,而事实上真正的通信发生在物理层,企鹅别交互的是比特。

  传统上, TCP/IP 协议族中有两个运输层协议:用户数据报协议(User Datagram Protocol,UDP)和 传输控制协议(Transmission Control Protocol,TCP)。近几年又出现一种新的运输层协议称为流控制传输协议(Stream Control Transmission Protocol,SCTP)

运输层的通信单位可以是报文段、用户数据报或者是分组,
取决于运输层使用的具体协议

  应用层
  TCP/IP 中的应用层相当于 OSI 模型中会话层、表示层和应用层的组合。应用层使用户能够获得网络锁提供的服务,不论是此处所举的专用互联网还是全球因特网。这一层定义了许多协议以提供诸如电子邮件、文件传送以及访问全球万维网的服务。我们在将在后面的章节讨论其中的大部分标准协议。图 2.14 所示为发生在应用层的通信过程。

TCP-IP 第四版 第二章 OSI模型和TCP/IP协议族

图2.14 应用层上的通信

  注意,应用层的通信与运输层的通信不一样,都是端到端的。由计算机 A 生成的报文无修改的被传送到计算机 B。

应用层的通信单位是报文

2.4 编址

  实施了 TCP/IP 协议的互联网需要用到四个级别的地址:物理地址(physical address)、逻辑地址(logical address)、端口地址(port address)和特定的应用地址(application-specific address)。每种地址都与 TCP/IP体系结构中的某一层相关,如图 2.15所示。

TCP-IP 第四版 第二章 OSI模型和TCP/IP协议族

图2.15 TCP/IP 协议族中的地址

2.4.1 物理地址

  物理地址也称为链路地址,是有节点所在的局域网或广域网为该节点指定的地址。物理地址包含在数据链路层所使用的帧中。物理地址是最低一级的地址。物理地址仅对链路(局域网或广域网)有。这种地址的长度和格式随网络的不同而变化。例如,以太网使用写在网络接口卡(NIC)里的 6 字节(48位)的物理地址。而 LocalTalk(苹果公司)则使用一个字节的动态地址,它在站点每次入网时动态变化。

  例 2.3
  在图 2.16中,物理地址为 10的节点想物理地址为 87 的节点发送一个帧。这两个节点通过一条链路(局域网)相连接。在数据链路层,帧的首部中包含了这两个物理(链路)地址,它们是此处唯一需要用到的地址。首部的其余部则包含的是这一层需要的其它一些信息。帧的尾部通常包含的是用于差错检查的一些附加位。如图所示,物理地址为 10的计算机是发送方,物理地址为 87 的计算机是接收方。发送方的数据链路层收到来自上一层的数据。通过附加一个首部和一个尾部,它将数据封装成一个帧。在首部中带有接收方和发送发的物理(链路)地址,以及其它一些信息。请注意,在大多数数据链路协议中目的地址(此处为 87)是放在源地址(此处为 10)前面的。这个帧通过局域网传播。每个物理地址不是 87 的站都会丢掉这个帧,因为帧中的目的地址与自己的物理地址不匹配,而正真的目的计算机会发现该帧中的物理地址与自己的物理地址完全匹配。于是这个帧经过检查后就被卸掉首部和尾部进行解封,解封后的数据部分被交付给上一层。

TCP-IP 第四版 第二章 OSI模型和TCP/IP协议族

图2.16 例2.3:物理地址

  例 2.4
  我们将在第 3 章中看到,绝大多数局域网使用 48位(6自己)的物理地址,并写成 12个十六进制的数字,每个字节(两个十六进制数字)之间用一个冒号分隔开,如下所系。

TCP-IP 第四版 第二章 OSI模型和TCP/IP协议族

  单播、多播、和广播物理地址
  物理地址可以是单播(unicast,耽搁接收者)、多播(multicast,一组接收者)或广播(broadcast,有网络中的所有系统接收)。有些网络支持所有的三种网络。例如以太网(见第 3 章)支持单播物理地址(6 字节)、多播地址和广播地址。有些网络则不支持多播或广播地址,此时如果必须把帧发送给一组接收者或网络中的所有系统时,多播或广播地址必须用单播地址来模拟,也就是说要用单播地址发送多个分组。

2.4.2 逻辑地址

  逻辑地址是对底层无力网络无关的全局通信来说必不可少的。在一个网际互连环境下,仅仅有物理地址还是不够的,因为不同的网络可以使用不同的地址格式。我们需要一种全局性的编址系统用唯一的标志每台主机,做到与底层的物理网络无关。逻辑地址就是为此而设计的。目前因特网的逻辑地址是一个 32 为地址,可以用来唯一地标志连接在因特网上的每一台主机。在因特网上不存在两台具有相同 IP 地址的公开编址的实体主机。

  例 2.5
  图 2.17 所示为一个互联网的一部分,它由两台路由器连接三个局域网。

TCP-IP 第四版 第二章 OSI模型和TCP/IP协议族

图2.17 例2.5:逻辑地址

  每个设备(计算机或路由器)在每条连接上都有一对地址(逻辑的和物理的)。在本例中,两台计算机只连接了一条链路,因而只有一对地址。不过每个路由器都连接到三个网络上(图中只显示两个),因此每个路由器都有三对地址,一条连接对应一对地址。虽然很容易理解为什每个路由器必须为每条连接设置一个独立的物理地址,但是为什么每条连接都需要一个独立的逻辑地址呢?这一点可能不太好理解。我们将在第 11 章 和 第 12章讨论路由器选择时在讨论这个问题。

  网络地址为 A,物理地址为 10 的计算机需要向网络地址为 P,物理地址为 95 的计算机发送一个分组。这里我们用字母来表示逻辑地址,用数字来表示物理地址,但请注意实际上他们都是数字形式的,我们将稍后的章节再详细说明。

  发送方在网络层将数据封装入一个分组中,并加入两个逻辑地址 ()A和P )。注意在大多数协议中,逻辑源地址是出现在逻辑目的地址之前的(与物理地址的顺序正好相反)。网络层的必须先找出下一跳的物理地址才能传递这个分组。网络层咨询它的路由表(参见第 6 章),并找出下一跳(路由器 1)的逻辑地址是 F。另外还有一个称为地址解析协议(Address Resolution Protocol,ARP)的协议,它会找出与该逻辑地址相对的是路由器 1 的物理地址(20),这个协议我们将在后面的章节介绍。现在网络层就可以将这个地址传递给数据链路层了,再由数据链路层以物理目的地址 20和物理源地址 10 来封装这个分组。

  局域网 1 上的所有设备会接受到这个帧,但除了理由起 1 之外,其他的路由器都会选择丢弃该帧,因为只有路由器 1 发现该帧中的物理地址和自己的物理地址是相匹配的。路由器 1 将该帧解封后得到数据分组,并读出其逻辑目前地址是 P。由于这个逻辑目的的地址是与路由器 1 的逻辑地址不匹配,路由器 1 就知道还要继续转发这个分组。路由器 1 也咨询它的路由表,而 ARP再次找出下一跳(路由器 2)的物理地址,然后又创建一个新的帧将这个分组再次封装起来,并将其发送到路由器 2。

  请注意这个帧的物理地址。物理原地址是从 10 更新为 99,物理目标地址从 20(路由器 1 的物理地址)更新为 33(路由器 2 的物理地址)。逻辑源地址和逻辑目的地址必须保持不变,否则这个分组就会丢失了。

  在路由器 2 我们有看见了类似的场景。物理地址的更新,而一个新的帧被发往目的计算机。当这个帧抵达终点后,分组被解封出来。逻辑目的地址 P与该计算机的逻辑地址相匹配。分组解封后得到的数据被交付给上一层。请注意,虽然物理地址逐条而变,但逻辑地址从源点到终点一直保持不变。这条规则也有一些例外的情况,我们将在本书稍后的地方讨论。

物理地址逐条而变,逻辑地址保持不变。

  单播地址、多播地址和广播地址
  逻辑地址可以是单播地址(单个的接受着)、多播地址(一组接收者)和广播地址(网络中所有的系统)。广播地址有限制的。

  端口地址
  IP 地址和物理地址对于将批量数据从源主机发送到目的主机来说是必不可少的,但到达目的主机并不是因特网数据通信的最终目标。一个系统若只是从一台计算机向另一台计算机发送数据,那任务还没有完成。如今的计算机是一种更可以在同一时间运行多个进程的设备。因特网通信的最终目标是是一个进程能够和另一进程通信。例如,计算进 A 能够与计算机 C 用 TELNET 进行通信。榆次同时,计算进 A 能够与计算机 B 用 FTP 通信。为了是这些进程能够同时接受数据,我们需要用一种方法对不同的进行打上标记。换言之,这些进程也需要有地址。在 TCP/IP 体系结构中,给一个进程指派的标号成为端口地址。TCP/IP 中的端口地址长度是 16位。

  例2.6
  图 2.18 所示为通信因特网正在通信的两台计算机。此时,正在发送数据的计算机上运行着三个进程,其端口地址分别是 a、b和c,而正在接受的数据的计算机上则运行着两个程序,其端口地址分别是 j 和 k。发送计算机上的进程 a 需要与接受计算机上的进程 j通信。注意,虽然两台计算机使用的是相同的应用程序,譬如 FTP,但他们的端口地址却是不同的,因为一个是客服端程序,另一个是服务器程序(参见第 17 章)。为了说明来自进程 a 的数据需要交付给进程 j,而不是进程 k,运输层要将来自应用层的数据封装成一个分组,并加入两个端口地址(a和j),源端口地址和目的端口地址。来自运输层的分组到了网络层又与逻辑源地址和逻辑目的地址(A和P)一起被封装成一个新的分组。最后,这个分组再次与物理源地址和下一跳的物理目的地址被封装成一个帧。在图中没有显示出物理地址,因为这些物理地址在标记为因特网的图示中是逐条变换的。请注意,虽然物理地址逐条而变,但逻辑地址和端口地址始终保持不变。这条规则也是有一些例外的情况,将在本书稍后的地方讨论。

TCP-IP 第四版 第二章 OSI模型和TCP/IP协议族

图2.18 例2.6:端口号

物理地址逐条而变,但逻辑地址和端口地址通常保持不变

  例 2.7
  我们将在后面的章节中看到,端口地址是一个十进制数表示的 16为地址,如下所示。

TCP-IP 第四版 第二章 OSI模型和TCP/IP协议族

  特定应用地址
  有些应用程序具有专门为其量身定制的用户友好型地址。这样的例子包括电子邮递地址(如 forouzan@fhda.edu)和URL(如www.mhhe.com)。第一地址指定了一份电子邮件的接收者第二地址用来找到万维网中的一份文档。但是就像在后面章节将要看到的那样,发送数据的计算机会将这些地址统统转为相应的端口地址和逻辑地址。

本章小结

  • □ 国际标准化组织(ISO)创建了一个称为开放系统互联(OSI)的模型,它使得不同系统之间可以相互通信。七层 OSI 模型为开发普遍兼容的连网协议提供了指导。物理层、数据链路层和网络层是网络支撑层。会话层、表示层和应用层是用户的支撑层。运输层吧网络支撑层和用户支撑层连接起来。
  • □ 物理层协调在物理媒体上传比特流的各种功能。数据链路层负责把数据单元无差错的从一个站交付到下一站。网络负责层跨越多个网络链路的源点到终点的分组交付。会话层用于建立、维持并同步正在通信的系统之间的交互。表示层通过把数据转换成双方同意的格式,确保相互通信的设备之间的互操作性。应用层使用户能够接入到网络。
  • □ TCP/IP 是在OSI 模型之前开发的具有分层体系的五层协议族。TCP/IP 的应用层相当于 OSI 模型的会话层、表示层及应用层的合体。
  • □ 使用 TCP/IP 协议的系统需要四种类型的地址:物理地址,网际协议地址(IP 地址)、端口地址和特定应用地址。物理地址又称为链路地址,是有节点所在的局域网或广域网为该节点指定的地址。IP 地址唯一地定义了因特网的一台主机。端口地址指明主机上的进程。特定应用地址被某些应用程序用来提供用户友好式接入。

  PPT 第二章节和第一章节的图