理解OSI7层模型

OSI模型简介

OSI(Open Systems Interconnection)是一个把网络数据传输分层的模型。数据从一个终端传输到另一个终端,需要经过7层的模型。层与层之间的数据传输在概念上是对等的,但是在实际上需要经过“协议栈”,然后才可以进行发送。下层向上层提供服务,上层向下层提供接口。
理解OSI7层模型_第1张图片
把网络进行分层,方便对数据的封装发送处理。下层只需要根据上层提供的接口,提供有关的服务,而上层只需要使用下层提供的服务,就可以发送数据。各层之间,只要统一数据传输的接口或者协议,就可以对内部的功能进行自定义的扩展;而且编程的时候,可以明确自己处在那个层,这样可以简化思维,提高效率。

数据是底层逐层封装顶层的数据:

物理层

最底层的物理传输,发送的是01比特位,传输的是二进制数据流。

数据链路层

对物理层的数据进行校验处理等,同时通过MAC地址,在不同的网络设备之间进行通信。
理解OSI7层模型_第2张图片

网络层

网络层可以认为是用于路由的。不同主机之间传输数据,需要一系列的路由器转发数据,完成从一端到另一端数据转移的操作。网络层把运输层的数据进行封装,添加上有关的地址,从而使得数据可以经过路由转发,最终到达目的地。最经典的网络层协议是IP协议。
理解OSI7层模型_第3张图片

运输层

运输层在网络层之上,该层定义了数据的传输协议。网络层只是保证了能把数据从一端传送到另一端,但是也只能做到这一点;像数据到达的顺序、校验是否真正到达等,是需要运输层来实现的。最经典的两个是TCP协议和UDP协议。

会话层

会话层的作用是开启、关闭两个主机之间的连接,管理主机之间的连接等。该层的作用就是控制主机之间连接状态的,包括通信方式等。比如在QQ中,开启一个视频通话就相当于开启了一个会话。会话层更多的是在RPC中进行使用的。

表示层

表示层,顾名思义是数据的表示格式。比如数据的表示格式、数据的加密与解密和数据压缩格式等。比如SSH数据加密,protobuf格式的数据等,都属于该层。

应用层

该层表示的是两个终端实际发生的数据操作,比如HTTP协议中,用于发送了一个GET表单的操作,那么这个数据是最终传输到应用层当中的了。
理解OSI7层模型_第4张图片

总结

物理层、数据链路层、网络层和运输层是OSI协议中的底层协议。个人对底层协议的理解是:这些协议由操作系统封装完毕,直接进行系统调用就可以从上到下自动执行,一般不需要人为干预。

比如在Linux系统中,我们指定使用TCP协议后,使用send()系统调用,即可自动发送数据。比如指定该系统调用使用TCP协议,通过参数返回说明发送情况,包括拥塞机制,底层数据校验等,都是操作系统执行的。

会话层、表示层和应用层是OSI协议中的顶层协议。个人对顶层协议的理解是:这些协议需要由用户自定义,需要根据具体的业务进行处理。这些一般是需要程序员实际编写的,而且不一定是必须的。

比如现在很多的框架等,都是封装了很多了顶层协议,用户仅需要根据实际情况编写逻辑代码即可

你可能感兴趣的:(计算机网络)