【一】OSI 网络模型
OSI (开放系统互联)模型是国际标准化组织提出的一个概念框架,旨在为不同的计算机和网络在全球范围内的互联提供标准化指导。这个模型将计算机网络体系结构划分为七个层次,从上到下依次为:应用层、表示层、会话层、传输层、网络层、数据链路层和物理层。每一层都提供了清晰的接口,有助于理解工业标准的TCP/IP协议。各层实际上是协议的集合,例如应用层不仅指应用程序,还包括大量应用层协议,确保应用程序在网络中有效运行。
以下是对OSI七层模型的详细说明:
(1)应用层
应用层是网络应用程序使用的层,与用户最近。它通过协议如FTP(文件传输协议)、HTTP/HTTPS(网页浏览协议)、SMTP(邮件传输协议)、Telnet(远程登录协议)提供服务。网络应用指那些利用互联网的计算机应用程序来执行用户操作。
(2)表示层
表示层是OSI模型的第六层,从应用层接收数据,这些数据以字符和数字形式出现。表示层将这些字符和数据转换成机器可理解的二进制格式,即“翻译”功能,将人类语言转换成机器语言。在数据传输之前,表示层会对原始数据进行压缩,减少所需比特数。这对于实时视频和音频传输尤为重要,以保持数据传输的完整性。
(3)会话层
会话层是OSI模型的第五层,作为用户应用程序和网络之间的接口。其主要职责是为两个实体的表示层提供建立和使用连接的方法。会话层负责组织和协调两个会话进程之间的通信,并管理数据交换。用户可以按照半双工、单工和全双工的方式建立会话,使用专门设计的、更易记的地址进行连接。
(4)传输层
传输层是OSI模型的第四层,是网络体系结构中的关键层之一,负责在两个主机进程间提供通信服务。传输层具有复用和分用功能,保证数据传输的可靠性。它通过流量控制、分段/重组和差错控制确保数据在终端用户之间透明传输。传输层的一些协议是面向连接的,能追踪和重传失败的分段。
(5)网络层
网络层是OSI模型的第三层,是最复杂的一层,也是通信子网的最高层。其主要任务是通过路由选择算法,为报文或分组在通信子网中选择最佳路径。它负责在数据链路层与传输层之间转发信息,建立、维持和终止网络连接。具体来说,网络层将数据链路层的数据转换为数据包,通过路径选择、分段组合和路由控制,将信息从一个网络设备传送到另一个。
(6)数据链路层
数据链路层是OSI模型的第二层,负责建立和管理节点间的链路。其主要功能是通过各种控制协议,将有差错的物理信道变为无差错的、可靠传输数据帧的数据链路。在计算机网络中,物理链路由于各种干扰是不可靠的。因此,数据链路层通过差错控制和流量控制方法,将物理层提供的比特流转换为可靠的数据链路。
(7)物理层
物理层是OSI模型的第一层,涉及电气、机械、功能和规程特性的统一标准。这四个方面的高度统一是实现全球范围内网络互通的基础。
【二】 TCP/IP 协议
当前我们使用的互联网起源于ARPANET。ARPANET最初使用的是一种名为NCP的网络协议。然而,随着网络的扩展和节点数量的增加,以及用户对网络需求的提升,NCP协议逐渐不能满足ARPANET的发展要求。更重要的是,NCP只能在相同操作系统环境下工作,导致Windows用户无法与MacOS和Android用户通信。因此,ARPANET迫切需要一种新的协议来替代NCP。这个任务交由两位著名的计算机科学家罗伯特·卡恩和温顿·瑟夫来完成,许多人称他们为互联网之父。1974年,他们在IEEE期刊上发表了题为《关于分组交换的网络通信协议》的论文,正式提出了TCP/IP协议,实现了计算机网络间的互联。
TCP/IP并不是单一的协议,而是一个协议簇,由多个不同层次的协议组成。下图展示了OSI模型和TCP/IP模型的对比,以及TCP/IP不同层次的协议。
严格来说,分层模型的目的是将每一层的功能尽可能独立,使其对其他层透明,仅对通信的另一端负责,从而为编程和诊断提供良好的层次隔离。然而,实际情况并非如此。首先,完全按照分层模型进行软件编程会降低效率,分层不如按功能实现模块化。其次,许多功能实现需要跨层交互,这违背了分层模型的初衷。例如,链路层在成帧时需要接收端的物理地址,而该地址必须由网络层通过ARP地址解析来处理,将ARP简单归于某一层并不合适。
(1)网络接口层
网络接口层,也称为数据链路层或链路层,通常包括操作系统中的设备驱动程序和计算机中的网络接口卡,主要处理与电缆物理接口的细节。在TCP/IP协议簇中,链路层协议种类繁多,网络接口层决定了网络形态,但很多协议并非专为TCP/IP设计。
(2)网络层
网络层负责处理分组在网络中的活动,完成路由和寻径功能,提供主机到主机的连接。IP是一个尽力传送、不可靠的协议。
(3)传输层
传输层主要为两台主机上的应用程序提供端到端的通信。在TCP/IP协议簇中,有两个主要传输协议:TCP(传输控制协议)和UDP(用户数据报协议),它们分别承载不同的应用。TCP协议提供可靠但高效的服务,而UDP协议则不可靠但高效。
(4)应用层
应用层负责具体的应用,如HTTP访问、FTP文件传输、SMTP/POP3邮件处理。几乎所有的TCP/IP实现都会提供以下通用应用程序:远程登录(Telnet)、文件传输协议(FTP)、域名管理(DNS)、简单网络管理协议(SNMP),如图所示:
IP协议是TCP/IP协议族中最核心的协议。它提供不可靠、无连接的服务,依赖其他层的协议进行差错控制。在局域网环境中,IP协议通常封装在以太网帧中传输。所有的TCP、UDP、ICMP、IGMP数据都被封装在IP数据报中传送,如图所示:
Ethernet帧头 | IP头部 | TCP头部 | 上层数据 | FCS |
在IP网络中传输的单位称为IP数据包,IP数据包包括IP报头和更高层协议的相关数据。IP数据包的报头至少为20个字节,其中包括版本、报头长度、服务类型、总长度、标识、标志、段偏移量、生存期、协议、头部校验和、源地址、目标地址、可选项和数据。引入IP报头字段是为了为网络实体提供互联机制,IP报头不仅包含大量IP数据包信息,如源和目标IP地址、数据包内容等,还为网络实体提供了从源到目标地址之间传送数据包的处理方法。
如图所示为IP数据报头字段结构:
版本 | 报头长度 | 服务类型 | 总长度 | |
标识 | 标志 | 段偏移量 | ||
生存期 | 协议 | 头部校验和 | ||
源地址 | ||||
目标地址 | ||||
可选项 | ||||
数据 |
如表所示为IP数据报头字段说明:
IP 头部字段 | 说明 |
版本 | 占用4位,用于指示IP协议的版本号,目前常见的是IPv4,即0100 |
报头长度 | 占4位,对于普通IP数据报,该字段值为5 |
服务类型 | 占8位,其中前3位用于优先权子字段,但现已被忽略,第8位保留未使用 |
总长度 | 占16位,指示整个数据报的长度,最大可达65535字节 |
标识 | 占16位,用于唯一标识主机发送的每一个数据报 |
标志 | 占3位,指示数据报是否需要分段 |
段偏移量 | 占13位,数据报分段时,此字段指示该段相对于原始数据报起始位置的偏移量 |
生存期 | 占8位,设置数据报最多可以通过的路由器数量 |
协议 | 占8位,指示IP层所封装的上层协议类型 |
头部校验和 | 占16位,基于IP头部计算得到的校验码 |
源地址 | 占32位,指示发送IP数据报的源主机地址 |
目标地址 | 占32位,指示接收IP数据报的目标主机地址 |
可选项 | 占32位,用于定义一些可选功能,如记录路径、时间戳等 |