众所周知,计算机网络和操作系统是网络安全方向的两大基石,所以,本篇以OSI七层为模板,梳理一下计算机网络结构及其相关协议。需要注意的是,由于计算机网络的发展史很长,有许多定义也并不标准,协议所属层次有的也很模糊。

首先,附上一张Cloudflare博文中的图片:

image.png

第一层:物理层

物理层为传输数据,需要物理链路与设备的建立、维持、拆除,并具有机械的、电子的、功能的、规范的特性。保证能够透明得传输比特流。

传输单位:比特(bit),即0101流。

相关协议:Varieties of 802.11 Wi-Fi物理层,Bluetooth物理层,USB物理层等

相关设备:光纤、串口、并口、集线器(Hub)、RJ-45街头、CAT-5线等

第二层:数据链路层

数据链路层定义了数据的传输格式、可以在节点间流动的数据量大小、数据流动可以持续的时长,以及在流中检测到错误时应采取的措施。其功能包括:(1)在两个网络实体之间提供数据链路连接的建立、维持和释放管理;(2)构成数据链路数据单元(frame:数据帧或帧),并对帧定界、同步、收发顺序的控制;(3)并且包括传输过程中的网络流量控制、差错检测和差错控制等方面,例如CSMA/CD传输控制。Wireshark抓包就是从这一层开始抓的。

除此之外,数据链路层又细分为介质访问控制和逻辑链路控制。

介质访问控制(MAC,Media Access Control): MAC 子层负责分配硬件标识号,这个标识号被称为 MAC 地址,它能够唯一标识网络上的各个设备。两个设备不应该有相同的 MAC 地址。MAC 地址在硬件制造时就分配好了,位于网卡当中,大多数网络都会自动对其进行识别。交换机会跟踪网络上所有的 MAC 地址。

逻辑链路控制(LLC,Logical Link Control): LLC 子层处理帧的寻址以及流量控制。速度取决于两个节点之间的链路,例如以太网或 Wifi。

传输单位:帧(frame),包含源MAC地址、目的MAC地址和数据负载。帧的大小通常有一个最大值,这个值被称为最大传输单元(MTU,Maximum Transmission Unit)。

相关协议:ARP,VLAN,Wi-Fi(IEEE 802.11),以太网(IEEE 802.3),PPPoE等

相关设备:交换机(Switch),网卡,网桥等

第三层:网络层

提供路由和寻址的功能,使两终端系统能够互连且决定最佳路径,并具有一定的拥塞控制和流量控制的能力。在同一个网络中的内部通信并不需要网络层设备,仅仅靠数据链路层就可以完成相互通信,对于不同的网络之间相互通信则必须借助路由器等三层设备;对网络层而言使用IP地址来唯一标识互联网上的各个寻址,网络层依靠IP地址进行相互通信。第三层上的传输是无连接的、尽力而为的——除了将流量发往它应该去的地方,它们不会做任何事。更多与数据传输有关的协议在第四层。

传输单位:数据包(data packet),包含源IP地址、目的IP地址和数据负载。数据包在传输过程中会被封装成帧,帧是数据包在网络中实际传输的形式。

相关协议:IPv4,IPv6,ARP,ICMP,RIP,OSPF,IPSec,IGMP等。ARP通常被认为是第二层的一部分,但是由于IP地址在第三层以下都不存在,所以ARP也是第三层的一部分。

相关设备:路由器(Router),三层交换机等

第四层:传输层

负责两个设备间的端到端通信。包括从会话层提取数据,将数据分解为多个区块(称为数据段),然后再发送到第3层。接收设备传输层负责重组数据段,确保数据可供会话层使用。传输层还负责进行流量控制和错误控制。流量控制用于确定最佳传输速度,避免采用快速连接的发件人淹没采用慢速连接的收件人。传输层通过确保接收数据的完整性(如果不完整,则请求重新传输)来对接收端进行错误控制。

传输单位:数据报(datagram)

相关协议:TCP,UDP等,TCP 和 UDP 都将数据发往网络设备上的特定端口,这些网络设备都有自己的 IP 地址。IP 地址和端口号的组合被称为套接字(socket)

第五层:会话层

会话层为客户端的应用程序提供了开启、关闭和管理会话的机制,亦即半永久的对话。会话的实体包含了对其他程序作会话链接的要求及回应其他程序提出的会话链接要求。在应用程序的执行环境中,会话层是这些程序用来提出远程过程调用(remote procedure calls,RPC)的地方。

相关协议:SOCKS,PAP等

第六层:表示层

为不同终端的上层用户提供数据和信息正确的语法表示变换方法,负责数据的格式,比如字符编码与转换,如文本文件的ASCII格式和UTF-8格式,以及数据加密(SSL/TLS)和数据压缩解压。

相关协议:SSL,TLS等,SSH也用到了表示层的加密功能,但是SSH本身并不属于表示层的协议。

第七层:应用层

应用层直接和应用程序接口结合,并提供常见的网络应用服务。应用层也向第六层表示层发出请求。

相关协议:FTP,SSH,HTTP,DNS,SMTP等

数据在OSI模型中的流动

为通过网络将人类可读信息通过网络从一台设备传输到另一台设备,必须在发送设备沿 OSI 模型的七层结构向下传输数据,然后在接收端沿七层结构向上传输数据。

库珀先生想给帕尔梅女士发一封电子邮件。库珀先生在笔记本电脑的电子邮件应用程序中编写邮件,然后点击“发送”。电子邮件应用程序将电子邮件传递到应用程序层,应用程序层选取协议(SMTP),再将数据传递到表示层。接着,表示层压缩数据,再将数据传递到会话层,由会话层初始化通信会话。

而后,数据将到达发送方的传输层,在传输层进行分段,再在网络层将这些数据段分解为数据包,然后在数据链路层进一步分解为帧。随后,数据链路层将这些帧传输到物理层,物理层将数据转换为位流 1 和 0,最后通过物理介质(如电缆)发送数据。

帕尔梅女士的计算机通过物理介质(如她的 WiFi)接收位流后,数据将沿其设备的同一系列层级流动,但顺序刚好相反。首先,物理层将位流从 1 和 0 转换为帧,传递到数据链路层。然后,数据链路层将帧重组为数据包,供网络层使用。接着,网络层将数据包重组为数据段供传输层使用,传输层再将数据段重组为数据片段。

随后,数据将流入收件方的会话层,会话层将数据传递到表示层并结束通信会话。表示层解压数据并将原始数据传递到应用程序层。应用程序层将人类可读数据传递到帕尔梅女士的电子邮件软件,这样她就能在笔记本电脑屏幕上阅读库珀先生的电子邮件了。

标签: OSI

添加新评论