第2章 OSI参考模型与TCP/IP模型
- 为了解决网络之间的兼容性问题,1984年国际标准化组织(International Organization for Standardization,ISO)提出了OSI参考模型(Open System Interconnection Reference Model,开放系统互联参考模型)。ISO提出了OSI,OSI模型作为理论学习可以,现实中很少有完全采用OSI的。
- 源于美国国防部高级研究项目机构(Defense Advanced Research Project Agency,DARPA)20世纪60年代开发的ARPANET的TCP/IP协议得到了广泛应用,成为了Internet的事实标准。
1. 本章目标
- 掌握OSI参考模型的分层结构
- 理解两个系统如何通过OSI模型进行通信
- 理解OSI模型的七层功能及其关系
- 理解数据封装的过程
- 掌握TCP/IP参考模型的分层结构
- 理解TCP/IP模型各层的功能
2. OSI参考模型
2.1 OSI参考模型的产生
为了解决不同的网络产品的兼容性。
OSI参考模型的主要优点:
- 开放的标准化接口
- 多厂商兼容性
- 易于理解、学习和更新协议标准
- 实现模块化工程,降低了开发实现的复杂度
- 便于故障排除
2.2 OSI参考模型的层次结构
OSI参考模型自下而上分为7层:
- 物理层(Physical Layer)
- 数据链路层(Data Link Layer)
- 网络层(Network Layer)
- 传输层(Transport Layer)
- 会话层(Session Layer)
- 表示层(Presentation Layer)
- 应用层(Application Layer)
物理层
- 在通信信道上传输原始比特流。
- 定义传输数据所需要的机械、电气、功能及规程的特征等,包括电压、电缆线、数据传输速率、接口等的定义。(物理层不是单单指传输电缆,而是指完成传输比特流所需要的机械、电气、功能及规程的特征,是一个整体)
数据链路层
- 提供对物理层的控制,检测(bit流)并纠正可能出现的错误。
- 进行流量控制。
- 数据链路层与物理地址、网络拓扑、线缆规划、错误校验、流量控制有关。
网络层
- 决定传输包的最佳路由。
- 关键问题是确定数据包从源端到目的端如何选择路由。网络层通过路由选择协议来计算路由。
- 网络层通过 路由选择协议来计算路由。
传输层
- 从会话层(上级)接受数据,分成较小的单元,传递给网络层(下级)。
- 确保到达对方的各段信息正确无误。
- 传输层建立、维护虚电路、进行差错校验和流量控制。
会话层
- 建立、管理和终止应用程序间的会话关系。
- 会话层提供双工(Duplex)协商、会话同步等。
表示层
- 关注传输信息的语法和语义,把来自应用层与计算机有关的数据格式处理成与计算机无关的格式,以保证对端设备能够准确无误地理解发送数据。
- 表示层也负责数据加密等。
应用层
- 最接近用户的一层,负责为应用程序提供网络服务。
- 文件出书、文件管理、电子邮件的消息处理等。
2.3 OSI参考模型层次间的关系以及数据封装
PDU(Protocol Data Unit,协议数据单元)泛指网络通信对等实体之间交换的信息单元,包括用户数据信息和协议控制信息等。
上三层PDU:
- 应用层数据——APDU(Application Protocol Data Unit,应用层协议数据单元)
- 表示层数据——PPDU(Presentation Protocol Data Unit,表示层协议数据单元)
- 会话层数据——SPDU(Session Protocol Data Unit,会话层协议数据单元)
- 传输层数据——段(Segment)
- 网络层数据——包(Packet)
- 数据链路层——帧(Frame)
- 物理层——比特(bit)
对等通信
终端主机每一层都与另一方的对等层次进行通信。这种通信并非直接进行的,而是通过下一层为其提供的服务来间接与对端的对等层交换数据。
- 下一层通过服务访问点(Service Access Point,SAP)为上一层提供服务。
- 为了保证对等层之间能够准确无误地传递数据,对等层之间运行相同的网络协议。
对等通信示意图
对等通信的意思就是:HostA的数据链路层和HostB的数据链路层通信,而不会直接和HostB的网络层通信。
封装(Encapsulation)
指网络节点将要传送的数据用特定的协议打包后传送。
- 多数协议是通过在原有数据之前加上封装头(Header)来实现封装。
- 一些协议还要再数据之后加上封装尾(Trailer)。
- 原有数据此时便称为载荷(Payload)。
- 发送方:接收上层的数据(载荷),封装,传递给下一层。
- 接收方:接收下层的数据(载荷),解封装,传递给上一层。
2.4 物理层
物理层(Physical Layer)是OSI参考模型的最底层或称为第1层,其功能是在终端设备间传输比特流。
物理层并不是指物理设备或物理媒介,而是有关物理设备通过物理媒体进行互连的描述和规定。
物理层协议定义了通信传输介质的物理特性。
- 机械特性
- 电气特性
- 功能特性
- 规程特性
物理层以比特流的方式传送来自数据链路层的数据,而不理会数据的含义或格式。同样,它接收数据后直接传送给数据链路层。
物理层只能看到0和1,它不能理解所处理的比特流的具体意义。
常见的物理层传输介质有:
- 同轴电缆(Coaxial Cable)
- 双绞线(Twisted Pair)
- 光纤(Fiber)
- 串行电缆(Serial Cable)
- 电磁波
典型的局域网物理层设备:
- 中继器
- 集线器
典型的广域网物理层设备:
调制解调器(Modem),数模转换
2.5 数据链路层
数据链路层的目的是负责在某一特定的介质或链路上传递数据。
数据链路层协议与链路介质有较强的相关性,不同的传输介质需要不同的数据链路层协议给予支持。
数据链路层的主要功能:
- 帧同步:编帧和识别帧
- 数据链路的建立、维持和释放
- 传输资源控制
- 流量控制
- 差错控制
- 寻址
- 标识上层数据
帧同步:
编帧和识别帧。
- 物理层只发送和接收比特流,而不关心比特流的次序、结构和含义。
- 数据链路层,数据以帧(Frame)为单位传送,因此发送方需要链路层将比特编成帧,接收方需要在链路层能从接收到的比特流中明确地区分出数据帧起始与终止的地方。
- 帧同步的方法包括:字节计数法、使用字符或比特填充的首尾界定符法、违法编码法等。
数据链路的建立、维持和释放
- 通信双方首先要建立一条数据链路。
- 建立链路时需要确保安全性。
- 传输过程中要维持数据链路。
- 通信结束后要释放数据链路。
传输资源控制:
在一些共享介质上,多个终端设备可能同时需要发送数据,此时必须由数据链路层协议对资源的分配加以裁决。
流量控制:
- 为了确保正常地收发数据
- 防止发送数据过快,导致接收方的缓存空间溢出,网络出现拥塞
- 必须及时控制发送方发送数据的速率
- 数据链路层控制的是相邻两节点之间数据链路上的流量
差错控制:
- 物理层无法辨别比特流错误,数据链路层协议需要以帧为单位实施差错检测。
- 最长用的差错检测方法是FCS(Frame Check Sequence,帧校验序列)
- FCS校验方法举例:发送一个帧时,根据其内容,通过诸如CRC(Cyclic Redundancy Check,循环冗余校验)这样的算法计算出校验和(Checksum),并将其加入此帧的FCS字段中发送给接收方。接收方通过对校验和进行检查,检测收到的帧在传输过程中是否发生差错。
- 一旦发现差错,就丢弃此帧。
寻址:
数据链路层标识介质上的所有节点,并且能寻找到目的节点,以便将数据发送到正确的节点。
标识上层数据:
- 数据链路层采用透明传输的方法传送网络层包(Packet),它对网络层呈现为一条无错的线路。
- 为了在同一链路上支持多种网络层协议,发送方必须在帧的控制信息中标识载荷(包)所属的网络层协议,这样才能将载荷提交给正确的上层协议来处理。
数据链路层的划分
- 为了对网络层协议提供统一接口
- 为了同时对下层的各种介质进行管理控制。
- 局域网的数据链路层划分为:LLC(Logic Link Control,逻辑链路控制)和MAC(Media Access Control,介质访问控制)两个子层。(个人理解,逻辑层是面向网络层的,介质层是面向物理层的)
IEEE的数据链路成标准是当今最流行的LAN(局域网)标准。这些标准统称为IEEE 802标准。
- 802.1小组描述了基本的局域网需要解决的问题,例如802.1d描述了生成树协议。
- 802.2小组负责LLC子层标准的制定。
- 802.3小组负责MAC子层标准的制定,典型技术如CSMA/CD(Carrier Sense Multiple Access with Collision Detection载波侦听多路访问/冲突检测)。
- 802.4小组负责令牌总线标准的制定。
- 802.5小组负责令牌环网标准的制定,IBM的令牌环小组和IEEE 802.5小组建立的标准是基本相同的。
- 802.11小组负责无线局域网标准的制定。
目前我国应用最为广泛的LAN标准是基于IEEE 802.3的以太网标准。
以太网交换机就是一种典型的数据链路层设备。
广域网常见的数据链路层标准有:
- HDLC(High-level Data Link Control,高级数据链路控制)
- PPP(Point-to-Point Protocol,点到点协议)
- X.25
- 帧中继(Frame Relay)
HDLC是ISO开发的一种面向位同步的数据链路层协议,它规定了使用帧字符和校验和的同步串行链路的数据封装方法。
PPP由RFC(Request for Comment)1661描述。
PPP协议由LCP(Link Control Protocol)、NCP(Network Control Protocol)以及PPP扩展协议族组成。
LCP规定了链路的建立、维护以及拆除。PPP协议支持同步和异步连接,支持多种网络层协议。
帧中继是一种交换式的数据链路层协议。相对于X.25来说,帧中继通过使用无差错校验机制,加快了数据转发速度,因此比X.25更有效。
2.6 网络层
- 网络层传送的是包(Packet,也称为分组或报文)。
- 网络层的任务就是要选择合适的路径转发数据包,使数据包能够正确无误地从发送方传递到接收方。
网络层的主要功能:
- 编址
- 路由选择
- 拥塞控制
- 异种网络互联
编址:
- 网络层为每个节点分配标识,这就是网络层的地址(Address)。
- 地址的分配为从源到目的路径的选择提供了基础。
路由选择:
- 网络层设备在计算路由之后,按照路由信息对数据包进行转发。
- 执行网络层路由选择的设备称为路由器(Router)
拥塞控制:
- 网络层负责控制拥塞。
- 防止网络上同时传输的数据包过多,可能会产生拥塞。
异种网络互联:
- 通信链路和介质类型是多种多样的,每一种链路都有其特殊的通信规定。
- 网络层必须能够工作在多种多样的链路和介质类型上,以便能够跨越多个网段提供通信服务。
网络层功能概述:
- 网络层处于传输层(上)和数据链路层之间,它负责向传输层提服务,同时负责将网络地址译成对应的物理地址。
- 网络层协议还能协调发送、传输以及接收设备的处理能力的不平衡性,如网络层可以对数据进行分段和重组,以使得数据包的长度能够满足该链路的数据链路层协议所支持的最大数据帧长度。
2.6.1 网络层地址
- IP地址由4字节组成,通常采用点分十进制表示。(局域网)
- IPX地址由10字节组成,前4字节表示网络地址,后6字节表示主机地址,通常用十六进制数字表示。(广域网?)
- 网络层地址通常具有层次化结构,以便将一个巨大的网络区分成若干小块,以便寻址和管理。一般的做法是划分网络地址和主机地址,这样转发数据包时就可以先发送到网络地址所标识的网络,再由网络上的网关将其发送给主机地址所标识的目的主机。
- 网络层地址通常是由管理员从逻辑上分配的,因此也称为逻辑地址。一般来说是唯一的。
2.6.2 路由协议与可路由协议
可路由协议(Routed Protocol)
- 定义数据包内各个字段的格式和用途的网络层封装协议。
- 该网络层协议允许将数据包从一个网络设备转发到另一个网络设备。
- 常见的可路由协议:TCP/IP协议族中的IP协议,Novell IPX协议族中的IPX协议
个人理解:可路由协议routed,是定义了格式和用途,同时说明怎么转发。IP和IPX是常见的协议。
路由协议(Routing Protocol)
- 运行于路由器上,在路由器之间传递信息,计算用于转发的路由并形成路由表(Routing Table),以便为可路由协议提供路由选择服务。
- 路由协议使路由信息能够在相邻路由器之间传递,确保所有路由器了解到达各个目的地的路径。
- 常见的路由协议:RIP(Routing Information Protocol,路由信息协议)、OSPF(Open Shortest Path First,开放式最短路径优先)、IS-IS(Intermediate System to Intermediate System)等。
个人理解:路由协议就是在路由器之间传递路由信息,形成路由表,给可路由协议选择的余地。
路由协议形成路由表,Routing Protocol
可路由协议规定格式和用途,怎么转发数据包,Routed Protocol
2.6.3面向连接和无连接服务
- 面向连接的服务(Connect-oriented Service)
- 无连接服务(Connectionless Service)
面向连接的服务:
- 在通信前首先要建立连接,通信完成后释放连接。
- 被叫用户拒绝连接时,连接宣告失败。
- 在建立连接阶段,有关的服务原语以及协议数据单元中,必须给出源主机和目的主机的地址,建立虚链路连接。
- 在数据传输阶段,可以使用一个连接标识符来表示上述这种连接关系。
- 通常面向连接的服务提供可靠的报文序列服务。接受一方确认收到的每一份报文,确认信息传递给发送方,增加了额外的开销和延迟。另外接收方利用序列号判断接收到的报文是否乱序,并对其按正确的顺序进行排列。
- 面向连接的服务比较适用于在一定时间内向同一个目的地发送很多报文的情况,对于短报文数据的发送而言,面向连接的服务开销过大。
无连接服务:
- 两个实体之间的通信不需要先建立一个连接。其下层的资源不需要事先预定保留,这些资源是在数据传输时动态分配的。
- 无连接服务类似邮政系统,提供尽力而为(Best-Effort)服务。
- 无连接服务不需要通信的两个实体同时处于激活状态,只需要正在工作的实体处于激活状态。
- 优点是灵活方便且比较迅速,但是不能防止报文的丢失、重复或失序。
- 无连接服务适合传送少量的零星的报文。
并不是所有的应用程序都需要连接,对于某些应用而言,百分之百的可靠性没有必要;对另一些应用而言,其上层应用已经实现了可靠应答机制,所以其本身也不必再确保可靠性。
OSI参考模型的网络层协议通常提供无连接的服务,不保证数据包的有序可靠传输,数据可靠传输功能通常在传输层实现。
2.6.4 网络层协议操作
如上图HostA应用程序发送数据到HostB
-
HostA应用层将信息转化为能在网络中传输的数据。
-
HostA表示层给数据加上表示层报头,协商数据格式,是否加密,转化成对端能够理解的数据格式。
-
HostA会话层加上会话层报头。
-
HostA传输层加上传输层报头称为段(Segment)。
-
HostA网络层将段封装成包(Packet)。
-
HostA数据链路层加上数据链路层头封装为帧(Frame)。
-
HostA物理层转换为比特流。
-
HostA将比特流发送给网络中距离自己最近的网关(Gateway)——路由器RTA。——物理层
-
RTA接收到比特流后,辨认出数据帧并检查该帧。——数据链路层
-
RTA,去掉链路层头得到网络层包,检查包头以决定目的地址所在网段,然后通过查找路由转发信息获取相应输出接口及下一跳的路由器RTB——网络层
-
RTA输出接口链路层为该包加上数据链路层帧头,封装成数据链路层帧。
-
RTA物理层转化为比特流,发送给RTB。
-
依次最终发送到HostB。
-
HostB进行逐层解封装,最终到达相应的应用程序。
2.7传输层
- 传输层(Transport Layer)的功能是为会话层提供无差错的传送链路,保证两台设备间传递信息的正确无误。
- 传输层传送的数据单位是段(Segment)。
- 传输层从会话层接收数据,并传递给网络层,如果会话层的数据过大,传输层将其切割成较小的数据单元——段,进行传送。
- 传输层负责创建端到端的通信连接。通过这一层,通信双方主机上的应用程序之间通过对方的地址信息进行直接对话,而不用考虑中间网络上有多少个中间节点(这是网络层和其下层需要考虑的)。
- 传输层既可以为每个会话层请求建立一个单独的连接,也可以为多个会话层请求建立一个单独的连接,这称为多路复用(Multiplexing)。但不论如何,这种传输层服务对会话层都是透明的。
- 差错校验和重传。接收方的传输层识别除包的顺序,重新排序,验证所有的包都已被收到,如果出现错误和丢失,接收方必须请求对方重新传送丢失的包。
- 为了避免发送速度超出网络或接收方的处理能力,传输层还负责执行流量控制(Flow Control),在资源不足时降低流量,在资源充足时提高流量。
2.8 会话层、表示层和应用层
会话层:
- 会话层(Session Layer)利用传出层提供的端到端服务,向表示层或会话用户提供会话服务。
- 会话层建立会话关系,保持会话过程的畅通。
- 会话层也处理差错恢复,如断点续传。
- 如果会话断开 会话层能重新建立通信。
表示层(Presentation Layer)
- 表示层负责将应用层信息“表示”成一种格式,让对端设备能够正确识别。
- 表示层主要关心语义和语法。如JPEG、BMP格式。
- 表示层还负责数据的加密(Encryption)和压缩(Compression)。
应用层(Application Layer)
- 是OSI的最高层,它直接与用户和应用程序打交道。
- 负责对软件提供接口以使程序能使用网络服务,如文件传输、文件管理、电子邮件等。
3. TCP/IP模型
- OSI参考模型为清晰地理解互联网络、开发网络产品和网络设计带来了极大的方便。
- 但是OSI过于复杂,难以完全实现。
- OSI各层功能具有一定的重复性,效率较低。
- 目前TCP/IP开放系统因其实现简单,目前已经成为事实上的互联网基础协议族。
3.1 TCP/IP模型的层次结构
与OSI参考模型一样,TCP/IP(Transfer Control Protocol/Internet Protocol,传输控制协议/网际协议)模型也采用层次化结构,每一层负责不同的通信功能。
TCP/IP模型分为4层——应用层、传输层、网络层、网络接口层。
3.2 网络接口层
- TCP/IP的网络接口层大体对应于OSI模型的数据链路层和物理层。
局域网常用的网络接口层协议包括:
- 以太网
- FDDI(Fiber Distributed Data Interface,光纤分布式数据接口)
- 令牌环(Token Ring)
串行连接:
- SLIP(Serial Line IP,串行线路IP)
- HDLC
- PPP
分组交换技术:
- X.25
- 帧中继(Frame Relay)
- ATM(Asynchronous Transfer Mode,异步传输模式)
3.3 网络层
- 网络层是TCP/IP模型的关键部分。
- 主要功能是使主机能够将信息发往任何网络并传送到正确的目标。
- 网络层定义了包格式及其协议——IP(Internet Protocol,互联网协议)
- 网络层使用IP地址(IP Address)标识网络节点。
- 使用路由协议(Routing Protocol)生成路由信息,并且根据这些路由信息实现包的转发。
- 使用ICMP、IGMP协议协助管理网络。
- ICMP(Internet Control Message Protocol,互联网控制消息协议)通常也被当作一个网络层协议,通过预定义的消息在互联网上传递IP协议的相关信息,从而对IP网络提供管理控制功能。(一般把ICMP和IGMP算作是传输层的协议)
- ICMP的一个典型应用就是探测IP网络的可达性。
3.4 传输层
传输层位于应用层和网络层之间,主要负责为两台主机上的应用程序提供端到端的连接,使源、目的端主机上的对等实体可以进行会话。
传输层协议主要包括:
- TCP(Transmission Control Protocol,传输控制协议)
- UDP(User Datagram Protocol,用户数据报协议)
TCP/IP传输层协议的主要作用:
- 提供面向连接或无连接的服务
- 维护连接状态
- 对应用层数据进行分段和封装
- 实现多路复用(Multiplexing)
- 可靠地传输数据(TCP通过序列号和校验等机制,UDP智能由应用层保证可靠性)
- 执行流量控制(Flow Control)
3.5 应用层
- TCP/IP模型没有单独的会话层和表示层,其功能融合在应用层中。
- 应用层直接与用户和应用程序打交道,负责对软件提供接口以使程序能使用网络服务。
- 常见的应用层协议包括:
- Telnet(TELecommunications)
- FTP(File Transfer Protocol,文件传输协议)
- TFTP(Trivial File Transfer Protocol,简单文件传输协议)
- SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)
- SNMP(Simple Network Management Protocol,简单网络管理协议)
- HTTP(HyperText Transfer Protocol,超文本传输协议)
4. 本章总结
- 理解并掌握OSI参考模型和TCP/IP模型
- OSI模型为七层结构;TCP/IP为四层结构