【读书笔记】《计算机网络教程:自顶而下方法》(二)协议分层

1.2  协议分层 

  当谈到 Internet 时,我们总能听到的一个词汇就是协议(protocol)。协议定义了发送者、接收 者和所有中间设备为了高效通信需要遵循的规则。当通信简单时,我们可能只是需要一个简单的协 议;当通信复杂时,我们可能需要把任务划分到不同层,每层需要一个协议,也就是说需要协议分 层(protocol layering)。 

   协议分层允许我们将一个复杂的任务分解成几个较小的、简单的任务。例如,在图 1-10 中, 我们可以只使用一台机器完成所有 3 台机器的工作。可是,如果 Maria 和 Ann 判定这台机器所做 的加密/解密不足以保护她们的秘密,那么她们需要更换整台机器。在现在的情况下,她们只需要 更换第 2 层的机器,另外两台机器能够保持不变。这种方法称为模块化(modularity)。在这个示例 中,模块化意味着独立的层次。一层(一个模块)可以定义为一个具有输入和输出的黑盒子,我们 不必关心输入如何变成输出。如果给定相同的输入,两台机器提供相同的输出,那么它们可以相互 替换。例如,Ann 和 Maria 可以从两个不同的厂商购买第 2 层机器。只要这两台机器能把相同的明 文变成相同的密文,相同的密文变成相同的明文,那么它们就可以相互替换。 

  协议分层的优越性之一是它允许我们将服务从实现中分离出来。一层需要能够接收较低层的一 系列服务,同时向较高层提供服务,而我们不关心这一层是如何实现的。

  协议分层的另一个优越性无法在简单的示例中体现,但是当我们讨论 Internet 中的协议分层时能够 展现出来。这个优越性就是通信不只是用于两个端系统,中间系统只需要一些层次而不是所有的层次。 如果不使用协议分层,形成的中间系统就不得不像端系统一样复杂,这样就会提高整个系统的造价。 

  协议分层有不足之处吗?有人说单一层次使工作更加容易。对每一层来说,没有必要向上一层 提供服务并使用下一层的服务。例如,Ann 和 Maria 可以寻找或建造一台机器来完成这三种任务。 可是,正像前面提到的那样,如果某一天她们发现她们的编码被攻破,那么每人都不得不用新机器 替换整个机器,而不是只更换第 2 层的机器。 

  协议分层原则 

  让我们讨论一些协议分层原则。第一个原则就是如果想要双向通信,那么我们需要每一层能够 实现两个相反的任务,每个方向上一个。例如,第 3 层的任务就是听(在一个方向上)和说(在另 一个方向上),第 2 层需要能够加密和解密,第 1 层需要发送和接收邮件。

  在协议分层中我们需要遵循的第二个原则是两端每一层中的两个对象应该相同。例如,两端第 3 层的对象应该为明文信件。两端第 2 层的对象应该为密文信件。两端第 1 层的对象应该为一封邮件。

  逻辑连接 

  在遵循以上两个原则之后,每层之间的逻辑连接如图 1-11 所示。这意味着我们拥有层到层的通 信。Maria 和Ann 可以认为每一层有一个逻辑(想象的)连接,通过这个连接她们可以发送那一层创 建的对象。我们将看到逻辑连接的概念将帮助我们更好地理解数据通信与网络中遇到的分层任务。

  

 1.2.2  TCP/IP 协议簇 

  TCP/IP 是目前 Internet 使用的一个 协议簇(按不同层次组织的协议集)。它是由相互交互的模块组成的一个层次结构协议,每一个模 块提供特定的功能。层次意味着较上层次的协议需要得到一个或多个较下层次协议提供的服务支持。

 

   采用逻辑连接使我们考虑每一层的任务变得比较容易。如图 1-14 所示,应用层、传输层和网 络层的任务是端到端的(end-to-end)。但是,数据链路层和物理层的任务是点到点的(hop-to-hop), 其中一个跳步是一个主机或路由器。也就是说,高三层的任务范围是互联网,低两层的任务范围是 链路。

   另一种理解逻辑连接的方法是考虑每一层创建的数据单元。在高三层,数据单元(分组)不应 该被任何路由器或链路层交换机改变。在低两层,主机创建的分组仅仅被路由器改变,链路层交换 机不改变它们。 

 TCP/IP 各层描述 

  应用层的通信处于两个进程(该层正在运行的两个程序)之间。为了进行通信,一个进程向另 一个进程发送请求,并且接收另一个进程的响应。进程到进程的通信就是应用层的任务。虽然 Internet 的应用层包含了很多预定义的协议,但是也可以在两台主机上运行用户创建的一对进程。

  超级文本传输协议(Hypertext Transfer Protocol,HTTP)是访问万维网(World Wide Web, WWW)的载体。简单邮件传输协议(Simple Mail Transfer Protocol,SMTP)是电子邮件(e-mail) 服务的主要协议。文件传输协议(File Transfer Protocol,FTP)用于将文件从一台主机传输到另一 台主机。远程登录(Terminal Network,TELNET)和安全外壳(Secure Shell,SSH)用于访问远端 的站点。管理员使用简单网络管理协议(Simple Network Management Protocol,SNMP)对 Internet 全局或局部进行管理。域名系统(Domain Name System,DNS)使其他的协议能够查询一台计算 机的网络层地址。因特网组管理协议(Internet Group Management Protocol,IGMP)用于管理一个 组的成员资格。

  传输层的逻辑连接也是端到端的。源主机的传输层从应用层得到消息,封装成传输层的分组(称 为段或用户数据报,不同协议叫法不同),然后进行发送。通过逻辑(想象的)连接,分组到达目 的主机的传输层。也就是说,传输层负责向应用层提供服务:从运行于应用层的程序得到信息,并 将它投递到目的主机相应的应用程序。我们也许要问为什么我们已经拥有了一个端到端的应用层, 还需要端到端的传输层。与我们前面讨论的一样,其主要原因是分割任务与责任。传输层应该独立 于应用层。另外,我们将看到传输层有多个协议,这意味着每个应用程序可以使用与它的需求匹 配的协议。 

  正像我们说的,Internet 中有几个传输层协议,每个都是为一些特定的任务设计的。作为主要 的协议,传输控制协议(Transmission Control Protocol,TCP)是一个面向连接的协议,它在传输 数据之前,首先在两台主机的传输层之间建立一条逻辑连接。TCP 协议在两个 TCP 层之间创建一个管道,以便传输字节流。TCP 协议提供流量控制(匹配源主机的发送数据速率与目的主机的接 收数据速率,以防止目的主机溢出)、差错控制(保证数据段无差错到达目的地和重新发送受损的 数据段)、拥塞控制(减少由于网络拥塞造成的数据段丢失)。另一种常用的协议是用户数据报协议 (User Datagram Protocol,UDP)。UDP 是一种无连接协议,它传输用户数据报之前不需要创建逻辑 连接。在 UDP 中,每个用户数据报是一个独立的实体,它和前一个或后一个用户数据报没有关系 (无连接就是这个意思)。UDP 是一种比较简单的协议,它不提供流量控制、差错控制或拥塞控制。 它的简单性(意味着小的额外开销)对某些应用程序具有吸引力,这些应用程序发送较短的消息且 不能容忍 TCP 在分组损坏或丢失时使用重发机制。流控制传输协议(Stream Control Transmission Protocol,SCTP)是一种新协议,它是为多媒体出现的新应用设计的。

  网络层负责在源计算机和目的计算机之间创建一个连接。网络层的通信是主机到主机的。可是, 由于从源主机到目的主机可能存在多个路由器,因此路径上的路由器负责为每个分组选择好的路 径。我们可以说网络层负责主机到主机的通信,并且指挥分组通过合适的路由器。我们再次问一问 我们自己为什么需要网络层。我们可以在传输层增加路由任务,同时去掉这一层。正像我们前面介 绍的,原因之一是在不同的层次之间分割不同的任务。原因之二是路由器不需要应用层和传输层。 分割任务允许我们在路由器上加载较少的协议。

   Internet 的网络层包括其主要协议:因特网协议(Internet Protocol,IP),因特网协议定义了在 网络层称为数据报的分组格式。IP 同时定义了在这一层使用的地址格式和结构。与此同时,IP 负 责从源主机把一个分组路由到目的主机。这种功能主要是通过每个路由器都将数据报转发到路径上 的下一个路由器而实现的。

   IP 是一个无连接的协议,不提供流量控制、差错控制和拥塞控制服务。这意味着如果一个应 用需要这些服务,那么应用需要依赖于传输层协议。网络层也包括单播(一对一)和多播(一对多) 路由协议。虽然路由协议不参加路由(路由是 IP 的责任),但是它为路由器创建转发路由表,为转 发处理提供帮助。 

   网络层也包含一些帮助 IP 转发和进行路由工作的辅助协议。在路由一个分组时,因特网控制 报文协议(Internet Control Message Protocol,ICMP)帮助 IP 报告遇到的问题。因特网组管理协议 (Internet Group Management Protocol,IGMP)协助 IP 进行多任务处理。动态主机配置协议(Dynamic Host Configuration Protocol,DHCP)帮助 IP 获取一台主机的网络层地址。在网络层地址已知时, 地址解析协议(Address Resolution Protocol,ARP)帮助 IP 寻找一台主机或一台路由器的链路层地 址。

  数据链路层 

  我们已经知道一个互联网是多个链路(LAN 和 WAN)通过路由器连接而构成的。从主机传输数据报到目的地可能存在多个交叠的链路集。路由器负责选择最好的链路进行传输。可是,当路由 器定好需要传输的下一条链路后,数据链路层接管这个数据报并使它穿过这条链路。这条链路可以 是一个具有链路层交换机的有线局域网、一个无线局域网、一个有线广域网或者一个无线广域网。 对于不同链路类型也存在不同的协议。无论哪种情况,数据链路层都要负责通过链路传输分组。

   TCP/IP 没有为数据链路层定义任何特定的协议。它支持所有标准的和私有的协议。能够接管 数据报并携带它穿过链路的任何协议都能满足网络层的要求。数据链路层接管一个数据报并将它封 装在一个称为帧(frame)的分组中。 

封装和解封装 

 多路复用与多路分解 

由于 TCP/IP 协议簇在一些层次使用多个协议,因此我们在源端需要进行多路复用 (multiplexing),在目的端需要进行多路分解(demultiplexing)。在这种情况下,多路复用的意思是一 个协议能够封装来自多个上层协议的分组(一次一个);多路分解的意思是一个协议能够进行解封装, 并且将分组投递到多个上层协议(一次一个)。图 1-18 显示了一个高三层的多路复用与多路分解。 

猜你喜欢

转载自www.cnblogs.com/lankerenf3039/p/12407151.html
今日推荐