前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >30张图把网络协议分层讲活了,真香!

30张图把网络协议分层讲活了,真香!

原创
作者头像
网络技术联盟站
修改2021-05-12 18:07:11
1.7K1
修改2021-05-12 18:07:11
举报

在开始今天的文章之前,首先想一个问题:

网络如此复杂,该如何设计并处理?

答案一定是“分而治之”!

  • 相互通信的两个计算机系统必须高度协调工作才行,而这种“协调”是相当复杂的。
  • 分层”可将庞大而复杂的问题,转化为若干较小的局部问题,而这些较小的局部问题就比较易于研究和处理。
  • 分工和合作

计算机网络的体系结构

定义:为了完成计算机间的通信合作,把每个计算机互联的功能划分成定义明确的层次(Layer/Level),规定了相邻层之间的接口及服务以及同层次进程通信的协议。

ISO/OSI的三级抽象概念:

  • 最高级:OSI七层模型的划分。
  • 低一级:OSI服务的定义。
  • 最低级:OSI的协议规范。

划分层次的必要性

  • 计算机网络中的数据交换必须遵守事先约定好的规则
  • 这些规则明确规定了所交换的数据的格式以及有关的同步问题。
  • 为进行网络中的数据交换而建立的规则、标准或约定即网络协议(network protocol),简称为协议。

协议的 “层次”

网络是复杂的!有诸多影响“成分”:

  • 主机
  • 路由器
  • 各种介质的链路
  • 应用程序
  • 协议
  • 硬件, 软件

那么问题又来了:

  • 如何将复杂的网络问题依据一定的规则组织成一定的结构?
  • 至少要为讨论网络问题建设一个技术平台?

为什么要分层?

对于复杂的系统:

  • 显式的结构使得复杂系统的问题定位和不同组成部分之间的关联讨论称为可能 - 分层的参考模型(reference model) 可用于讨论
  • 模块化简化了系统的维护和升级 - 某个层次服务实现对系统的其余部分是透明的

看到这里,大家可以想一个问题:分层的做法有没有坏处?

计算机网络体系结构模型

如下图所示,各层之间相互独立,每层只实现一种相对独立的功能,每层之间界面自然清晰,易于理解,相互交流尽可能少,保持下层对上层的独立性,上层单向使用上层提供的服务,整个分层结构应该能促进标准化工作。

体系结构标准化网络有两个阶段。

体系结构标准化网络阶段一

计算机网络制造厂商的标准化:

  • IBM的SNA(System Network Architecture)
  • DEC的DNA(Digital Network Architecture)
  • Novell的NetWare
  • Microsoft的LAN Manager等
  • Apple的AppleTalk
体系结构标准化网络阶段二

国际标准化:

  • ISO(International Standard Organization)的OSI RM(Open Systems Interconnection Reference Model)
  • IEEE(Institute of Electrical and Electronic Engineers)的802局域网标准
  • ITU-T(International Telecommunication Union Telecommunication Standardization Sector,原为CCITT,Consultative Committee for International Telegraph and Telephone)的三个系列标准: - V系列,用于电报和电话网(PSTN)上的数据传输。 - X系列,用于公用数据网(PDN)上的数据传输。 - I系列,用于综合业务数字网(ISDN)上的数据传输。
  • ANSI(American National Standards Institute)
  • EIA/TIA(Electronic Industry Association/Telecommunications Industry Association)

每个标准,都离不开协议,那么什么是协议呢?

协议是控制两个对等实体之间通信的规则的集合。在协议的控制下,两个对等实体间的通信使得本层能够向上一层提供服务,而要实现本层协议,还需要使用下一层提供的服务。

因特网协议栈

  • 应用层: 支持网络应用 - ftp, smtp, http
  • 传输层: 主机进程间的数据传递 - tcp, udp
  • 网络层: 将数据报从信源传递到信宿 - ip, 路由选择协议
  • 链路层: 数据在网络上的相邻结点间的传输 - ppp, ethernet
  • 物理层: 信道上传送的位流

