计算机网络模型
Posted 网事如烟云
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机网络模型相关的知识,希望对你有一定的参考价值。
计算机网络模型
从前慢
——木心
记得早先少年时
大家诚诚恳恳
说一句 是一句
清早上火车站
长街黑暗无行人
卖豆浆的小店冒着热气
从前的日色变得慢
车,马,邮件都慢
一生只够爱一个人
从前的锁也好看
钥匙精美有样子
你锁了 人家就懂了
读完这首诗,有的人感动一生只能够爱一个人,有的人感慨再也回不到从前的车马邮件都慢,有的人感怀你锁了人家就懂了。而浪漫主义哲学家则会大手一挥:邮件很慢?给你太平洋一样宽的网络!
网络,在不同的行业有不同的定义。对于通信行业来说,网络指的是计算机网络。计算机网络中的“计算机”一词,其实有着互联网时代的深深烙印。在当今的移动互联网时代,以及(不久的)将来的物联网时代,不应该将网络的终端再都归结为计算机。不过从网络连接的角度来讲,我们也不必纠结网络的终端类型,而是专注于连接本身。所以,我们仍然采用计算机网络这个名词(确实好像显得有点过于老派,^_^),一方面是因为现在还没有一个新的公认的名词来取代“计算机网络”,另一方面也是为了继承历史,对于很多网络概念的理解,不至于困惑。
即使是计算机网络,从20实际60~70年代到现在,也经历了翻天地覆的变化,本文并不是致力于讲述网络的发展历史(那将是非常巨大的篇幅),而是想直奔主题,讲述计算机网络的模型。
计算机网络,有两个非常典型的模型:OSI 模型、TCP/IP 模型。两者有很多相似性,同时还存在竞争关系。从结果来看,作为互联网的基石,TCP/IP 模型无疑是完全赢得了竞争。但是,要想理解 TCP/IP 模型,从 OSI 模型入手,是一个非常重要的、非常好的切入点。下面我们就从 OSI 模型开始,开启计算机网络模型之旅。
1.1 OSI 七层模型
OSI 模型的全称是 Open System Interconnection Reference Model(开放系统互连参考模型,简称 OSI RM),不过一般大家都简称之为 OSI 模型。又由于 OSI 模型有七层,所以有时人们也称之为 OSI 七层模型。当然,有时候人们也会直接称之为 OSI。这些表达的都是同一个意思。
OSI 的诞生,有两条线。
第一条线是官方渠道:1977年英国标准化协会(BSI)向国际标准化组织(ISO)提议,为了定义分布处理之间的通信基础设施,需要一个标准的体系结构。结果,ISO就开放系统互联(OSI)问题成立了一个专委会(TC 97, SC16),指定由美国国家标准协会(ANSI)开发一个标准草案,在专委会第一次正式会议之前提交。
第二条线是民间渠道或者说是企业渠道:1970年代中期,Honeywell Information System 公司为了开发一些原型系统而成立了一个小组,该小组主要关注数据库系统的设计,其技术负责人是Charlie Bachman。当时为了支持数据库系统的访问,需要一个结构化的分布式通信系统体系结构。于是这个小组研究了现有的一些解决方案,其中包括IBM公司的SNA(System Network Architecture)、ARPANET(Internet的前身)的协议、以及为标准化的数据库正在研究中的一些表示服务(presentation services)的相关概念。1977年该小组提出了一个七层的体系结构模型,他们内部称之为分布式系统体系结构(DSA)。
两条线的碰撞是在 ASNI 的会议上,Bachman 参加了会议,并提交了并提交了他的七层模型,这个模型就成了提交ISO专委会的唯一的一份草案。
1978年3月,在ISO的OSI专委会在华盛顿召开的会议上,与会专家很快达成了共识,认为这个分层的体系结构能够满足开放式系统的大多数需求,而且具有可扩展的能力,能够满足新的需求。
于是,1978年发布了这个临时版本,1979年稍作细化之后,成了最终的版本。所以,OSI模型和1977年DSA模型基本相同。
了却君王天下事,赢得生前身后名。可惜,Bachman 并没有赢得“OSI 之父”之类的名声。相反,现在很多人提及 OSI 七层模型,却很少有人会想起 Bachman 当年所做的贡献。不知道 Bachman 会不会觉得当年提出七层模型也不过是他的工作中一个插曲而已。如果单从表面上的荣誉来衡量,Bachman 的更伟大的工作也许是1960 年代所创造全球首个网状数据库管理系统 IDS,并因此在1973年赢得一座图灵奖。
图1-1 Charles W. Bachman
OSI 所包含的七层模型,如表1-1所示:
表1-1 OSI 七层模型
层数 |
英文名称 |
中文名称 |
简述 |
典型协议 |
1 |
Physical Layer |
物理层 |
提供为建立、维护和拆除物理链路所需要的机械的、电气的、功能的和规程的特性;有关的物理链路上传输非结构的位流以及故障检测指示。 |
RS 232C、RS 449/422/423、V.24、X.21、X.21bis |
2 |
Data Link Layer |
数据链路层 |
英语单词,有各种写法:Data link、Datalink、Data-link,这里采用 Data Link。 在网络层实体间提供数据发送和接收的功能和过程;提供数据链路的流控。 |
HDLC、PPP、802.2、802.3 |
3 |
Network Layer |
网络层 |
控制分组传送系统的操作、路由选择、拥护控制、网络互连等功能,它的作用是将具体的物理传送对高层透明。 |
IP、IPX |
4 |
Transport Layer |
传输层 |
提供建立、维护和拆除传送连接的功能;选择网络层提供最合适的服务;在系统之间提供可靠的透明的数据传送,提供端到端的错误恢复和流量控制。 |
TCP、UDP |
5 |
Session Layer |
会话层 |
提供两进程之间建立、维护和结束会话连接的功能;提供交互会话的管理功能,如三种数据流方向的控制,即一路交互、两路交替和两路同时会话模式 。 |
SQL、NFS、RPC |
6 |
Presentation Layer |
表示层 |
代表应用进程协商数据表示;完成数据转换、格式化和文本压缩。 |
JPEG、ASCll、DECOIC |
7 |
Application Layer |
应用层 |
提供OSI用户服务,例如事务处理程序、文件传送协议和网络管理等。 |
HTTP、FTP、TFTP、 SMTP、SNMP、DNS、 TELNET、HTTPS POP3、DHCP |
表1-1中,OSI 七层模型所对应的典型协议,其实是一种不太好的暗示,似乎是说 OSI 包含了这些协议。其实不是!OSI 仅仅是一个抽象的模型,定义一种抽象结构,定义了控制互连系统交互规则的标准骨架,它并不包含任何具体的实现。那些具体的实现(相应的协议),只是按照 OSI 的定义,对应到相应的 OSI 层而已。
表1-1关于各层的简述,还是有点让人晕。当然最好的方法,是将每一层展开,看看它到底指的是什么,这个我们放在后面的章节中逐步讲述。这里呢,我们先看看关于每一层的更简单的描述,也许更能有所帮助吧,如表1-2所示:
表1-2 OSI 模型一句话简述
层数 |
中文名称 |
一句话简述 |
1 |
物理层 |
比特流传输 |
2 |
数据链路层 |
提供介质访问、链路管理 |
3 |
网络层 |
寻址和路由选择 |
4 |
传输层 |
建立主机端到端连接 |
5 |
会话层 |
建立、维护和管理会话 |
6 |
表示层 |
处理数据格式、数据加密等 |
7 |
应用层 |
提供应用程序间通信 |
按照 OSI 模型,两个主机(Host)之间的通信,可以抽象为如下交互过程,如图1-2所示:
图1-2 OSI 通信模型
图1-2中,位于 HostA 的应用程序A 发送信息给位于 HostB 的应用程序B,从设备的角度看,消息从 HostA 经过交换机1->路由器1->路由器2->交换机2,最后到达 HostB。从 OSI 模型角度来说,信息从应用程序A 到达了应用层,然后再经过表示层、会话层、传输层、网络层、数据链路层,最后从物理层离开了 HostA。中间经过交换机时只需要处理2层,经过路由器时只需要处理3层,到达 HostB 时,再反向从物理层一直传递到应用层,最后达到应用程序B。
应用程序A和B之间的信息传输,归根结底是比特流的传输,这也是信息在物理层的表现形式,物理层不在意其所传输的内容是什么,它只是关注物理信号相关的方方面面。但是,OSI 的其他层,对于信息的处理,却不是那么透明。具体的处理过程,我们会在后面的章节中,逐步展开,这里我们只须简单理解:在发送方,是一个逐层加封协议头的过程,在接收方,是一个逐层解封协议头的过程。如图1-3所示:
图1-3 OSI 封装-解封装过程
说明:前文说过,OSI 模型并不包含具体的协议,这里却又提到了协议头,是因为两点:(1)在具体的实现中,总是需要各种协议;(2)完全抛开协议,完全抽象地讲述 OSI,有点难以表述。所以讲述时,我们稍微引进一些协议的概念,但是理解时,我们心里一定要明白:OSI 模型不包括具体的协议。
图1-3中,H 是 Header 的缩写,表示协议所对应的协议头。由于 OSI 模型与 TCP/IP 模型不同(下文会描述),而现在主流的实现其实是 TCP/IP 协议,所以图1-3中,应用层、表示层、会话层,这3层,我们仅仅是一个笼统的协议头来指代。对于传输层、网络层、数据链路层来说,发送方需要分别加封1个 T-H(Transport Header)、N-H(Network Header)、L-H(Link Data Header),而接收方需要相应地将协议头解封(去除)。最后我们看到,应用程序A所要发送的数据(Data),到达应用程序B时,仍然是相同的数据。在数据链路层,还有一个 FCS(Frame Check Sequence,帧校验序列,俗称帧尾),这个我们也放到后面的章节再讲述,此时我们可以忽略它。
有人的地方,就有江湖。OSI 模型中的各层,不仅对信息进行处理,还对信息命名了一个专(jiang)业(hu)术(hei)语(hua)。表1-3对这些术语作一个小结:
表1-3 OSI 各层对信息的专业术语命名
层数 |
中文名称 |
信息的专业术语 |
1 |
物理层 |
比特,bit(汉语更多的称之为比特流(bit stream),但是英语的称谓则简称为 bit) |
2 |
数据链路层 |
帧,Frame |
3 |
网络层 |
包,Packet |
4 |
传输层 |
TCP:段,Segment;UDP:数据报,Datagram |
5 |
会话层 |
数据,Data PDU(Protocol Data Unit,协议数据单元),会话层称之为 S-PDU,表示层称之为 P-PDU,应用层称之为 A-PDU |
6 |
表示层 |
|
7 |
应用层 |
说明:从第2层到第7层,还有一个通用名词,那就是 PDU(Protocol Data Unit,协议数据单元),也就是说,无论是 bit、Frame、Segment、Datagram 还是 Data,统统都可以称为 PDU。
以上是关于 OSI 模型的浮光掠影地介绍,更详细的信息,我们会在后面的章节中逐步展开描述。最后,让我们把目光在转移到 OSI 的实际设计人 Bachman 及其小组的身上。当时他所领导的小组研究了IBM 公司的 SNA(System Network Architecture)、ARPANET(Internet的前身)的协议,那么这些协议与 OSI 模型的关系如何呢?如图1-4所示:
图1-4 OSI 与其他相关协议之间的关系
1.2 TCP/IP 模型
鄙人以为,无论对 OSI 怎么赞美都不过分,虽然有很多人指出它有很多不尽如人意的地方——这是正常的,一个新生事物,总会有很多不完善的地方——但是不应该对 OSI 过于苛责。也许大家的着眼点不一样吧,鄙人的着眼点是对 Bachman 的感恩和崇拜,而有的人的着眼点是对 ISO 的一些失望吧:为什么不对 OSI 模型进行持续优化呢?
TCP/IP 是一个协议族,而不是仅仅指这两个协议:TCP(Transmission Control Protocol,传输控制协议)、IP(Internet Protocol,网际协议),还包括其他很多协议(ARP、ICMP、UDP,等等,这里就不一一例举了)。TCP/IP 的英语是 TCP/IP Protocol Suite 或者 CP/IP Protocos,之所以被简称为 TCP/IP,是因为这两个协议是协议族中最早通过的两个协议,当然这两个协议相对来说,也是比较重要、比较有名。TCP/IP 协议族由 IETF(Internet Engineering Task Force,互联网工程任务组)负责维护。
TCP/IP 的另一个名称是 Internet Protocol Suite(互联网协议族,缩写是 IPS)。看看这个名称,再想想现在是什么年代(互联网年代),也能够知道,指望 ISO 竞争过 TCP/IP,那无疑痴人说梦,TCP/IP 可是在“战斗中”成长起来的协议族。
TCP/IP 协议最早发源于美国国防部(United States Department of Defense,缩写为DOD 或 DoD)的ARPAnet项目(ARPA,Advanced Research Projects Agency,美国国防部高级研究计划署),因此也被称作DoD模型(DoD Model)。虽然这些都是事实,但是看到 IPv4 的 RFC 791 的前言,作为一个中国人,笔者心中仍然是五味杂陈:
PREFACE
This document specifies the DoD Standard Internet Protocol. This document is based on six earlier editions of the ARPA Internet Protocol Specification, and the present text draws heavily from them. There have been many contributors to this work both in terms of concepts and in terms of text. This edition revises aspects of addressing, error handling, option codes, and the security, precedence, compartments, and handling restriction features of the internet protocol.
Jon Postel
Editor
好吧,不再感慨,愿你我怀着感激、感恩的心情,同时也要怀着发愤图强、为中华之崛起而读书的决心,继续回到 TCP/IP 吧。
最早的TCP/IP由文顿·瑟夫和罗伯特·卡恩两位开发,慢慢地通过竞争战胜其他一些网络协议的方案(比如 OSI模型)。1983年1月1日,在因特网的前身(ARPAnet)中,TCP/IP取代旧的网络控制协议(NCP,Network Control Protocol),从而成为今天的互联网的基石。
TCP/IP 是一个网络通信模型,以及一整个网络传输协议家族,为互联网的基础通信架构。本节只讨论 TCP/IP 的网络通信模型。
这个世界令人沮丧,TCP/IP 的模型,并不是像 OSI 模型那样有一个准确的定义,有说4层模型的,有说5层模型的,而且层的名字,也不尽相同,大家莫衷一是。维基百科对这种“乱象”做了一个小结,如图1-5所示:
图1-5 TCP/IP 模型各种流派
按照维基百科的说法,之所以有这些流派,是因为:Some of the networking models are from textbooks, which are secondary sources that may conflict with the intent of RFC 1122 and other IETF primary sources。笔者以小人之心度君子之腹,对这句话的翻译是:一些家伙乱写书,跟官方的标准(RFC 1122、IETF 的定义)不一样,把大家带沟里去了。这些书的名称,维基百科也给明确点出来了,如表1-4所示:
表1-4 TCP/IP 模型的一些流派的出处
作者 |
出处 |
Cisco Academy |
Dye, Mark; McDonald, Rick; Rufi, Antoon (29 October 2007). "Network Fundamentals, CCNA Exploration Companion Guide". Cisco Press. |
Kurose |
James F. Kurose, Keith W. Ross, Computer Networking: A Top-Down Approach, 2008 ISBN 0-321-49770-8 |
Forouzan |
Forouzan, Behrouz A.; Fegan, Sophia Chung (1 August 2003). "Data Communications and Networking". McGraw-Hill Higher Education. ISBN 9780072923544. Retrieved 12 September 2016 – via Google Books. |
Comer |
Comer, Douglas (1 January 2006). "Internetworking with TCP/IP: Principles, protocols, and architecture". Prentice Hall. ISBN 0-13-187671-6. Retrieved 12 September 2016 – via Google Books. |
Kozierok |
Kozierok, Charles M. (1 January 2005). "The TCP/IP Guide: A Comprehensive, Illustrated Internet Protocols Reference". No Starch Press. ISBN 9781593270476. Retrieved 12 September 2016 – via Google Books. |
Stallings |
Stallings, William (1 January 2007). "Data and Computer Communications". Prentice Hall. ISBN 0-13-243310-9. Retrieved 12 September 2016 – via Google Books. |
Tanenbaum |
Tanenbaum, Andrew S. (1 January 2003). "Computer Networks". Prentice Hall PTR. ISBN 0-13-066102-3. Retrieved 12 September 2016 – via Google Books. |
乱花渐欲迷人眼,TCP/IP 模型,我们到底该采信哪一种呢?综合各种资料(包括百度百科、维基百科),笔者以为:
(1)从“学究”的角度来讲,分为4层,毕竟这是 RFC 1122 所定义的;
(2)从实用的角度来讲,分为5层,毕竟这更易于理解。
基于以上观点,TCP/IP 模型及其与 OSI 模型的对应关系,如表1-5所示:
表1-5 TCP/IP 模型及其与 OSI 模型的对应关系
OSI 模型 |
TCP/IP 4层模型 |
TCP/IP 5层模型 |
|||
英文 |
中文 |
英文 |
中文 |
英文 |
中文 |
Application |
应用层 |
Application |
应用层 |
Application |
应用层 |
Presentation |
表示层 |
||||
Session |
会话层 |
||||
Transport |
传输层 |
Transport |
传输层 |
Transport |
传输层 |
Network |
网络层 |
Internet |
网络互联层 |
Network |
网络层 |
Data Link |
数据链路层 |
Network Interface |
网络接口层 |
Data Link |
数据链路层 |
Physical |
物理层 |
Physical |
物理层 |
表1-5中,TCP/IP 4层模型的第1层模型,笔者采用 Cisco Academy(思科研究院)的命名,称之为网络接口层(Network Interface),这是因为很多文档都是这么称呼,而且 RFC 1122 的命名“Link”与 OSI 的 “Data Link”非常容易让人混淆和迷惑(虽然对于非常专业的人士来说,这两个区别还是比较明显的)。4层模型的其余3层,笔者采用 RFC 1122 的命名,毕竟这才是正统!
而对于 TCP/IP 5层模型,笔者采用的是 OSI 对应层级的模型名称,这也是大多数文档的命名方法。这更多是想表达 TCP/IP 模型与 OSI 模型的区别与联系:区别很简单(OSI 的最上面3层,被 TCP/IP 合并为1层),联系很紧密(其余各层是一样的)。
TCP/IP,无论是4层还是5层模型,我想我们都不必过于在意,不同的语境有不同的说法,两者都是对的。另外,我们常常说,(数据)链路层是2层,IP 层是3层,这里面的潜台词是采用了5层模型的概念。
前文我们说过,TCP/IP 是一个协议族,那么它包括哪些协议呢?如表1-6所示:
表1-6 TCP/IP 主要协议
4层模型 |
5层模型 |
主要协议 |
应用层 |
应用层 |
HTTP、FTP、TFTP、SMTP、SNMP、DNS |
传输层 |
传输层 |
TCP、UDP |
网络互联层 |
网络层 |
ICMP、IGMP、IP、ARP、RARP |
网络接口层 |
数据链路层 |
无(采用其他协议族的协议) |
物理层 |
从表1-6可以看出,TCP/IP参考模型的网络接口层(数据链路层/物理层),并没有具体的协议。这很难说是 TCP/IP 的优点或者缺点。笔者以为,强者恒强:TCP/IP 并没有定义网络接口层(数据链路层/物理层)协议,但是其他协议族相应的协议,很多都能为 TCP/IP 所用,比如:以太网(Ethernet)、令牌环(Token Ring)、光纤数据分布接口(FDDI)、点对点协议(PPP)、X.25、帧中继(Frame Relay)、ATM、Sonet、SDH。不战而屈人之兵,TCP/IP 并没有在这个层面与这些协议竞争,而这些协议却默默地支撑起了 TCP/IP 的大厦!
TCP/IP 模型在与 OSI 模型的竞争中,赢得了“战争”,但是不能否认,两者有很多很多的相似性。笔者以为,如果 OSI 模型的发明者不是图灵奖获得者,而是图灵本人,也许,TCP/IP 模型的名字,也会叫作 OSI 模型吧。
这个世界,并不都是美好,只愿我们仍然能温柔以待。现在车马不远,邮件不慢,但是你锁了,我懂了!
----------------------------------
京东有售
以上是关于计算机网络模型的主要内容,如果未能解决你的问题,请参考以下文章