1分层网络模型

1.1为什么是分层模型

数据是由用户借助应用程序产生。我们要与家人和朋友语音通话、视频通话,我们要发送产品资料、方案、合同草稿给商业伙伴,不管是音频流、视频流还是文本、图片,通过计算机处理和传输前都要先转化成数字数据。单纯的数字数据是不会自己跑到家人、朋友和商业伙伴那里的,需要对它进行封装,添加一些标识信息控制信息标识信息用来标记数据的类型、接收者与发送者,以及传送方式等。通信双方需要建立通信会话,基于通信会话才能收发数据,封装的控制信息就是给会话协议建立通信会话用的。被封装后的数据形成一个个的数据报、数据包、数据帧或信元等。我们把对数据标识封装和会话的控制的规则或方法进行标准化,于是就形成了协议(Protocol负责数据标识封装的协议叫做标识协议封装协议,负责会话控制的协议被叫做信令协议。因为应用的种类实在太多,不同的应用产生的数据也不一样,所以对应的标识和控制的方法也就不同,这就需要定义各种各样的协议与之相对应:有区分不同应用的协议,有标识不同数据类型的协议,有建立、维护、拆除会话的协议,有标识接收者和发送者的协议,有针对不同通信介质提供相应的介质访问控制方式的协议,有将数字数据进行编解码的协议,有定义数据传输介质属性和介质接口形式的协议。

数据通信整个过程是一个复杂的系统工程,人类处理复杂系统工程的办法就是分而治之,具体来说就是模块化加分层协作。将复杂信息通信这个复杂的系统工程划分成不同的功能层,再在功能层中划分出不同的功能模块,每一个模块实现系统工程中的一部分功能,然后将所有的功能模块联系在一起就完成了整个系统工程的功能。这就是分层思想的根源,为了复杂系统工程的实现。

1.2分层带来的好处

当然,它让数据通信这个复杂的系统工程得以实现。同时,分层以后,不同的组织完成其中的一部分功能就可以了,简化了实现难度。因为有各个组织的协同,就需要建立标准化体系,而标准体系的建立,又推进了数据通信工业化和产业的发展。

2OSITCP/IP

计算机网络是数据通信网络,我们经常把它叫做数通。数通网络的实现是基于两大网络模型来构建的,我们最熟悉的可能是由ISOInternational Organization for Standardization,国际标准化组织)制定的OSIOpen System Interconnection,开放系统互联)模型,是一个推荐模型Reference Model),有时也会被写做OSI/RMISO-OSI/RM,而TCP/IPTransmission Control Protocol/Internet Protocol ,传输控制协议/因特网互联协议)模型则是事实上的标准,除少量个别协议遵从OSI外,整个互联网现网框架都是以这个协议为思想基础搭建起来的,也就是说整个网络系统的大厦都是由这两大模型为基础构建起来的。

我个人更愿意把TCP/IPTransmission Control Protocol/Internet Protocol 翻译成传输控制与互联网协议。

通过对两大网络模型的介绍,为读者提供一个高屋建瓴地视角,对整个网络系统有个全局的认识,并为进一步地学习和掌握网络知识,分析、定位、解决网络问题打下基础。

本文以OSI模型为框架,介绍每一层的功能,数据在本层的表现形式,工作在本层的设备和典型协议等。在本节中并没有对某个特定的协议做过多讲解或论述,仅做初步了解就够了,有关协议的更多内容可以查阅附录1术语表,如果某个协议或涉及到的技术在生产中应用比较普遍,后面会有专门的篇幅详细介绍。

2.1OSI模型

01-01 OSI网络模型

ISOInternational Organization for Standardization,国际标准化组织)制定的OSIOpen System Interconnection,开放系统互联)模型,是一个考模型Reference Model),有时也会被写做OSI/RMISO-OSI/RM,它是我们学习计算网络必须要了解的基础和标准网络模型。此模型深入人心,流行甚广,不可不知。

2.2TCP/IP模型

01-02 TCP/IP网络模型

