读书频道 > 网络 > 计算机网络教程:自顶向下方法
1.2.2 TCP/IP协议簇
2012-12-29 11:16:50     我来说两句 
收藏    我要投稿   
本书作者Forouzan是计算机教育领域的知名专家,他在这本经典著作中,利用Internet协议分层和TCP/IP协议簇,采用自顶向下的方法,首先说明应用层协议是怎样交换信息的,再解释消息是怎样分解成比特和信号并通过In...  立即去当当网订购

在第2个场景中,我们了解了协议分层与层间逻辑连接的概念,现在介绍TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/互联网协议)。TCP/IP是目前Internet使用的一个协议簇(按不同层次组织的协议集)。它是由相互交互的模块组成的一个层次结构协议,每一个模块提供特定的功能。层次意味着较上层次的协议需要得到一个或多个较下层次协议提供的服务支持。初始的TCP/IP协议簇在硬件基础上定义了4个软件层次。但是,目前TCP/IP通常是一个5层模型。图1-12显示了这两种情况。


 

层次化结构

为了展示如何利用TCP/IP协议簇的层次在两台主机之间进行通信,我们假设将协议簇用于一个由3个局域网(链接)组成的小型互联网,每个局域网拥有一个链路层交换机。同时我们假设局域网连接到一个路由器,如图1-13所示。


 

我们假设计算机A与计算机B进行通信。正像图1-13中显示的那样,在这个通信中涉及5个通信设备:源主机(计算机A)、链路1的链路层交换机、路由器、链路2的链路层交换机和目的主机(计算机B)。按照设备在互联网中扮演的角色不同,每一台设备包含了几个层次。两台主机包含了所有5个层次;源主机需要在应用层创建一个信息并把它发送到下层,以便把该信息物理上发送到目的主机。目的主机需要在物理层接收这个信息,然后通过其他层投递到应用层。

路由器只涉及3层;只要路由器仅仅作为路由选择,在路由器中就没有传输层或应用层。虽然一个路由器总是拥有一个网络层,但是它涉及n个数据链路层和物理层的组合,其中n为路由器连接的链路的数目。其主要原因是每一个链路可以使用它自己的数据链路或物理层。例如在图1-13中,路由器拥有3条链接,但是从源A发送到目的地B的消息涉及两条链接。每一条链接可以使用不同的链路层和物理层协议;路由器需要从基于一对协议的链路1接收分组并将它投递到基于另一对协议的链路2。

可是,在一条链路上的链路层交换机只涉及两个层次:数据链路层和物理层。尽管图1-13显示的交换机拥有两个不同的连接,但是这两个连接在同一链路上,它们只使用一个协议集。这意味着链路层交换机与路由器不同,它只涉及一个数据链路层和一个物理层。

TCP/IP协议簇中的层次

在进行前面的介绍之后,我们来简单讨论TCP/IP协议簇中层次的功能和任务。接下来的6章将对每一层进行详细讨论。为了更好地理解每一层的任务,我们首先需要知道在层次间存在的逻辑连接。图1-14显示了简单互联网的逻辑连接。


 

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

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

图显示了前面讨论的协议分层的第二个原则。我们看一看与设备相关的每一层之下的对等体。

注意,尽管网络层的逻辑连接在两个主机之间,但是由于一个路由器在网络层对分组进行分片,并且发送的分组比接收的多(见第4章分片部分),因此在这种情况下,对等体只存在于两个跳步之间。


 

TCP/IP各层描述

理解逻辑通信的概念之后,我们简单讨论各层的主要任务。本章的讨论将非常简单,不过我们会在接下来的6章继续讨论各层的功能与任务。

应用层

如图1-14所示,两个应用层之间的逻辑连接是端到端的。两个应用层之间仿佛存在一座桥梁一样相互交换消息。可是,我们应该明白通信需要通过所有层次完成。

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

超级文本传输协议(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)用于管理一个组的成员资格。我们将在第2章讨论这些协议的大部分,其他协议在另外一些章节讨论。

传输层

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

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

数据链路层

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

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

每个链路层协议可能提供不同的服务。有些链路层协议提供完整的检查和纠错,有些只提供纠错。我们在第5章讨论有线链路,在第6章讨论无线链路。

物理层

我们可以说物理层负责携带一个帧中单独的比特穿过链路。尽管物理层位于TCP/IP协议簇的最底层,但是由于在物理层之下存在另外一个隐藏的传输介质层,因此两个设备物理层之间的通信仍然是逻辑通信。两个设备通过一种传输介质(电缆或大气)连接。我们需要知道传输介质不携带比特;它携带电或光信号。所以,从数据链路层接收的一个帧的比特需要被变换,然后通过传输介质传输。但是我们可以认为两个设备物理层之间的逻辑单元是一个比特(bit)。将一个比特变换成一个信号存在多种协议。我们将在第7章讨论物理层和传输介质时讨论这些内容。

