协议分层
协议分层是计算机网络中奖网络协议进行组织和管理的方法;
通过将网络通信过程分成多个层次,每个层次负责特定的功能从而简化网络设计和实现;
常见的协议分层模型包括OSI
模型和TCP/IP
模型;
协议分层使得同层之间可以直接交换信息,而不需要上层或下层进行中介从而提高效率;
其优点为如下:
-
简化设计
将复杂的网络通信过程分解为多个简单的层次,每个层只需关注特定的功能从而降低了系统的复杂性;
-
模块化
每一层可以独立开发和维护,便于更新换代某一层的协议而不影响其它层;
-
标准化
通过定义每一层的功能和接口从而促进不同设备和技术之间的互操作性;
-
故障隔离
当出现问题时可以更容易定位到具体的层从而提高故障排查和修复的效率;
-
灵活性
不同的网络技术可以在同一层上工作使得新技术可以被集成到现有网络中二不需要全面重构;
-
可拓展性
协议分层允许在未来进行扩展或引入新的协议以适应技术的发展变化;
在这个例子中A
与B
使用同一种语言进行沟通,在宏观上A
与B
直接进行沟通,但实际上为A
将语言以特定的形式发给座机,座机与座机之间进行通信,而后座机将信息处理完毕后重新使B
接收从而达到一个通过不同层协议的封装与解包后宏观上A
与B
直接通信的效果;
由于协议进行分层,A
与B
都无需关心座机协议如何处理;
当某层协议进行更换时其他层也无需了解,从而降低了维护成本;
OSI 七层模型
OSI模型将网络通信过程分为七个层次为一个协议栈,每一层都有其特定的功能和协议;
-
应用层
为用户提供网络服务,支持各种应用程序的运行;
通常的协议有
HTTP
(超文本传输协议),FTP
(文件传输协议),SMTP
(简单邮件传输协议),DNS
(域名系统)等; -
表示层
负责数据的格式转换,加密解密,以及数据压缩和解压缩以确保不同系统间的数据能够被理解;
通常协议有
JPEG
,MPEG
,ASCII
,TLS
(传输层安全)等; -
会话层
用于管理用户会话,控制会话的建立,维护和终止,同时还负责会话的恢复和同步;
通常协议有
RPC
(远程过程调用),NetBIOS
等; -
传输层
用于提供端到端的数据传输服务,确保数据完整性和可靠性,包括流量控制和错误检查;
通常协议有
TCP
(传输控制协议),UDP
(用户数据报协议)等; -
网络层
负责数据包在不同网络间的传输,处理路由器选择和逻辑地址(如
IP
地址)的分配;通常协议有
IP
(互联网协议),ICMP
(互联网控制消息协议),IGMP
(互联网组管协议互联网组管协议)等; -
数据链路层
负责物理地址(如
MAC
地址)的处理,确保在同一网络内数的数据帧传输,提供错误检测和纠正功能;通常协议有
Ethernet
(以太网),PPP
点对点协议,HDLC
(高级数据链路控制)等; -
物理层
用于负责实际的物理连接和信号传输,包括电缆,接头,信号电压和数据传输速率等;
通常的协议有
USB
,RS-232
,IEEE 802.3
(以太网标准)等;
而实际上在一般实际的网络实现中传输层,网络层,和数据链路层被视为同一层;
主要原因为:
-
相互依赖
这三层在功能上存在很大的依赖关系,网络层负责选择数据包的路由,而传输层则确保这些数据包的可靠传输,数据链路层则处理物理地址和局部网络的传输;
-
协议栈的简化
在许多现代网络协议栈(
TCP/IP
模型)中,网络层和传输层的功能往往会在同一设备或软件中实现;如路由器和交换机通常同时处理
IP
数据包和TCP/UDP
数据段;结合使得设备的设计和维护变得更加简单和高效;
通常情况下OSI
模型为一个标准或者参考框架,而类似于TCP/IP
模型则是这一标准在实际应用中的具体实现;
TCP/IP 四层(五层)模型
TCP/IP
四层模型是互联网协议套件的基础,通常被描述为四层模型,每一层都有其特定的功能和协议;
-
应用层
用于负责为用户提供网络服务,支持各种应用程序的运行,处理用户界面和应用程序之间的交互;
通常协议有
HTTP
(超文本传输协议),FTP
(文件传输协议),SMTP
(简单邮件传输协议),DNS
(域名系统)等; -
传输层
负责在网络中提供端到端的通信,确保数据的完整和可靠性,处理数据的分段,传输和重组;
通常协议有
TCP
(传输控制协议),UDP
(用户数据报协议)等; -
网络层
负责数据包的路由选择和传输,处理逻辑地址(如
IP
地址)的分配,确保数据包能够在不同网络之间传输;通常协议有:
-
IP
(互联网协议)负责数据包的寻址和路由;
-
ICMP
(互联网控制消息协议)用于发送错误消息和操作信息;
-
ARP
(地址解析协议)用于将
IP
地址映射到物理地址(MAC
地址);
-
-
链路层
链路层负责在同一网络内的数据帧传输,处理物理地址(
MAC
地址)和数据的封装与解封装,以确保数据在物理媒介上的传输;协议通常有:
-
Ethernet
(以太网)最常用的局域网技术;
-
Wi-Fi
无限局域网技术;
-
PPP
(点对点协议)用于点对点连接;
-
-
物理层
网络协议栈与操作系统的联系
网络协议栈和操作系统之间的联系在于操作系统负责实现和管理网络协议栈的各个层次以便支持网络通信;
以Linux为例;
操作系统是计算机系统的核心,负责管理硬件和软件资源,包括网络通信;
Linux
操作系统通过内核实现网络协议栈从而提供网络功能的基础;
Linux
的网络协议栈通常遵循TCP/IP
模型;
该图为网络协议栈与操作系统的相关联系;
其中数据链路层与物理层对应操作系统的设备和驱动部分;
传输层与网络层对应操作系统中的系统层,这意味着通常传输层与网络层将由操作系统实现,其中将为上层提供对应的系统调用接口;
应用层对应操作系统的系统层;
当存在两台主机,即主机A
与主机B
,主机A
向主机B
通过网络发送数据时将层层封装,数据到达主机B
时将被层层解包最后再交由用户;
报文
报文是网络通信过程中,由发送方生成并发送给接收方的一组数据;
报文通常包含了控制信息和用户数据两部分,用于实现不同的通信功能;
报文一般由头部,有效载荷,尾部(可选)组成;
-
头部
头部一般包含控制信息,用于知道网络设备如何处理报文;
头部通常包括发送的原地址,目的地址,序列号,协议类型,校验和等信息;
不同的协议有不同的头部格式,如
IP
报文头部和TCP
报文头的格式是不同的; -
有效载荷
有效载荷为实际传输的数据内容,即下一层关心的信息;
有效载荷的大小可根据协议和应用的需求而变化;
-
尾部(可选)
在某些协议中,报文的尾部可能包含一些额外的信息,如错误检测码或结束标识;
在网络协议栈中,报文的概念可以在不同层次上体现:
-
应用层报文
在应用层,报文通常指应用程序之间交换的信息,如
HTTP
请求和响应; -
传输层报文
在传输层中报文可以指
TCP
段或UDP
数据包; -
网络层报文
在网络层中报文通常被称为
IP
数据包,其包含IP
地址,目的IP
地址以及其他路由信息; -
链路层报文
在链路层中,报文被称为帧,一个帧中包含
MAC
地址等硬件相关信息;
TCP/IP 通讯过程
当一个主机接收到一个报文时将会只处理属于该层协议的报头,而剩下部分则会被当做有效载荷并传给下一层;
这表示对于每一层协议而言其报头与有效载荷都是不同的;
通常报文在网络传输的过程中一般为:
- 发送方应用程序生成报文并将其传递给操作系统的网络栈;
- 操作系统在传输层,网络层和链路层对报文进行封装,为其添加响应头部信息;
- 经过各层封装后的报文通过网络接口发送到目标设备;
- 接收方的网络栈收到报文后逐层解包,即处理属于该层的报头并将有效载荷传递给上一层;
- 最终接收方的应用程序处理有效载荷中的数据;
其中一个数据从用户经网络栈为其添加报头的过程被称为封装;
对应的一个数据被网络栈进行接收逐层处理最终交给用户的过程被称为解包;
本质上通信的过程就是对报文不断的封装和解包的过程;
- 几乎任何协议都必须提供一种将报头和有效载荷分离的能力
- 几乎任何协议都必须提供一种将有效载荷正确交付给对应上一层的能力
以太网通信的过程
以太网是一种广泛使用的局域网(LAN
)技术,主要用于计算机和网络设备之间的传输数据;
在以太网的通信中一般数据通常由应用程序生成,经过操作系统的网络协议栈进行处理;
-
应用层
创建要发送的数据(文件,消息等);
-
传输层
数据被封装成传输层报文(如
TCP
段或UDP
数据包),包含源端口和目的端口等信息; -
网络层
传输层报文被进一步封装为
IP
数据包,并添加源IP
与目标IP
的地址; -
链路层
IP
数据包将被封装为以太网帧,添加源MAC
地址和目的MAC
地址等信息;
以太网主要支持两种传输方式,分为单播和广播:
-
单播
当一个设备发送数据包给特定目标时,这种通信成为单播;
在单播中,所有连接到同一局域网(
LAN
)的设备都能够接收到发送的数据包,这是因为该以太网在物理介质中传播,所有连接到同一交换机或共享网络的设备都会接收到这个帧;每个接收设备的网卡将会检查收到的以太网帧的目标
MAC
地址;-
如果相同
该设备将接收并处理这个数据包,解析有效载荷并将其传递给上层协议栈;
-
如果不同
该设备将丢弃这个帧,通常不会进行任何处理也不会向上层传递任何信息;
-
-
广播
当一个设备向该网络中的所有设备发送数据时这种通信成为广播;
在这种情况下发送方的以太网帧中目标
MAC
地址将被设置为广播地址(FF:FF:FF:FF:FF:FF
);所有连接在同一局域网的设备都会接收到这个广播帧并对其进行处理;
以太网的数据碰撞
在以太网中数据碰撞是指两个或以上的设备在同一时间尝试通过共享传输介质发送数据从而导致这些数据相互干扰;
本质原因是以太网是通过光电信号进行传输的,当多个设备同时进行传输时可能会导致数据碰撞从而发生数据碰撞的问题;
以太网属于是多个设备的共享资源,当一个设备准备发送数据时它首先会监听信道以确保没有其他设备在发送数据,如果信道空闲设备会开始发送数据;
在发送过程中,设备会继续监听信道,如果检测到信号强度的变化(由其他设备也在发送数据)则会发生碰撞;
当数据发生碰撞后可能会导致以下问题:
-
数据损坏
发生碰撞后,两个设备发送的数据包将会相互干扰导致数据内容被破坏;
-
重发
由于数据未能成功传输,发送设备需要根据碰撞检测机制重新发送数据,从而增加了网络的延迟和负载;
在以太网中,可能发生碰撞的集合被称为碰撞域;
在传统的共享以太网中,整个网络都是一个碰撞域;
为了减少碰撞几率的发生可在以太网中使用交换机来减少(划分)碰撞域;
当一个设备需要发送信息给另一个设备时将会先发送给交换机,交换机将判断目标MAC
地址的方向;
假设发出设备与接收设备都在交换机的同侧时,该数据将不会发送给交换机的另一侧从而减少数据碰撞的发生;