计算机网络体系的形成
两台计算机要互相传送文件需解决很多问题,比如:
- 必须有一条传送数据的通路。
- 发起方必须激活通路。
- 要告诉网络如何识别接收方。
- 发起方要清楚对方是否已开机,且与网络连接正常。
- 发起方要清楚对方是否准备好接收和存储文件。
- 若文件格式不兼容,要完成格式的转换。
- 要处理各种差错和意外事故,保证收到正确的文件。
面对这一系列的问题,最初的 ARPANET 设计时提出了分层的设计方法,将庞大而复杂的问题,转化为若干较小的局部问题,1974 年,IBM 按照分层的方法制定并提出了系统网络体系结构 SNA (System Network Architecture),此后,其他一些公司也相继推出了具有不同名称的体系结构。
但由于网络体系结构的不同,不同公司的设备很难互相连通。
ISO (国际标准化组织) 提出的 OSI/RM (Open Systems Interconnection Reference Model) 是使各种计算机在世界范围内互连成网的标准框架,OSI/RM 只是个抽象的概念,1983年,形成了著名的 ISO 7498 国际标准,即七层协议的体系结构。
但最终ISO/OSI 失败了,而基于 TCP/IP 的互联网抢先在全球相当大的范围成功地运行。
所以存在两种国际标准:法律上的 (de jure) 国际标准 OSI,但并没有得到市场的认可;事实上的 (de facto) 国际标准 TCP/IP,获得了最广泛的应用。
协议与划分层次
网络协议 (network protocol),简称为协议,是为进行网络中的数据交换而建立的规则、标准或约定。
协议包括两种形式:
- 文字描述:便于人来阅读和理解。
- 程序代码:让计算机能够理解。
由之前ARPANET 的研制经验表明:对于非常复杂的计算机网络协议,其结构应该是层次式的。
各层完成的主要功能:
- 差错控制:使相应层次对等方的通信更加可靠。
- 流量控制:发送端的发送速率必须使接收端来得及接收,不要太快。
- 分段和重装:发送端将要发送的数据块划分为更小的单位,在接收端将其还原。
- 复用和分用:发送端几个高层会话复用一条低层的连接,在接收端再进行分用。
- 连接建立和释放:交换数据前先建立一条逻辑连接,数据传送结束后释放连接。
网络的体系结构 (Network Architecture) 是计算机网络的各层及其协议的集合,就是这个计算机网络及其构件所应完成的功能的精确定义(不涉及实现)。
实现 (implementation) 是遵循这种体系结构的前提下,用何种硬件或软件完成这些功能的问题。
体系结构是抽象的,而实现则是具体的,是真正在运行的计算机硬件和软件。
OSI 的七层协议体系结构
高层:负责主机之间的数据传输
应用层 (Applications Layer) | 网络服务与最终用户的一个接口 |
表示层 (Presentation Layer) | 数据的表示、安全、压缩 |
会话层 (Session Layer) | 建立、管理、中止会话 |
低层:负责网络之间的数据传输
运输层 (Transport Layer) | 定义传输数据的协议端口号,以及流控和差错校验 |
网络层 (Network Layer) | 进行逻辑地址寻址、差错校验等功能 |
数据链路层 (Data Link Layer) | 建立逻辑连接、进行硬件地址寻址、差错校验等功能 |
物理层 (Physical Layer) | 建立、维护、断开物理连接 |
TCP/IP协议族体系结构
TCP/IP 的体系结构是事实上的国际标准,实质上TCP/IP只有最上面的三层,最下面的网络接口层(链路层)并没有具体内容,链路层所使用的各种局域网标准是由IEEE的802委员会下属的各工作组负责制定的。
现在互联网使用的 TCP/IP 体系结构已经发生了演变,即某些应用程序可以直接使用 IP 层,或甚至直接使用最下面的网络接口层。
IP 层可以支持多种的运输层协议,IP 协议可以在多种类型的网络上运行,设计理念就是网络核心部分越简单越好。
五层协议的体系结构
应用层
应用层的任务是通过应用进程间的交互来完成特定网络应用。
应用层的协议定义的是应用进程间通信和交互的规则。
把应用层交互的数据单元称为报文(message),例如:DNS,SMTP,FTP,RPC,SNMP。
运输层
运输层的任务是负责向两台主机中进程之间的通信提供通用的数据传输服务。
运输层具有复用和分用的功能。
主要使用两种协议:
- 传输控制协议TCP(Transmission Control Protocol):提供面向连接的、可靠的数据传输服务,数据传输的单位是报文段 (segment)。
- 用户数据报协议UDP (User Datagram Protocol):提供无连接的尽最大努力 (best-effort) 的数据传输服务(不保证数据传输的可靠性), 数据传输的单位是用户数据报。
网络层
网际层为分组交换网上的不同主机提供通信服务。
两个具体任务:
- 路由选择:通过一定的算法,在互联网中的每一个路由器上,生成一个用来转发分组的转发表。
- 转发:每一个路由器在接收到一个分组时,要依据转发表中指明的路径把分组转发到下一个路由器。
互联网使用的网络层协议是无连接的网际协议 IP (Internet Protocol) 和许多种路由选择协议,因此互联网的网络层也叫做网际层或 IP 层。IP 协议分组也叫做 IP 数据报,或简称为数据报。
数据链路层
数据链路层常简称为链路层。
数据链路层的任务是实现两个相邻节点之间的可靠通信。 在两个相邻节点间的链路上传送帧(frame)。
如发现有差错,就简单地丢弃出错帧。 如果需要改正出现的差错,就要采用可靠传输协议来纠正出现的差错。这种方法会使数据链路层协议复杂。
物理层
物理层的任务是实现比特(0 或 1)的传输。 确定连接电缆的插头应当有多少根引脚,以及各引脚应如何连接。需要注意的是:传递信息所利用的一些物理媒体,如双绞线、同轴电缆、光缆、无线信道等,并不在物理层协议之内,而是在物理层协议的下面。