封装和解封装

在Internet协议分层中,一个重要的概念是封装/解封装。图1-16显示了图1-13给出的小型互联网的封装/解封装情况。


 

由于在链路层交换机中没有封装/解封装发生,因此我们没有显示链路层交换机的层次。在图1-16中,我们显示了源主机中的封装、目的主机的解封装,以及路由器的封装和解封装。

源主机的封装

在源主机端,我们只进行封装。

1.在应用层,交换的数据称为消息(message)。消息通常不包含任何头部和尾部,但是即使包含了这些,我们也将其整体称为消息。消息会被传递到传输层。

2.传输层把这个消息作为有效载荷,该载荷是传输层应该关注的负载。传输层在有效载荷基础上增加传输层头部,其中包括了希望进行通信的源和目的应用程序的标识符和一些投递该消息需要的更多信息,例如进行流量控制、差错控制和拥塞控制需要的信息。其结果为一个传输层分组。该分组在TCP中称为段(segment),在UDP中称为用户数据报(user datagram)。然后传输层传递该分组到网络层。

3.网络层把传输层分组作为数据或有效载荷,并且在该有效载荷上添加自己的头部。头部包含源和目的主机的地址,以及用于头部差错检查、分片的信息等其他一些信息。其结果为一个称为数据报(datagram)的网络层分组。然后,网络层传递这个分组到数据链路层。

4.数据链路层把网络层分组作为数据或有效载荷,并且添加上自己的头部。该头部包含主机或下一跳步(路由器)的链路层地址。其结果为一个称为帧(frame)的链路层分组。该帧被传递到物理层进行传输。

路由器的解封装与封装

由于路由器连接两个或多个链路,因此在路由器中我们既需要进行解封装也需要进行封装。

1.在比特集被投递到数据链路层后,这一层从帧中解封装出数据报并将它投递到网络层。

2.网络层只检查数据报头部的源地址和目的地址,查阅它的转发表以寻找该数据报将被投递到的下一跳步。除非数据报太大以至于不能通过下一链路时需要对其进行分片,数据报的内容不应该被网络层改变。然后,数据报被传递到下一链路的数据链路层。

3.下一链路的数据链路层将数据报封装成一个帧,将其传递到物理层进行传输。

目的主机的解封装

在目的主机端,每层都只解封装接收到的分组,移出有效载荷,并将有效载荷传递至较高一层,直到消息到达应用层。需要说明的是主机中的解封装包含差错检查。

地址

在Internet中,与协议分层相关的另一个概念是地址。正像以前讨论的那样,在这种模型中一对层次之间存在逻辑通信。包含两方的任意通信都需要两个地址:源地址和目的地址。尽管看起来我们似乎需要5对地址(每层一对),但是由于物理层不需要地址,我们通常只需要4对;物理层的数据交换单元是一个比特,它绝对没有地址。图1-17显示了每一层的地址。


 

如图1-17所示,层次、地址与分组名之间存在一定的关系。在应用层,我们通常使用一个像someorg.com的名字定义提供服务的站点,或者使用像somebody@coldmail.com一样的电子邮件地址。在传输层,地址称为端口号,这些端口号指定源和目的地的应用层程序。端口号是本地地址,用于区分同一时间运行的几个程序。网络层地址是全局的,其范围涵盖了整个Internet。链路层地址有时叫做MAC地址(MAC address),是本地定义的地址。每个链路层地址用于在网络(LAN或WAN)中定义一个特定的主机或路由器。在后面的章节中,我们将回过头来讨论这些地址。

多路复用与多路分解

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


 

为了进行多路复用和多路分解,协议需要一个用于标识被封装的分组属于哪种协议的头部字段。在传输层,无论UDP还是TCP都可以接收多个应用层协议的消息。在网络层,IP既可以接收来自TCP的段也可以接收来自UDP的用户数据报。同时,IP也可以接收来自其他协议的分组,如ICMP协议、IGMP协议等等。在数据链路层,数据帧可以携带来自IP或ARP(参见第5章)等协议的有效载荷。

点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:1.2.1 场景
下一篇:1.2.3 OSI模型
相关文章
图文推荐
1.2.2 包与帧
1.2.1 网络协议栈
云数据中心网络技术
3.4.6 文本约定
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站