网络分层
网络分层
ISO提出的OSI(Open System Interconnection)模型将网络分为七层,即物理层( Physical )、数据链路层(Data Link)、网络层(Network)、传输层(Transport)、会话层(Session)、表示层(Presentation)和应用层(Application)。OSI模型并不是一个标准,而是一个概念性框架,一个在制定标准时使用的概念性框架。OSI模型中各层功能
| OSI中的层 | 功能 | 例子 |
| 应用层 | 为应用软件而设计的接口,实现与另一应用软件进行网络通信的功能 | HTTP、SMTP、SSH、Telnet、POP3等 |
| 表示层 | 把数据格式化为适合传输且能被接收者兼容的格式 | XDR、ASN.1、ASCII等 |
| 会话层 | 设置和维护网络中两台计算机之间的通信连接 | RPC、BSD sockets、密码验证协议等 |
| 传输层 | 提供端对端的接口(把传输表头加至数据以形成数据包) | TCP、UDP、RTP等 |
| 网络层 | 为数据包选择路由(决定数据的路径选择和转寄,把网络表头加至数据以形成数据包) | IP、IPX、ICMP、BGP等 |
| 数据链路层 | 负责网络寻址、错误侦测和发错;添加表头和表尾,生成数据帧;分为LLC和MAC两个子层 | 以太网、令牌环、帧中继、PPP、IEEE802.11等 |
| 物理层 | 以二进制数据形式在物理媒体上传输数据(数据帧) | 调制解调器、无线电、光纤等 |
TCP/IP是事实的标准
OSI模型的分层复杂且不实用,在因特网中,实际使用的是TCP/IP分层模型。 TCP/IP分层模型(TCP/IP Layering Model),又称作因特网分层模型(Internet Layering Model)或因特网参考模型(Internet Reference Model),是我们“现实所见”的各层。它是现实存在的,通过它,我们可以用比较简单的方式,理解现实网络是如何以分层的方式搭载起来的。 TCP/IP分层模型在各层名称上,虽然有的与OSI模型中的一样,但它们并不完全是相同的东西。TCP/IP协议分层模型有:四层模型、五层模型以及七层模型。- 四层模型:网络接口层、网络层、传输层、应用层
- 五层模型:物理层、数据链路层、网络层、传输层、应用层
- 七层模型:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层
| 四层模型 | 五层模型 | 七层模型 |
| 1.应用层 | 1.应用层 | 1.应用层 |
| 2.表示层 | ||
| 3.会话层 | ||
| 2.传输层 | 2.传输层 | 4.传输层 |
| 3.网络层 | 3.网络层 | 5.网络层 |
| 4.网络接口层 | 4.数据链路层 | 6.数据链路层 |
| 5.物理层 | 7.物理层 |
物理层: 涉及物理实体,电缆/光缆传输的是高低电平0/1的比特流。 数据链路层: 在一条物理线路之上,通过一些规程或协议来控制数据的传输,以保证被传输数据的正确性。实现这些规程或协议的硬件和软件加上物理线路,就构成了数据链路(从数据发送点到数据接收点所经过的传输途径)。当采用复用技术时,一条物理链路上可以有多条数据链路。 数据链路层主要有两个功能 :帧编码和误差纠正控制。帧编码意味着定义一个包含信息频率、位同步、源地址、目标地址以及其他控制信息的数据包。数据链路层协议又被分为两个子层 :逻辑链路控制(LLC)协议和媒体访问控制(MAC)协议。 每个网络设备都最少有一个网卡(运营商网络路由器的每个端口是一个网卡),每个网卡有网卡地址也叫硬件地址(英文缩写MAC),数据链路层的协议数据单元数据帧(PDU)的首部信息里面有自身MAC和目的MAC,这也是属于物理层范畴,因为需要涉及具体的物理设备连接。 网络层: 对应OSI模型中叫做网络层。 根据目的IP进行发送,一般都是IP路由转发协议,而它最终会转化到数据链路层。需要使用到链路层的ARP协议,ARP协议可以根据网络层PDU的IP地址获得物理地址,这样就可以使得数据链路层能知道发送到哪个MAC,MAC地址只需要局域网内部唯一就可以正确转发到目的MAC。
总体而言(非严肃严谨的总结): 物理设备【包括个人电脑、路由等】属于物理层,它们遵守物理层协议,以实现自己的功能,比如,无线路由的射频波段等。 网线、无线电等,以及它们两端点的物理设备,构成了数据链路层,遵守数据链路层协议,使它们能够在两端点之间正确传输数据。向下,将数据编码转为物理信号,供物理层传输;向上,将物理信号转为编码。 无数条数据链路构成了网络,而实现网络的第一步,就是区分每条链路的端点,于是IP协议应用而生,只有区分了不同端点,才可以向上为数据传输提供基础,向下找到具体数据链路进行传输数据。 网络最基础、最应该、最本该实现的功能就是“数据传输”——遵守不同的传输层协议(比如:TCP、UDP),实现不同要求的数据传输,以在不同IP的端点之间进行数据流转,如果再配上端口号,则可轻松实现网络里“应用程序”之间的数据传输。 此时,数据传输并没有所谓的“状态”存在(Session),不能持久地为“应用程序”提供传输服务,会话层的诞生,就是为了解决这个问题。会话层协议(如果有)约定了建立、管理和终止本地和远程应用程序之间的连接的方式(一般,应用程序内部会显式实现会话的管理维护)。在现代 TCP/IP 系统中,会话层是不存在的,只是 TCP 协议的一部分。在 OSI 模型中,这一层负责优雅地关闭会话,还负责会话的“检查点”和恢复。可以作一个形象的比喻,“会话”是“数据传输”的主管,统领一批数据传输的连接,而会话层,就是这位主管的管理方式。到了此层,数据仍然是接收者不可识别、不可理解的“纯乱码”。 从数据透明性的角度讲,从物理层至会话层,基本目的是实现透明的数据运输。而表示层和应用层,则是对数据的理解和使用,并不透明。 表示层(或称表达层),负责把数据转换为与系统格式兼容(并适合传输[压缩、加密等])的格式,关心“被传输数据”发出的语法和语义。作为接收者,使用协议以将“乱码”读懂;或作为发送者,按协议将数据转为接收者可读懂的“码”。该层协议(如果有)是网络数据和应用程序数据的翻译者,比如,将 EBCDIC 编码的文本文件转换为 ASCII 编码的文件,将对象序列化为XML或将XML反序列化为对象……题外话,加密分为链路加密和端到端的加密,对于表示层,参与的加密属于端到端的加密。 应用层并不是应用程序实体本身,是开放的、被传输数据进入应用程序实体的、与另一应用软件之间进行通信的接口。例如,预订网站可能有两个应用程序实体:一个使用 HTTP 与其用户通信,另一个使用远程数据库协议来记录预订。因此,应用层无法确定网络中资源的可用性,而是交由应用程序实体内部进行。另一种对应用层的理解可以是:应用层是在不同应用程序实体之上抽象出来的“应用程序”,总之,它绝不是应用程序实体本身。比如,HTTP协议,并不是IIS应用程序或者Tomcat等。