网络OSI七层参考模型
OSI七层概念模型
历史背景: 20世纪70年代,当时计算机网络的发展还处于起步阶段,各个厂商和组织使用的网络协议存在着互不兼容的问题。为了解决这个问题,国际标准化组织(ISO)于1977年成立了一个工作组,负责制定一个通用的网络协议标准,即OSI七层模型。
OSI在实际中并不实用,只是作为参考,在网络出现问题时可以从一个宏观的整体的去解决问题。
如今互联网广泛使用的为TCP/IP协议,也就是四层网络模型(但是实际上划分为五层更为合理,将物理层单独分开)
OSI七层模型形成目的
7. 应用层 (Application Layer):
解决问题: 提供网络服务给最终用户。 目的: 提供网络服务,支持用户应用程序的网络需求。
举例: HTTP、FTP、SMTP等协议,负责支持用户应用,例如网页浏览、文件传输和电子邮件。
- 再举个简单的例子:
华为电脑用浏览器访问苹果电脑搭建的网站,两个应用具体需要如何进行交互就是应用层的事情了,应用层并不是说你需要使用什么应用程序,而是应用如何沟通,常用的应用层协议HTTP协议
使得应用之间可以实现沟通,应用层就是最接近用户的那一层, 但是应用层只不过是逻辑上把两个两个应用连通, 实际物理上的连通是需要物理层的。
1. 物理层 (Physical Layer):
解决问题: 传输比特流(0和1)。 目的:确定数据如何在物理介质上传输,例如电缆、光纤、无线电波等。
举例:确定电压水平、电缆的连接方式、传输介质的频谱利用等
我们要发送出去的数据在计算机里只不过是无数的0和1(也就是比特(bit)),物理层就要把这些比特用不同的媒介传输出去
用电,光或者其他形式的电磁波来表示和传输信号数据从网络接口出去以后会经过不同的网络拓扑,并不是一条线走到底因此需要中继器和集线器这样的设备,但还是不够信号要去到哪台设备是需要定向的,所以需要更高级的网络模型,数据链路层油然而生
2. 数据链路层 (Data Link Layer):
解决问题: 直接点对点的数据传输,通过物理层提供的服务。
目的: 提供可靠的数据传输,检测和纠正传输错误。
举例:Ethernet协议负责帧的组装和解析,MAC地址的管理,错误检测和纠正。
在数据链路层这里,比特会被封装成帧,帧就是这一层表示数据的特殊名字而已 ,在封装的时候会加上MAC地址,也就是传说中的物理地址,网卡出厂的时候就有着全球唯一的MAC地址
为了可以通过MAC地址对不同设备进行数据的传输,就出现了交换机(这里说的是二层交换机)
比方说这里有一台交换机,连接多台主机,发送端发送数据的时候,交换机就知道了发送端的MAC地址,如果此时交换机也知道接收端的MAC地址,就可以把数据直接发送过去了,物理地址就是这样一跳一跳地进行传递
另外因为物理层在传输0和1的时候,可能会0变成1,或者1变成0,会进行差错检测,以及一定的差错纠正,另外设备之间的传输能力以及接受能力也是个问题,很可能这边“喷水”式传输,另一边“夹缝式”接受,因此需要流控制来避免这种不对称,我们知道互联网是一张大网,如果用MAC物理地址来作为唯一的寻址方法是不科学的,所以出现了网络层
3. 网络层 (Network Layer):
解决问题: 将数据从源主机传输到目标主机,跨越不同的网络。
目的: 确定最佳路径,进行逻辑寻址,并处理数据包的路由。
举例:IP协议是网络层的代表,负责在不同网络之间进行数据包的路由。
比如我和你买了同一个厂的网卡,我和你你的网卡差别只有一个字母,但是我和你距离十万八千里
物理地址此时就很难做出快速定位,相当于我有你的名字,但不知道你住哪里,找不到你
因此需要IP地址来进行寻址和路由选择
IP这样的逻辑地址就是实现端到端的基础了,而不是物理地址那样的跳到跳传输,
说到路由选择,也就是说路由器也是网络层的核心,包就是网络层里数据的名字,在封装为二层的帧之前就是包,路由器根据包里IP地址进行路由转发
地址管理和路由选择就是这一层的核心
,虽然有MAC和IP地址可以抵达对方主机,但是对方主机可能运行着无数多个软件进程,就需要传输层来解决
4. 传输层 (Transport Layer):
解决问题: 提供端到端的通信,确保数据的可靠传输。
目的: 处理数据流控制、差错恢复和数据重组。
举例:TCP协议提供可靠的、面向连接的通信,而UDP协议提供无连接的、不可靠但是更高效的通信。
假设我用谷歌和火狐浏览器同时登录网站,如何让数据去到指定的软件服务上,就需要用到端口号作为地址来定位了,比如客户端这里生成不同的端口号
即时同时访问HTTP端口80也是没问题的,根据不同的源端口号来作出响应就可以了,所以传输层(运输层)在网络层的端到端基础上,实现了服务进程到服务进程的传输,段就是传输层里数据的名字
传输层管理两个节点之间数据的传输,负责可靠传输和不可靠传输
TCP
其中TCP允许应用把字节流变成多份段,而不是整个字节数据完整地发送出去
传输层还有流量控制来确保传输速度,再加上错误控制来进行数据完整的接收
5. 会话层 (Session Layer):
解决问题: 管理不同应用程序之间的会话。
目的: 提供对话控制,确保数据的同步和顺序传输。
举例:在不同计算机之间建立、管理和终止会话的过程。
比方说你现在登录了某个网站,网站服务可以保持你的登录状态,不用每次都输入账号和密码,当然网站服务会管理和控制登录状态,另外会话层还负责同步服务。
比方说你上次看到电影高潮的时刻突然停电了,再次登录账号的时候就可以自动同步到上次看到的时间段,不同计算机内部的各自表达方式可能不太相同
不同计算机内部的各自表达方式可能不太相同,表示层就来负责这样的转换
6. 表示层 (Presentation Layer):
解决问题: 数据格式转换、数据加密和解密等。
目的: 确保不同系统的数据格式能够正确解释。
举例:数据的编码、加密和压缩,确保在网络上传输的数据在不同系统中能够正确解释。
表示层也就是编码和解码,数据往往还需要进行加密
比方说HTTPS( SSL/ TLS)就会对我们的数据进行加密和解密,另外我们可能还需要给文件瘦身,压缩也是这一层负责的
总结
应用层,表示层和会话层的数据统称为应用数据或者应用负载也可以叫上层数据同时也是教科书上说的
报文
数据在各层的名字分别是
-
就地址来说有端口号,IP逻辑地址和MAC物理地址
-
就传输功能来讲有服务进程到服务进程,端到端,跳到跳
关联
客户端要发送数据,也就是报文,报文来到传输层加上端口号,封装成段,段来到了网络层,加上IP地址,封装成包(注意这里的包是含有目标IP地址的),毕竟你要知道数据要发送到什么地方
但因为目标IP地址不是同一个网络下的,要发送到其他的网络就需要经过默认网关,现在就出现了一个问题,客户端主机最初并不知道默认网关的MAC地址,没有办法封装成帧,这个时候就可以用ARP协议进行广播,找到网关IP对应的MAC地址把包封装成帧(
源MAC地址填自己的,目标MAC地址填广播地址
)
假设当前网络有个二层交换机,这个交换机只需要记录下不同的接口对应的MAC地址就好了,交换机收到广播后就帮忙发送出去“人手一份”,所以默认网关收到消息后查看了帧,发现了发送端的MAC地址,再解封发现包里面的IP地址,就会把客户端MAC地址和IP地址关联为一台主机,同时默认网关会把自己的IP地址放入包里,再结合自己的MAC地址封装成帧,默认网关就这样做出响应,这样原路返回,发送端就知道默认网关的MAC地址了,现在就可以封装成帧,并且发送数据
比特流到了默认网关的时候,解封为帧发现是送给自己的,那解封为包查看到目标IP地址是在另一网络中的,就会进行路由转发,最终到达了目的网络,如果目标的网关知道目标IP地址和MAC地址是哪台主机,封装成帧就可以直接发送过去了
如果不知道也还是可以用ARP喊下街就好,目标主机收到包确认是自己的IP地址以后,解封查看段可以发现源和目标端口号,用目标端口号给到指定的应用程序,应用程序处理好以后,就可以按照源的信息做出响应,回去的原理也是一样的
**说明:**本文是作为哔哩哔哩up主(技术蛋老师)讲解OSI七层网络参考模型的笔记
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!