TCP/IP在层次划分上更加简单,只有四层,由IETF提出并维护,它将OSI模型的应用层、表示层、会话层合并,称之为应用层,提供应用服务;将数据链路层和物理层合并,称之为网络接入层,并将网络接入层拆分成两个子层(Sub Layer),分别是LLCLogic Link Control)子层和MACMedia Access Control)子层,提供网络接入的能力。我们常说的MAC地址(MAC Address)就属于MAC子层(MAC Sub Layer)。此模型是计算机网络的实事标准,不可不知。

2.3OSITCP/IP对比

01-04 OSITCP/IP网络模型对比

虽然有对应关系,甚至是相同的名字,但是两者定义的内容并不完全相同。


2.4改进的五层模型

01-03 改进的五层模型

在实际的生产环境和工程实现中,工程技术人员在讨论和交流时实际上使用的网络模型是OSITCP/IP融合后的一种改进模型。改进模型同时TCP/IP模型的应用层、传输层、互联网络层和OSI模型的数据链路层、物理层。改进后形成五层模型,分别是应用层,传输层,网络层,数据链路层和物理层。

2.5实事上的标准

对于当前一统天下的以太网络(802.3)和无线网络(802.11),我们很难将其单独归入OSI模型的数据链路层或物理层,因为它同时包含了数据链路层和物理层定义的内容和功能,它属于TCP/IP模型的网络接入层。

我们在谈及OSI模型的表示层和会话层时,基本没有什么比较耳熟能详的协议、标准或技术,这是因为OSI模型的应用层、表示层、会话层实际上对应到了TCP/IP的应用层。TCP/IP模型基于OSI模型进行优化,并对各层不断地更新和迭代,以适应层出不穷的应用所提出的新要求,而OSI模型在后期的更新上做得并不好,以至于自己定的标准,被别人不断迭代优化后成为实事标准。如同人要不断学习并自我迭代才不会被淘汰一样。

尽管如此,我们在讨论网络架构模型时,习惯上还是使用OSI七层模型来论述。虽然TCP/IP模型是实事上的标准,但是OSI/RM早已深入人心,我选择遵从大多数人的习惯。尽管有迎合甚至讨好世众之嫌,但不代表我没有进行独立思考。如果有可能,若干年后此书再版,我会考虑以TCP/IP模型为标准进行论述。也许你说:啰啰嗦嗦这么多废话,而我们只需要一个能指出皇帝新装的孩子。好吧,可能是我还不够纯粹,让我继续再粹炼上几年!从更深层次来说,各种模型不过都是不同的解释方式,而伴随着网络技术的改进,对应的解释方式也会随之而变。

3OSI各层简介

3.1物理层 Physical Layer

定义了机械的、电气的、规程的、功能性的标准。

数据形式是二进制流(Bit Flowing)。

本层设备有中继器(Repeater)集线器(Hub)等。

物理层是网络存在的物理条件。这一层主要定义了通信介质及性质,接口形式和光电信号等。IEEE 802.3协议簇所定义的以太网是这一层最重要的协议,已形成对LAN网络的实事垄断。

3.2数据链路层 Data Link Layer

定义了帧结构和物理流控。

数据形式是帧(Frame)。

本层设备有网桥(Bridge)和交换机(Switch)。

IEEE 802中又被分为较上层的LLCLogic Link Control)子层和较下层的MACMedia Access Control)子层。

根据不同的通信介质及其组网拓扑,规定介质的访问控制方式。可以简单概括为通信介质、组网拓扑、介质的访问控制方式。

IEEE 802.3是定义有线网络的协议簇,有线网络使用CSMA/CDCarrier Sense Multiple Access with Collision Detection,带冲突检测的载波侦听多路访问)逻辑链路控制。IEEE 802.11是定义无线网络的协议簇,无线网络使用CSMA/CACarrier Sense Multiple Access with Collision Avoidance,带冲突避免的载波侦听多路访问)。有线网络可以通过监听线路电压或电流的方式监听载波是否空闲,而无线网络的载波是否空闲却无法通过载波侦听之外的方式实现,只能通过冲突避免的方式来实现线路分时共享。

