文章目录
OSI 参考模型(Open Systems Interconnection)
- 该模型基于国际标准化组织(ISO,International Standards Organization)的提案,作为各层协议迈向国际标准化的第一步(Day 和 Zimmermann,1983),并且于 1995 年进行了修订(Day,1995)。
- 它涉及如何连接开放的系统——即那些为了与其他系统通信而开放的系统
- OSI 模型有 7 层。适用于这 7 层的基本原则简要概括如下。
- 应该在需要一个不同抽象体的地方创建一层。
- 每一层都应该执行一个明确定义的功能。
- 每一层功能的选择应该向定义国际标准化协议的目标看齐。
- 层与层边界的选择应该使跨越接口的信息流最小。
- 层数应该足够多,保证不同的功能不会被混杂在同一层中,但同时层数又不能太多,以免体系结构变得过于庞大。
物理层(physical layer)
- 物理层关注在一条通信信道上传输原始比特。
- 物理层的设计主要涉及物理接口的机械电气功能和过程特性,以及物理层接口连接的传输介质等问题。
- 物理层的主要任务是在物理媒体上实现比特流的
透明传输
。物理层的传输单位是比特。
透明传输:指不管所传数据是什么样的比特组合,都应当能够在链路上传送。
- 物理层的功能
- 定义接口特性
- 定义传输模式(单工、半双工、双工)
- 定义传输速率
- 比特同步
- 比特编码(用什么电压表示1,用什么电压表示0)
数据链路层(data link layer)
- 数据链路层的主要任务是把网络层传下来的IP数据报组装成帧。数据链路层/链路层的传输单位是帧。
- 数据链路层的功能
- 成帧(定义帧的开始和结束)
- 差错控制(帧错和位错)
- 流量控制(避免快速发送方用数据“淹没”慢速接收方)
- 访问/接入控制(控制对信道的访问)
- 广播式网络的数据链路层还有另一个问题:如何控制对共享信道的访问。数据链路层的一个特殊子层,即
介质访问控制子层
,就是专门处理这个问题的。 - 典型的数据链路层协议有SDLC、HDLC、PPP、STP和帧中继等
网络层(network layer)
- 网络层的传输单位是数据报。它的主要任务是把
分组从源端传到目的端
,为分组交换网上的不同主机提供通信服务。 - 网络层的功能
- 路由选择
- 流量控制
- 差错控制
- 拥塞控制
- 网际互连(允许异构网络相互连接成为互联网络)
- 在广播式网络中,路由问题比较简单,所以网络层往往比较单薄,甚至根本不存在。
- 网络层的协议有IP、IPX、ICMP、IGMP、ARP、RARP和OSPF等
传输层(transport layer)
- 传输层也称运输层,传输单位是报文段或用户数据报,传输层负责主机中两个进程之间的通信,功能是
为端到端连接提供可靠的传输服务
,为端到端连接提供流量控制、差错控制、服务质量、数据传输管理等服务。 - 传输层的基本功能是接收来自上一层的数据,在必要的时候把这些数据分割成较小的单元,然后把这些数据单元传递给网络层,
并且确保这些数据单元正确地到达另一端
。 - 传输层是真正的
端-端
的层,它自始自终将数据从源端携带到接收方。换句话说,源机器上的一个程序利用报文头和控制信息与目标机器上的一个类似程序进行会话。 点到点
:可以理解为主机到主机之间的通信,一个点指一个硬件地址或IP地址,网络中参与通信的主机通过硬件地址或IP地址标识的;端到端
:指运行在不同主机内的两个进程之间的通信,一个进程由一个端口号来标识,所以称端到端通信- 第 1 层到第 3 层是链式连接的,而第 4层到第 7 层是端-端的
会话层(session layer)
- 会话层允许不同机器上的用户建立会话。
- 向表示层实体/用户进程(运行的程序)建立连接并在连接上有序地传输数据,称为会话,也是建立同步(SYN)。
- 会话层提供的服务
- 对话控制(dialog control)(记录该由谁来传递数据)
- 令牌管理(token management)(禁止双方同时执行同一个关键操作)
- 同步功能(synchronization)(在一个长传输过程中设置一些断点,以便在系统崩溃之后还能恢复到崩溃前的状态继续运行)
- 会话层利用传输层提供的
端到端
的服务,向表示层提供它的增值服务。
表示层(presentation layer)
- 表示层以下的各层最关注的是如何传递数据位,而表示层关注的是
所传递信息的语法和语义
。 - 不同机器采用的编码和表示方法不同,使用的数据结构不同。为了使不同的数据和信息之间能够互相交换,表示层采用抽象的标准方法定义数据结构
- 表示层管理这些抽象的数据结构,并允许定义和交
换更高层的数据结构。
应用层(application layer)
- 应用层包含了用户通常需要的各种各样的协议。
- 应用层为特定类型的网络应用提供访问OSI环境的手段。因为用户的实际应用多种多样,就要求应用层采用不同的协议来解决不同应用类型的需求。
- 典型的协议有:文件传输协议FTP、电子邮件协议SMTP、万维网HTTP等。
TCP/IP 参考模型(TCP/IP Reference Model)
- 该参考模型不仅被所有广域计算机网络的鼻祖 ARPANET 所采用,而且被其继任者——全球范围的 Internet 所使用。
- 该体系结构最初由(Cerf 和 Kahn,1974)描述,后来在(Leiner等,1989)中又被重新修订并得到 Internet 团体的标准化。TCP/IP 模型背后的设计思想在(Clark,1988)中进行了详细讨论。
- 设计目标
- 以无缝的方式将多个网络连接起来
- 是即使在损失子网硬件的情况下网络还能够继续工作,原有的会话不能被打断
- 这些要求导致本参考模型选择了
数据包交换网络
,它以一个可运行在不同网络之上的无连接网络层
为基础。
链路层
- 该层描述了链路必须完成什么功能才能满足无连接的互联网络层的需求,比如串行线和经典以太网链路。
这不是真正意义上的一个层,而是主机与传输线路之间的一个接口。
互联网层(internet layer)
- 互联网层是将整个网络体系结构贯穿在一起的关键层。它大致对应于OSI 的网络层。
- 该层的任务是允许主机将数据包注入到任何网络,并且让这些数据包独立地到达接收方(接收方可能在不同的网络上)。
- 互联网层定义了官方的数据包格式和协议,该协议称为
因特网协议
(IP,Internet Protocol),与之相伴的还有一个辅助协议,称为因特网控制报文协议
(ICMP,Internet Control Message Protocol)。 - 数据包的路由是该层最主要的问题,同时该层还要考虑拥塞控制问题。
传输层
- 它的设计目标是允许源主机和目标主机上的对等实体进行对话,犹如 OSI 的传输层一样。
- 这里定义了两个
端-端
的传输协议传输控制协议
(TCP,Transport Control Protocol)- 它是一个
可靠的、面向连接的协议
,允许从一台机器发出的字节流正确无误地交付到互联网上的另一台机器。 - 它把输入的字节流分割成离散的报文,并把每个报文传递给互联网层。
- 在目标机器,接收 TCP 进程把收到的报文重新装配到输出流中。
- TCP 还负责处理流量控制。
- 它是一个
用户数据报协议
(UDP,User Datagram Protocol)- 它是一个
不可靠的、无连接协议
,适用于那些不想要 TCP 的有序性或流量控制功能,而宁可自己提供这些功能的应用程序。 - UDP 被广泛应用于那些一次性的基于客户机-服务器类型的
“请求应答”查询应用
,以及那些及时交付比精确交付更加重要
的应用,比如传输语音或者视频。
- 它是一个
应用层
- TCP/IP 模型并没有会话层和表示层,应用层简单包含了所需的任何会话和表示功能。
- 它包含了所有的高层协议。
- 虚拟终端协议(TELNET)
- 文件传输协议(FTP)
- 电子邮件协议(SMTP)
- 将主机名字映射到它们网络地址的域名系统(DNS,Domain NameSystem)
- 用于获取万维网页面的 HTTP
- 用于传送诸如语音或者电影等实时媒体的
RTP
五层混合模型
模型结构
- 物理层规定了如何在不同的介质上以电气(或其他模拟)信号传输比特。
- 链路层关注的是如何在两台直接相连的计算机之间发送有限长度的消息,并具有指定级别的可靠性。以太网和 802.11是链路层协议的例子。
- 网络层主要处理如何把多条链路结合到网络中,以及如何把网络与网络联结成互联网络,以便使我们可以在两个相隔遥远的计算机之间发送数据包。
网络层的任务包括找到传递数据包所走的路径
。IP 是我们将要学习的网络层主要协议案例。 - 传输层增强了网络层的传递保证,通常具有更高的可靠性,而且提供了数据交付的抽象,比如满足不同应用需求的可靠字节流。TCP 是传输层协议的一个重要实例。
- 应用层包含了使用网络的应用程序。
数据传输
OSI 参考模型与 TCP/IP 参考模型的比较
相同点
- 两者都以协议栈概念为基础,并且协议栈中的协议彼此相互独立。
- 两个模型中各个层的功能也大致相似。例如,在两个模型中,
传输层以及传输层以上各层都为希望通信的进程提供了一种端-端的独立于网络的传输服务
。 - 在这两个模型中,传输层之上的各层都是传输服务的用户,并且是面向应用的。
不同点
OSI(Open System Interconnection) | TCP/IP(Transmission Control Protocol / Internet Protocol) |
---|---|
OSI模型中清晰地定义了服务,接口和各种协议. OSI模型是协议独立的 | TCP/IP模型中定义的服务,接口和各种协议并不能明确地区分. TCP/IP模型是协议独立的 |
OSI 参考模型在协议发明之前就已经产生,这意味着 OSI 模型不会偏向于任何一组特定的协议,这个事实使得 OSI 模型更具有通用性。 | 协议先出现,TCP/IP 模型只是已有协议的一个描述,所以协议与模型高度吻合。但是TCP/IP 模型并不适合任何其他协议栈。 |
OSI参考模型最初只考虑到用一种标准的公用数据网将各种不同的系统互联 | TCP/IP 模型在设计之初就考虑到了多种异构网的互联问题,并将网际协议(IP)作为一个单独的重要层次 |
OSI 模型的网络层同时支持无连接和面向连接的通信,但是传输层只支持面向连接的通信 | TCP/IP 模型在网络层只支持一种模式(无连接),但是在传输层同时支持两种通信模式 |
OSI 模型和协议的评判
糟糕的时机
- 一个标准在什么时候建立对于该标准的成功与否绝对非常重要的。MIT 的 David Clark 有一个关于标准的理论,他称之为两头大象的启示
- 当 OSI 协议出现的时候,与之竞争的 TCP/IP 协议已经被广泛地应用于大学和科研机构。虽然几十亿美元的投资热潮尚未开始,但是,学术市场足够大,使得许多厂商开始谨慎地提供 TCP/IP 产品。当 OSI 出现的时候,这些厂商并不想支持第二个协议栈,除非他们被迫这样做,因此 OSI 没有得到初始的投入。
糟糕的技术
- 之所以选择 7 层的原因很大程度上是出于政策上的考虑,而非技术因素所决定。其中的两层(会话层和表示层)几乎是空的,而另外两层(数据链路层和网络层)又包含了太多内容。
- OSI 模型以及相应的服务定义和协议都极其复杂。它们难以实现,而且操作起来也很低效。
糟糕的实现
- 由于 OSI 模型和协议过于复杂,最初的那些实现不仅庞大,而且很笨拙,效率也很慢。
- 相反,TCP/IP 的早期实现之一是作为 Berkeley UNIX 的一部分,运行非常好(更不用说它是免费的)。很快,人们就开始使用它,进而形成了一个庞大的用户群,这进一步促进了它的提高和改进,然后又导致了更大的用户群。这是螺旋式上升而不是下降。
糟糕的政策
- 由于 TCP/IP 最初的实现,很多人(特别在学术界)都把 TCP/IP 看作是 UNIX 的一部分,而 UNIX 在 20 世纪 80 年代的学术圈中盛极一时,备受宠爱。
- 相反,OSI 则被认为是欧洲电信部门、欧共体以及后来的美国政府的产物。尽管这种观点部分是正确的,但是政府官僚们试图把技术上不足的标准强加给那些实际开发计算机网络的可怜的研究人员和程序员,而政府部门的强制性对 OSI 无济于事。
TCP/IP 参考模型的评判
- 该模型并没有明确区分服务、接口和协议的概念。因此,在使用新技术来设计新网络时,TCP/IP 模型并不是一个很好的参照物。
- TCP/IP 模型一点也不通用,它并不适合于用来描述TCP/IP 之外的任何其他协议栈。例如,试图使用TCP/IP 模型来描述蓝牙(Bluetooth)是完全不可能的。
- 在分层协议的上下文中,
链路层并不是通常意义上的一层。它是一个接口
(位于网络层和数据链路层之间),而接口和层的区别非常重要。 TCP/IP 模型并没有区分物理层和数据链路层
。这是两个完全不同的层。物理层必须要考虑铜线、光纤和无线通信的传输特征;而数据链路层的任务则是确定帧的开始和结束,并且按照所需的可靠程度把帧从一边发送到另一边。一个正确的模型应该包括这两个独立的层,TCP/IP 模型没有这样做。