如下图所示:

说到协议,肯定要讲讲协议的分层和数据的封装。

协议分层和数据的封装

简单来说,每个层次都从上层取得数据

  • 加上首部信息形成新的数据单元
  • 将新的数据单元传递给下一层次

因特网的标准化工作对因特网的发展起到了非常重要的作用。我们知道, MT4LC4M16R6TG-6标准化工作的好坏对一种技术的发展有着很大的影响。缺乏国际标准将会使技术的发展处于比较混乱的状态,而盲目自由竞争的结果很可能形成多种技术体制并存且互不兼容的状态(如过去形成的彩电三大制式),给用户带来较大的不方便。但国际标准的制定又是一个非常复杂的问题,这里既有很多技术问题,也有很多属于非技术问题,如不同厂商之间经济利益的夺问题等。标准制定的时机也很重要。标准制定得过早.由于技术还没有发展到成熟水平,会使技术比较陈旧的标准限制了产品的技术水平。其结果是以后不得不再次修订标准,造成浪费。反之,若标准制定得太迟,也会使技术的发展无章可循,造成产品的互不兼容,因而也会影响技术的发展。因特网在制定其标准上很有特色。其中的一个很大的特点是面向公众。因特网所有的RFC文档都可从因特网上免费下载,而且任何人都可以用电子邮件随时发表对某个文档的意见或建议。这种方式对因特网的迅速发展影响很大。

1992年,因特网(Internet)不再归美国政府管辖,因此成立了一个国际性组织叫做因特网协会ISOC (Internet Society),以便对因特网进行全面管理以及在世界范围内促进其发展和使用。

ISOC下面有一个技术组织叫做因特网体系结构研究委员会IAB (Internet Architecture Board),负责管理因特网有关协议的开发。

IAB下面又设有两个工程部:

  • 因特网工程部IETF (Internet Engineering Task Force):解决短期问题
  • 因特网研究部IRTF (Internet Research Task Force):解决长期问题

从一个普通文档上升到因特网的正式标准要经过四个阶段:

  1. 因特网草案(Internet Draft)。
  2. 建议标准(Proposed Standard)。
  3. 草案标准(Draft Standard)。
  4. 因特网标准(Internet Standard)。

各种RFC之间的关系

以上内容着重于介绍背景,下面我们回归到分层中。

计算机网络分层的一些概念

  • 实体(entity):每层中的互动元素(如进程或接口电路)。
  • 对等实体(peer entity):不同开放系统上同一层中的实体。
  • 协议(protocol):某层上通信的规则。
  • 协议栈(protocol stack):各层协议按层次顺序排列的协议序列。
  • 服务(service):低层向相邻高层提供的通信能力。
  • 接口(interface):相邻层之间的边界。
  • 服务访问点(SAP):位于接口上的具体地点(地址)。
  • 服务提供者(service provider):服务中的底层实体。
  • 服务用户(service user):服务中的高层实体。

低层向高层提供的服务

  • 面向连接的服务(connection-oriented service):象打电话一样分为三个阶段,建立连接;使用连接;释放连接。
  • 无连接服务(connectionless service):象寄邮件一样,每个报文都独立寻址,独立路由。

服务质量(Quality of Service)的好坏(可靠性),最终取决于是否确认(acknowledge)。但确认的过程会增加额外的开销和延迟。总结为4种服务形式:

OSI参考模型的数据传输

OSI参考模型并不是一个标准,而是一个在制定标准时所使用的概念性框架。

发送方:

  • 应用层产生数据,
  • 表示层定义数据转化格式的规则,以便接收方能够对数据进行解读,
  • 会话层负责应用程序之间建立连接
  • 传输层通过标识端口号,使数据能够知道对应产生和接收数据的应用程序
  • 网络层通过IP地址,选择最优的路径将数据传送到对应的子网,
  • 数据链路层通过网卡确定的MAC物理地址,将数据准确的送到接收方的主机
  • 物理层为数据的传输提供传输的线路以及传输的规则(速率等)

