🎉欢迎大家观看AUGENSTERN_dc的文章(o゜▽゜)o☆✨✨
🎉感谢各位读者在百忙之中抽出时间来垂阅我的文章,我会尽我所能向的大家分享我的知识和经验📖
🎉希望我们在一篇篇的文章中能够共同进步!!!
🌈个人主页:AUGENSTERN_dc
🔥个人专栏:C语言 |Java | 数据结构 | 算法 | MySQL | RabbitMQ | Redis
⭐个人格言:
一重山有一重山的错落,我有我的平仄
一笔锋有一笔锋的着墨,我有我的舍得
目录
1. OSI七层模型
1.1 OSI七层模型
1.2 为什么要分成七个层次?
1.3 各层分别的职责:
1.3.1 应用层
1.3.1.1 主要功能:
1.3.1.2 常见应用层的协议:
1.3.1.3 总结
1.3.2 表示层
1.3.2.1 主要功能:
1.3.2.2 常见表示层协议:
1.3.2.3 总结
1.3.3 会话层
1.3.3.1 主要功能
1.3.3.2 常见会话层协议
1.3.3.3 总结
1.3.4 传输层
1.3.5 网络层
1.3.5.1 主要功能:
1.3.5.2 常用协议:
1.3.5.3 总结:
1.3.6 数据链路层
1.3.6.1 主要功能:
1.3.6.2 常见协议
1.3.6.3 总结:
1.3.7 物理层
1.3.7.1 主要功能:
1.3.7.2 常见协议:
1.3.7.3 总结:
1. OSI七层模型
1.1 OSI七层模型
OSI(Open Systems Interconnection)七层模型是一个概念性的网络通信模型,将网络通信过程分为七个层次,每一层负责特定的功能。OSI模型的主要目的是提供一个标准化的框架,以便不同厂商的设备和软件能够互操作。
1.2 为什么要分成七个层次?
说到分层,我们可以联想一下平时我们开发一个SpringBoot后台程序时的分层,我们往往会按照每一层做不同的事情的原则,将系统分为三层(若系统复杂,则会有更多的层级) :
<1> Controller (负责前后端的数据交互)
<2> Service (负责业务操作逻辑)
<3> Repository (负责与数据库进行交互)
复杂的系统需要进行分层,因为每一层都需要专注于一类事情,就像设计模式中的 <单一责任原则>
网络分层的原理也是一样,每一层只专注于做一件事情
话说回来,我认为分层的原因主要有三点:
1. 各层之间需要相互独立: 各层之间相互独立,各层之间不需要关心其他层是如何实现的,只需要知道自己如何调用下层提供好的功能就可以了(可以简单理解为接口调用)。这个和我们对开发时系统进行分层是一个道理。
2. 提高了灵活性和可替换性:每一层都可以使用最适合的技术来实现,你只需要保证你提供的功能以及暴露的接口的规则没有改变就行了。并且,每一层都可以根据需要进行修改或替换,而不会影响到整个网络的结构。这个和我们平时开发系统的时候要求的高内聚、低耦合的原则也是可以对应上的。
3. 大问题化小:分层可以将复杂的网络问题分解为许多比较小的、界线比较清晰简单的小问题来处理和解决。这样使得复杂的计算机网络系统变得易于设计,实现和标准化。 这个和我们平时开发的时候,一般会将系统功能分解,然后将复杂的问题分解为容易理解的更小的问题是相对应的,这些较小的问题具有更好的边界(目标和接口)定义.
1.3 各层分别的职责:
在OSI七层模型中,每一层的模型都会对上一层的数据进行封装(除了物理层外,物理层对数据进行转换而不是封装)
接下来我们简单介绍一下,每一层的不同的职责
1.3.1 应用层
将用户上传的数据发送给表示层做处理,或接收表示层传来的数据展示给用户
1.3.1.1 主要功能:
<1> 提供用户接口: 应用层为用户提供直接的交互界面,使得用户能够方便的使用各种网络服务
<2> 数据格式化: 应用层负责将用户数据转换为合适的网络传输格式,以及将接受到的数据解析为用户可以理解的格式
<3> 提供网络服务: 应用层提供了多种网络服务,满足用户的不同需求
1.3.1.2 常见应用层的协议:
<1> HTTP/HTTPS
<2> SMTP/POP3/IMAP
<3> FTP/SFTP
<4> DNS
1.3.1.3 总结
总的来说,应用层主要是用来服务于用户,与用户直接进行交互的,同时应用层是通过调用下层提供的服务来实现其功能
1.3.2 表示层
表示层会对来自于应用层的数据进行封装,传输给会话层,或接收会话层的数据,解封后传输给应用层
1.3.2.1 主要功能:
<1> 数据表示和转换: 表示层负责将数据转换为适合网络传输的格式,以及将接收到的数据转换为应用程序可以理解的格式。
例如:将ASCII转换为Unicode编码格式,将图像音频等转换成合适的传输形式
<2> 数据加密和解密: 表示层提供数据加密和解密服务,确保数据在传输过程中的安全性和隐私性。
例如在HTTP的基础上,通过SSL/TLS协议对数据进行加密,确保数据在传输过程中不被窃取或篡改
<3> 数据压缩和解压缩: 表示层提供数据压缩和解压缩服务,减少数据传输的大小,提高传输效率。
例如: 将文件压缩成ZIP文件进行传输,压缩文件大小,提高传输效率
1.3.2.2 常见表示层协议:
SSL/TLS(Secure Sockets Layer/Transport Layer Security)
1.3.2.3 总结
表示层主要负责处理应用层数据的表示,转换,加密和压缩,确保数据在不同的系统之间能够正确的理解和处理
1.3.3 会话层
会话层接收表示层的数据并进行封装,发送给传输层,或接收传输层的数据解封发送给表示层
1.3.3.1 主要功能
<1> 建立会话: 会话层负责在通信双方之间建立会话
<2> 管理会话: 会话层负责管理会话的整个生命周期,包括数据传输、会话恢复和会话终止。
<3> 同步和检查点: 会话层在数据传输过程中设置同步点和检查点,确保数据的完整性和一致性。
<4> 对话控制: 会话层支持双向通信,并可以控制会话的方向。
1.3.3.2 常见会话层协议
<1> RPC (Remote Procedure Call)
<2> NetBIOS (Network Basic Input/Output System)
<3> SMB(Server Message Block)
1.3.3.3 总结
会话层主要负责管理和协调通信双方之间的会话,通过各种协议实现其功能,确保数据在会话期间正确、有序地传输。
1.3.4 传输层
传输层的主要职责是提供端到端的可靠或不可靠数据传输服务,确保数据能够在网络中正确、完整地传输。
1.3.4.1 主要功能
<1> 端到端的通信: 传输层负责在源主机和目标主机之间建立和管理端到端的通信。
<2> 可靠传输: 传输层提供可靠的数据传输服务,确保数据能够完整、无误地到达目的地。
<3> 不可靠传输: 传输层也提供不可靠的数据传输服务,不保证数据的可靠传输,但提供快速传输。
<4> 多任务管理: 传输层可以同时管理多个应用程序的通信,每个应用程序使用不同的端口号。
1.3.4.2 常见协议
<1> TCP (Transmission Control Protocol)
<2> UDP(User Datagram Protocol)
1.3.4.3 总结
传输层通过TCP和UDP两种协议实现其功能,确保数据能够在网络中正确、完整地传输。
1.3.5 网络层
1.3.5.1 主要功能:
<1> 路由选择: 网络层负责选择最佳路径,将数据报从源主机传输到目标主机。
<2> 逻辑地址处理: 网络层使用逻辑地址(如IP地址)来标识网络中的设备。IP地址是网络层的核心,用于路由选择和数据报的传输。
<3> 数据报传输: 网络层将传输层的数据(如TCP段或UDP数据报)封装成网络层的数据报(如IP数据报),接收方的网络层将接收到的数据报解封装,提取出传输层的数据并传递给上层。
<4> 错误检测: 网络层在数据报中添加校验和,用于检测数据在传输过程中是否发生错误。如果检测到错误,网络层会丢弃错误的数据报,由传输层负责重传。
1.3.5.2 常用协议:
<1> IP(Internet Protocol): IP是网络层的核心协议,负责将数据报从源主机传输到目标主机。
<2> ICMP(Internet Control Message Protocol):ICMP用于发送错误消息和控制消息,帮助网络层更好地管理数据报的传输。
<3> IGMP(Internet Group Management Protocol):IGMP用于管理多播组成员关系,支持多播通信。
1.3.5.3 总结:
网络层通过IP协议、ICMP协议等实现其功能,确保数据能够在复杂的网络环境中高效、可靠地传输。
1.3.6 数据链路层
1.3.6.1 主要功能:
<1> 帧的封装与解封装: 数据链路层将网络层的数据(如IP数据报)封装成帧。帧是数据链路层的数据单元,包含帧头、数据部分和帧尾。
<2> 可靠传输: 数据链路层通过校验码(如CRC)检测传输过程中是否发生错误。某些数据链路层协议(如HDLC)可以纠正单比特错误。数据链路层可以通过确认应答(ACK)和超时重传机制确保数据的可靠传输。
<3> 介质访问控制: 数据链路层负责管理多个设备共享同一物理介质(如以太网电缆)时的访问控制。
<4> 流量控制: 数据链路层可以通过流量控制机制(如滑动窗口协议)控制发送方的数据流量,避免接收方缓冲区溢出
1.3.6.2 常见协议
<1> 以太网(Ethernet)
<2> Wi-Fi(IEEE 802.11)
<3> PPP(Point-to-Point Protocol)
1.3.6.3 总结:
数据链路层主要负责将物理层传输的原始比特流封装成帧,并提供可靠的数据传输服务。
1.3.7 物理层
1.3.7.1 主要功能:
<1> 物理连接: 物理层负责建立和维护物理连接,确保数据能够在物理介质上传输。
<2> 比特流传输: 物理层负责在物理介质上透明地传输原始的比特流。
<3> 信号编码: 物理层将数据编码为适合物理介质传输的信号。
1.3.7.2 常见协议:
<1> 以太网(Ethernet)
<2> 光纤通信
<3> 无线通信
1.3.7.3 总结:
物理层通过各种协议和标准(如以太网、光纤通信、无线通信)实现其功能,确保数据能够在物理介质上正确传输。