网络技术:网络互联模型
参考模型
在网络刚刚被搞出来的年代,通常只有同一个厂家生产的设备才能彼此通信,不同的厂家的设备不能兼容。这是因为没有统一的标准去要求不同的厂家按照相同的方式进行通信,所以不同的厂家都闭门造车。为了解决这个问题,后来就产生出参考模型的概念。
参考模型是描述如何完成通信的概念模型,它指出了完成高效通信所需要的全部步骤,并将这些步骤划分为称之为“层”的逻辑组。分层最大的优点是为上层隐藏下层的细节,即对于开发者来说,如果他们要开发或实现某一层的协议,则他们只需要考虑这一层的功能即可。其它层都无需考虑,因为其它层的功能有其它层的协议来完成,上层只需要调用下层的接口即可。参考模型的优点如下:
- 将网络通信过程划分为更小、更简单的组件,使得组件的开发、设计和排错更为方便;
- 通过标准化网络组件,让不同的厂商能够协作开发;
- 定义了模型每层执行的功能,从而鼓励了行业标准化;
- 让不同类型的网络硬件和软件能够彼此通信;
- 避免让对一层的修改影响其它层,从而避免妨碍开发工作。
OSI 模型
OSI 模型旨在以协议的形式帮助厂商生产兼容的网络设备和软件,让不同厂商的网络能够协同工作。同时对于用户而言,OSI 能帮助不同的主机之间传输数据。OSI 并非是具体的模型,而是一组指导原则,开发者以此为依据开发网络应用。同时它也提供了框架,指导如何制定和实施网络标准、制造设备,以及制定网络互联的方案。
OSI 模型包含 7 层,上三层指定了终端中应用程序如何彼此通信,以及如何与用户交互,下四层指定了如何进行端到端数据传输。
应用层
上 3 层负责主机之间的应用程序通信,其中用户界面位于应用层。应用层是用户和计算机交互的层次,是用户唯一能够直接操作的场所。应用层可以让应用程序能够将信息沿着协议栈向下传输,充当了应用程序和下一层之间的接口。
应用层还负责确定目标通信方的可用性,并且判断对方是否有足够的资源。为什么应用层需要完成这个任务?因为很多网络应用的发展很快,但是这些技术却超过了现有物理网络的极限。
表示层
表示层向应用层提供数据,并负责数据转换和代码格式化。表示层能够保证从一个系统的应用层传输而来的数据可被另一个系统的应用层读取。
会话层
会话层负责在表示层实体之间建立、管理和终止对话,对设备或节点之间的对话进行控制。简而言之,会话层的基本功能是将不同应用程序的数据分离。
传输层
传输层将数据进行分段并重组为数据流,位于传输层的服务将来自上层应用的程序进行分段和重组,然后将它们合并到一个数据流中。传输层提供的是端到端的数据传输服务,并且可以在互联网络上的发送主机和目的主机之间建立逻辑连接。传输层提供的服务可以是有链接的,也可以是无连接的,可靠数据传输需要保证实现以下目标:
- 收到数据段后,向发送方进行确认;
- 重传所有未得到确认的数据段;
- 数据段到达目的主机之后,可以按序排列;
- 确保数据流量不超过处理能力,避免拥塞、过载和丢包。
流量控制
流量控制是可靠数据传输服务实现的基础之一,它可以避免作为发送方的主机让接收方主机的缓存区溢出,从而避免大量丢包的服务。
窗口技术
如果传输的每个数据段都必须得到接收方的确认,传输的速度会变得缓慢。发送方传输数据段到接收来自接收方的确认的这段时间内,发送方可以发送更多的数据。在收到确认之前,发送方可发送的数据段数量称为窗口。
确认
数据不发生重复或丢失是基于肯定确认和重传实现的,这种方法要求在接收方收到数据后向发送发发送确认信息。
面向连接的通信
可靠的数据传输的实现,要求传输数据的设备建立一个到远程设备的面向连接的通信会话。传输设备首先和与其对等的系统建立面向连接的会话,这是通过三次握手的过程实现的。连接建立后就可以传输数据了,数据传输完毕后还要进行呼叫终止,拆除虚电路。三次握手的流程为:
- 连接发起方发送“连接协定”数据段,用于请求同步;
- 发起方接收数据段的确认请求,并且在主机之间确定连接的相关参数。这些数据段也请求同步接收方的排序,建立双向连接。
- 发起方发送最后一个数据段用于确认,它告知目的主机连接的协定已经被接收且连接已建立,可以开始传输数据。
面向连接的服务应该具备以下特征:建立虚电路、使用排序技术、使用确认和使用流量控制。
网络层
网络层的任务是管理设备编址、跟踪设备在网络中的位置,并确认最佳的数据传输路径,这意味着网络层必须在位于不同网络中的设备之间传输数据流。网络层传输的分组有以下 2 种:
- 数据分组:用于在互联网中传输用户数据;
- 路由更新分组:路由器的网络更新信息,将这些信息告知邻接的路由器。这些分组是由路由选择协议产生的,常见的有 RIP、OSPF 和 EIGRP 协议等。
路由器维护路由表来完成分组转发,路由表包含网络地址、接口和度量值的信息。因为路由器的每个接口都属于不同的网络,所以必须给网络每个接口都分配不同的网络表示号,且与同一个接口相连的每台主机都必须使用相同的网络号。
数据链路层
数据链路层提供数据的物理传输,并且处理错误通知、网络拓扑和流浪控制。链路层将报文封装成数据帧,并加上链路层的报头,包头中有目标的硬件地址和源硬件地址。链路层传输数据的过程中,分组的本身没有被修改过,而是封装了必要的控制信息,以此实现通过不同的介质传输。
IEEE 以太网数据链路层包含 2 个子层:
- 介质访问控制 (MAC) 子层:定义如何通过介质传输分组;
- 逻辑链路控制 (LLC) 子层:负责识别网络层协议并进行封装。
网络层的设备需要确定网络的位置,而链路层的设备要确定设备的位置。链路层值把帧转发到目标硬件地址所属的网段,如果目标设备和发送设备处于同一个网段,链路层设备将阻止它进入其他网段。
物理层
物理层具有发送和接收比特的功能,OSI 以标准的形式定义了物理层接头和各种物理拓扑,让不同的系统能彼此通信。
Cisco 层次模型
Cisco 层次模型可以帮助设计、实现和维护可拓展、可靠、性价比搞的层次型互联网络,它包括起到主干功能的核心层、进行路由选择的集散层和起到交换功能的接入层。
核心层
核心层位于层次结构的顶端,负责快速和可靠地传输大量数据流。如果核心层出现故障,所有用户都会受到影响。设计核心层时需要保证其可靠性,同时要保证核心层的延迟尽可能短,同时尽量选用会聚时间短的路由选择协议。因为对处理速度的追求,因此核心层不允许做任何降低速度的事情,同时核心层不应该支持工作组的接入,还要避免核心层随着网络的增大而增大。
集散层
集散层也可以成为工作组层,是接入层和核心层之间的通信点,它的功能是提供路由选择、过滤和 WAN 接入。确定最佳路由后,集散层将在必要时将请求转发给核心层,然后核心层将请求快速的转发给正确的服务。集散层要完成以下操作:
- 路由选择;
- 实现工具、分组过滤和排队;
- 实现安全性和网络策略;
- 在路由选择协议之间重分发;
- 在 VLAN 之间路由以及支持其他工作组的功能;
- 定义广播域和组播域。
接入层
接入层控制用户和工作组对互联网资源的访问,它要完成的功能有:
- 延续集散层的访问控制和策略;
- 网络分段;
- 提供到集散层的工作组连接。
DoD 模型
DoD 模型可以看作是 OSI 模型的精简版,这 2 个模型在概念上是相似的。
进程/应用层协议
进程/应用层定义了用于节点间应用程序通信的协议,还定义了用户界面的规范。
协议 | 功能 |
---|---|
Telnet | 客户端主机用户远程访问另一台主机的资源 |
FTP | 通过身份验证后传输文件 |
TFTP | FRP 的简化版,速度快,开销小,但不够安全 |
NFS | 文件共享,让两种不同的文件系统相互操作 |
SMTP | 收发电子邮件 |
POP | 对到来的邮件进行存储 |
IMAP4 | 控制邮件的下载方式 |
TLS | 加密协议,保证数据传输的安全性 |
SSL | 加密协议,保证数据传输的安全性 |
SIP | 建立和拆除多媒体通信会话 |
RTP | 通过因特网传输语音和视频 |
LPD | 共享打印机 |
X Window | 编写基于 GUI 的客户端/服务器应用程序 |
SNMP | 收集并操作有价值的网络信息 |
SSH | 安全外壳,建立安全的 Telnet 会话 |
HTTP | 超文本传输协议 |
HTTPS | 安全的超文本传输协议(基于 SSL) |
NTP | 将计算机时钟与标准时间源同步 |
NNTP | 访问新闻服务器 |
SCP | 通过 SSH 保护文件传输 |
LDAP | 标准化访问目录的操作 |
IGMP | 管理 IP 组播会话 |
LPR | 将数据从主机发送到网络打印资源 |
DNS | 解析主机名 |
DHCP | 给主机分配 IP 地址 |
APIPA | 没有 DHCP 时给自己配置 IP 地址 |
主机到主机层协议
主机到主机层的功能和 OSI 模型的传输层相同,定义了用于为应用程序提供传输服务的协议。
UDP 协议
用户数据报 (UDP) 协议是传输层提供的一种最低限度的复用/分解服务,可以在网络层和正确的用户即进程间传输数据。UDP 是一种不提供不必要服务的轻量级运输协议,除了复用/分用功能和简单的差错检测之外,几乎就是 IP 协议了,也可以说它仅提供最小服务。UDP 是无连接的,因此在两个进程通信前没有握手过程。UDP 协议提供一种不可靠数据传输服务,也就是说,当一个进程讲一个报文发送进 UDP 套接字时,UDP 协议并不保证该报文将到达接收进程。也正是由于 UDP 不修复错误,因此到达接收进程的报文也可能是乱序到达的。UDP 是面向报文的,这是因为 UDP 并不会对应用层传递下来的报文进行任何处理,对于报文的边界信息都会保存,向下交付时交付的是完整报文。
TCP 协议
TCP 协议给使用者提供了两种服务,分别是面向连接的服务和可靠的数据传输服务。简单来说面向连接的含义是客户机和服务器之间需要建立连接,所谓 TCP 连接是一种逻辑上的连接,它可以提供全双工服务,即应用层数据可以在建立连接的进程之间相互传输。TCP 连接也是点对点的,因为这是针对单个发送方和单个接收方之间的连接。
所谓可靠的数据传输服务,即双方的数据交互在 TCP 协议的保障下,彼此发出的数据能够无差别、按照正确顺序传递给对方。即 TCP 会将发送方通过套接字传出的字节流,在保证字节不发生丢失和出现多余的情况下,将字节流交付给接收方的套接字。
在某段时间,若对网络中某资源的需求超过了该资源所能提供的可用部分,网络的性能就会受到影响,这种现象称为拥塞。TCP 可以提供拥塞控制服务,它是基于加性增、乘性减的 AIMD 算法实现的。
因特网层协议
因特网层的功能和 OSI 模型的网络层相同,指定了与通过整个网络对分组进行逻辑传输相关的协议。
IP 协议
IP 协议相当于是因特网层,其他协议都只是为它提供支持。IP 查看每个分组的地址,然后使用路由表判断应该将分组发送到哪里。
ICMP 协议
ICMP 协议是一个管理协议,为 IP 提供消息收发服务,其数据报是以 IP 数据报形式传输的。
ARP 协议
地址解析协议 ARP 可以根据网络层使用的 IP 地址,解析出在数据链路层使用的硬件地址。
网络接入层
网络接入层对应 OSI 模型的数据链路层和物理层,负责硬件编址并定义实际传输数据的协议。
参考资料
《CCNA 学习指南(第 7 版)》,[美] Todd Lammle 著,袁国忠 徐宏 译,人民邮电出版社
《计算机网络(第七版)》 谢希仁 著,电子工业出版社
《计算机网络 自顶向下方法》 [美] James F.Kurose,Keith W.Ross 著,陈鸣 译,机械工业出版社
《TCP/IP 详解 卷1:协议》(美)W.Richard Stevens 著,范建华 胥光辉 张涛 等译,谢希仁 校,机械工业出版社
计算机网络:协议栈分层
TCP 协议与 Wireshark 实验
UDP 协议与 Wireshark 实验
运输层:TCP 拥塞控制
网络层——网际协议 IPv4
ICMP 协议及Wireshark实验
链路层:ARP 协议