目录
OSI七层并不难记,七层里面的知识才是最复杂的,如和把七层里面的知识关联起来非常重要,遇到问题的时候就能快速的处理和解决问题
OSI七层网络参考模型分为
- 应用层
- 表示层
- 会话层
- 传输层
- 网络层
- 数据链路层
- 物理层
TCP/IP四层网络模型参考
- 应用层
- 传输层
- 网络层
- 数据链路层
实际应用网络一般为5层
- 应用层
- 传输层
- 网络层
- 数据链路层
- 物理层
为什么面试的时候总是爱问OSI模型呢?
OSI模型的目的很简单,就是为了解决主机之间的网络通讯,就好比普通话和英语无法正常沟通,但是大家如果都用统一的语言,这里统一使用OSI网络模型来沟通;
1.物理层
物理层考虑的是怎么样才能再连接各种计算机传输媒体上传输数据比特流,而不是指具体的传输媒体。物理层的作用正是要尽可能地屏蔽掉这些传输媒体和通信手段的差异,使物理层上面的数据链路层感觉不到这些差异,这样就可使数据链路层只需要考虑如何完成本层的协议和服务,而不必考虑网络具体的传输媒体和通信手段是什么。
2.数据链路层
信号要去到那台设备是需要定向的,在数据链路层中,比特会被封装成帧,帧就是这一层数据的数据单元,在封装的时候会加上MAC地址,也就是物理地址,网卡在出厂时就有着全球唯一的MAC地址,为了可以通过MAC地址对不同的设备进行数据的传输,就出现了交换机,将来自物理层的数据可靠的传输到相邻节点的目标网络层;
3.网络层
如果用MAC物理地址作为唯一的寻址方法是不可靠的,比如我和你买了同一个厂出的网卡,我和你的网卡只差别一个字母,但是我和你相隔十万八千里,这时物理地址就很难做出快速定位,相当于我知道你的名字,但我不知道你住哪里,因此就需要IP地址进行寻址和路由选择,IP这样的逻辑就是实现了端到端的基础,而不是物理地址那样的跳到跳的传输,路由器是网络层的核心,包就是网路层数据的数据单元,在封装成二层的帧之前就是包,路由器根据包里的IP地址进行路由转发,地址管理和路由选择是这一层的核心。
4.传输层
虽然有MAC和IP地址可以抵达对方主机,但是对方主机运行着无数多个软件进程,假设用谷歌和火狐同时登录网站,如何让数据去到指定的软件服务上,就需要用到端口号作为地址来定位了,比如客户端这里生成了不同的端口号,即使同时访问HTTP端口80是没问题的,根据不同的源端口号进行返回就行,所以传输层在网络层端到端基础上,实现了服务进曾到服务进程的传输,段就是传输层的数据单元,在封装成三成包之前就是段,传输层管理两个节点之间的数据传输,负责可靠传输(TCP)和不可靠传输(UDP),其中TCP允许应用把字节流变成多份段,而不是整个字节数据完整的发出去,传输层还有流量控制来保证传输速度,再加上错误控制来进行数据完整的接收。
5.会话层
比如说你现在登录了某个网站,网站服务可以保持你的登录状态,不用每次都输入账号和密码,网站服务会管理和控制登录状态。另外,会话层还负责同步服务,比如你上次看到电影高潮的时刻突然停电了,再次登录账号时,就可以自动同步到上次看到的时间段。主要功能是:组织和协调两个会话进程之间的通信 ,并对数据交换进行管理。
6.表示层
不同计算机内部的各自表达方式可能不太相同,表示层就负责这样的转换,也就是编码和解码,数据往往还需要进行加密,比方说HPPTS(SSL/TLS)就会对数据进行加密和解密,另外我们还要对文件瘦身,压缩也是这一层负责。
7.应用层
比如浏览器访问网站,两个应用具体需要如何进行交互就是应用层的事情了,常见的应用层协议就是HTTP了,开发者可以根据HTTP协议编写应用程序,使得应用之间可以沟通,应用层就是最接近用户的那一层,产生网络流量的程序。该层的主要功能是:直接向用户提供服务,完成用户希望在网络上完成的各种工作。
总结
- 应用层、表示层、会话层的数据统称为应用数据,或者为应用负载,也可以叫上层数据,也是教科书上说的报文;
- 数据在各层的名字分别是报文、段、包、帧、比特;
- 就地址来说,有端口号、IP逻辑地址、MAC地址;
- 就传输功能来讲,有服务到服务的进程、端到端、跳到跳;
全部关联:
- 客户端发送数据,也就是报文;
- 报文来到传输层,加上端口号封装成段;
- 段来到网络层,加上IP地址,封装成包(这里的包是含有IP地址的);
- 但由于目标IP地址不是一个网络下的,要发送到其它的网络,就需要经过默认网关,这就出现了一个问题,客户端主机并不知道默认网关的MAC地址,没有办法封装成帧,这个时候就可以用ARP协议进行广播,找到IP对应的MAC地址,把包封装成帧。源MAC填自己的,目标MAC地址填广播地址;假设当前网络有个二层交换机,这个交换机只需记录下不同的接口对应的MAC地址接好了,交换机收到广播后就帮忙发送出去,人手一份,所以默认网关收到消息后,查看了帧,发现了发送端的MAC地址,在解封发现包里的IP地址,就会把客户端MAC地址和IP地址关联为一台主机,同时默认网关会把自己的IP地址放入包里,在结合自己的IP地址封装成帧,默认网关就这样做出响应,这样原路返回,发送端就知道默认网关的MAC地址了。现在就可以封装成帧,并且发送数据;
- 比特流到了默认网关的时候,解封为帧发现是发送给自己的,再解封为包查看到目标IP地址是在另一网络中的,就会进行路由转发,最终到达目的网络;
- 目标主机收到包确认是自己的IP地址以后,解封查看段可以发现源和端口号,用目标端口号给到指定的应用程序,应用程序处理好后就可以按照源的信息做出响应,回去的原理也是一样;