以太网在二层局域网上拥有绝对优势地位。

3.3网络层 Network layer

定义了数据包结构,编址,寻址,路由计算等。

数据形式是包(Packet)。

工作在网层的设备是路由器和三层交换机等,但是我们一般统称这为路由器。

主要的功能是计算并提供路由。

比较典型的提供路计算的协议有:RIPRouting Information Protocol,路由信息协议),OSPFOpen Shortest Path First,开放最短路径优先),IS-ISIntermediate System to Intermediate System,中间系统到中间系统),IGRPInterior Gateway Routing Protocol,内部网关路由协议),BGPBorder Gateway Protocol,边界网关协议)等。带有工具性质的协议ICMPInternet Control Message Protocol,互联网控制消息协议)和提供单播IP地址到下一跳MACMedia access control)地址映射关系的ARPAddress Resolution Protocol,地址解析协议)协议,是这一层另外两个非常重要的协议。RIPBGP本质上是应用层协议,RIP使用UDP 520BGP使用TCP 179Integrated IS-IS是本质上是链路层协议,通过802.3的格式直接封装在数据帧中。但是因为以上三个协议都提供路由计算和选择,所以我们仍然把它们归为网络层协议。

其实这一层最重要的协议是IPInternet Protocol,互联网协议),它提供数据包的封装和主机节点标识,只有被封装和标识的数据才可以被转发。

3.4传输层 Transport Layer

管理网络层连接,提供了可靠的包传递机制。

数据形式是分段或叫分片(Segment)。

传输层最重要的两个协议是TCPTransmission Control Protocol,传输控制协议)和UDPUser Datagram Protocol,用户数据报协议)。TCP设计之初是为了高可靠性传输,这就需要有比较复杂的协议报头封装,因此协议开销比较大,在没有添加任何选项的情况下,报头大小是20Byte,传输效率相对较低。UDP设计之初是为高效传输,放弃了比较复杂的控制,协议报头封装比较简单,只有8Byte,但是可靠性低。另外一个在传输层值得被关注的协议是SCTPStream Control Transmission Protocol,流控制传输协议),它也是一个面向连接的协议,支持多宿主和多流,并且安全性更高,将来有望得到更多的应用和发展。

3.5会话层 Session Layer

会话的建立或拆除等。

RPCRemote Procedure Call,远程过程调用)是这一层比较典型的一个协议。这一层在工业应用中并没有得到很好的发展,它的很多功能被应用层和传输层替代了。当然你也可以说是被TCP/IP替代了。

3.6表示层 Presentation Layer

定义数据的结构和传输格式,编解码,压缩解压缩,加解密等。

与会话层一样的一个非常难堪的存在。它基本上是被应用层替代。我个人认识会话层和表示层在设计之初考虑不足够周全,对工作任务分解不合理导致。

其实数据格式原计划是放在这层来实现。但是数据是应用程序产生的,应用层就顺便定义了数据的格式。很显然由我产生的数据由你来定义格式显然是不合理的,不利于合作和实现。

3.7应用层 Application Layer

提供接口给终端用户应用,为面向网络的应用程序提供服务。

各种各样的应用需求使得应用层的协议相比其它层要丰富得多,工作在应用层的协议是七层模型中最多的,各种应用呈百花齐放之态。其中最值得一提的是HTTPHypertext Transfer Protocol,超文本传输协议),无人能出其右。当然比较重要和常见的还有DHCPDynamic Host Configuration Protocol,动态主机配置协议)、DNSDomain Name System,域名系统)、SMTPSimple Mail Transfer Protocol,简单邮件传输协议)、POP3Post Office Protocol,邮局协议版本3),IMAPInternet Message Access Protocol 4,互联网消息访问协议版本4)等。

4饭后思考题:

1)提供路由计算和选路的协议就一定是网络层协议吗?

2)我们的电脑工作在TCP/IP在哪一层?

3)路由器除了工作在网络层,以下两层有没有涉及?以上各层呢?交换机呢?换句话说,文中关于网络各层工作设备的描述是绝对正确吗?如果说不完全正确,为什么还这样描述?