接收方接收之后:

  • 物理层将数据进行传输
  • 数据链路层将数据进行解封,分析帧头信息的MAC地址是否是自己的,并且将帧数据(数据部分)发送到上层网络层
  • 网络层将数据解封,去掉头部IP地址,将数据部分发送到上层传输层。
  • 传输层利用数据头部信息的端口好找到对应的应用程序,并且将数据部分发送给对应的应用程序
  • 表示层将数据按照规定的格式对数据进行解密和转化,交给应用程序

OSI模型是不是没有缺点?

答案一定是否定的!

OSI参考模型的问题

  • 复杂、繁琐、低效、官僚。国际官僚政论者语言(international bureaucrat speak)
  • 不符合“双象天启”(apocalypse of the two elphants)关于标准的理论。

所以就出现了两种国际标准:

  • 法律上的国际标准 OSI 并没有得到市场的认可。
  • 是非国际标准 TCP/IP 现在获得了最广泛的应用。 - TCP/IP 常被称为事实上的 国际标准。

讲到这里了,大家对于分层概念应该很清楚了,那么下面给大家举个例子,就以两台计算机发送、接收文件为例。

  • 计算机 1 向计算机 2 通过网络发送文件。
  • 可以将要做的工作进行如下的划分。
  • 第一类工作与传送文件直接有关。 - 确信对方已做好接收和存储文件的准备。 - 双方协调好一致的文件格式。
  • 两个计算机将文件传送模块作为最高的一层 。剩下的工作由下面的模块负责。

两个计算机交换文件:

再设计一个通信服务模块:

再设计一个网络接入模块:

五层协议的体系结构

五层协议网络体系结构是综合OSI 七层和TCP/IP四层的优点,采用的一种原理体系结构。

各层的主要功能:

  • 物理层: 物理层的任务就是透明地传送比特流。物理层还要确定连接电缆插头的定义及连接法。
  • 数据链路层:数据链路层的任务是在两个相邻结点间的线路上无差错地传送以帧为单位的数据。每一帧包括数据和必要的控制信息。
  • 网络层:网络层的任务就是要选择合适的路由,使发送站的运输层所传下来的分组能够正确无误地按照地址找到目的站,并交付给目的站的运输层。
  • 运输层:运输层的任务是向上一层的进行通信的两个进程之间提供一个可靠的端到端服务,使它们看不见运输层以下的数据通信的细节。
  • 应用层:应用层直接为用户的应用进程提供服务。

我们再以两台计算机发送、接收数据为例:

1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9
10
10
11
11
12
12
13
13
14
14
15
15
16
16
17
17
18
18
19
19

实体、协议、服务和服务访问点

  • 本层的服务用户只能看见服务而无法看见下面的协议。
  • 下面的协议对上面的服务用户是透明的。
  • 协议是“水平的”,即协议是控制对等实体之间通信的规则。
  • 服务是“垂直的”,即服务是由下层向上层通过层间接口提供的。
  • 同一系统相邻两层的实体进行交互的地方,称为服务访问点 SAP (Service Access Point)。

OSI 与 TCP/IP体系结构的比较

使用 TCP/IP 协议进行通信

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 计算机网络的体系结构
  • 划分层次的必要性
  • 协议的 “层次”
  • 为什么要分层?
  • 计算机网络体系结构模型
  • 因特网协议栈
  • 协议分层和数据的封装
  • 各种RFC之间的关系
  • 计算机网络分层的一些概念
  • 低层向高层提供的服务
  • OSI参考模型的数据传输
  • OSI参考模型的问题
  • 五层协议的体系结构
  • 实体、协议、服务和服务访问点
  • OSI 与 TCP/IP体系结构的比较
  • 使用 TCP/IP 协议进行通信
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com