网络中的7层协议

在这里插入图片描述

物理层

物理层解决最基础的传送通道,机械、电子、定时接口通信信道上的原始比特流传输。例如:机器a给机器b发送比特流,机器b接收的过程。物理层定义了物理设备的标准,如网线类型、光纤的接口类型、各种传输介质的传输速率。作用就是传输比特流,或者是将二进制流转为电流强弱信号进行传输,到达目的后再转换为二进制机器码(数模转换、模数转换的过程),例如网卡就是工作在这一层的。

数据链路层

物理寻址,同时将原始比特流转变为逻辑传输线路。在传输比特流的过程中可能会出现错传、重复传、漏传(数据包的丢包、重复包、出错、乱序)等的可能,数据链路层定义了如何格式化数据来进行传输,以及如何对介质的访问,这一层通常会提供错误检测和纠正,确保数据传输的正确可靠性。将比特数据转换为帧,交换机工作在这一层,将帧解码,并根据帧中包含的数据并发送到接收方。

随着网络节点的增加,点对点通信时需要经过多个节点,如何找到目标节点,如何选择最佳路径成为首要需求,这时网络层就出现了。

网络层

控制子网的运行,如逻辑编址、分组传输、路由选择。将网络地址翻译为对应的物理地址,并决定如何从发送方路由到接收方,网络层通过综合考虑发送优先权、网络拥塞程度、服务质量、可选路由的花费来决定从一个网络中节点a到另一个网络中节点b的最佳路径,由于网络层处理并智能指导数据传送,路由器连接网络各段,所以路由器属于网络层。此层的数据我们成为数据包,主要关注TCP/IP协议中的IP协议。

随着网络通信需求的进一步扩大,通信过程中需要发送大量的数据,如海量文件传输的可能需要很长时间,而网络在通信的过程中可能会中断好多次,此时为了保证传输大量文件时的准确性,需要对发出去的数据进行切分。切分为一个一个的段落,即segment进行的发送,那么其中一个段落丢失了,该怎么办?要不要重传?每个段落要按照顺序到达吗?这个便是传输层需要考虑的问题了。

传输层

接受上一层的数据,在必要的时候把数据进行分割,并将这些数据交给网络层,且保证这些数据段有效到达对竭。传输层解决了主机间的数据传输,数据间的传输可以是不同网络的,并且传输层解决了传输质量的问题,该层称之为OS模型中最重要的一层。传输协议同时进行流量控制,或是基于接收方可接收数据的快慢程度,规定适当的发送速率。除此之外,传输层按照网络能处理的最大尺寸将较长的数据包进行强制分割,例如以太网无法接收大于1500字节的数据包。发送方节点的传输层将顺序分割成较小的数据片,同时对每个数据片安排序列号,以便数据到达接收方节点的传输层时,能以正确的顺序重组。该过程即称为排序。传输层中需要我们关注的协议有TCP/IP协议中的TCP协议和UDP协议。

现在我们已经保证给正确的计算机发送正确的封装过后的信息了,但是用户级别的体验好不好,难道每次都要去调用TCP去打包,然后调用ip协议去找路由自己去发送吗?当然是不行的,所以我们要建立一个自动收发包、自动寻址的功能。于是发明了会话层。

会话层

不同机器上的用户之间建立及管理会话。会话层的作用就是建立和管理应用程序之间的通信。

现在我能保证应用程序自动收发包和寻址了。但我要用Linux给windows发包,两个系统语法不一致,就像安装包一样,EXE是不能在Linux下面去执行的。shell在windows下也是不能直接运行的,于是需要表示成。

表示层

信息的语法语义以及它们的关联,如加密解密、转换翻译、压缩解压缩。表示层帮我们解决不同系统之间的通信语法问题,在表示层数据将按照网络能理解的方案进行格式化,这种格式化也因所使用网络的类型不同而不同。

此时虽然发送方知道自己发送的是什么东西,转化成字节数组之后有多长,但接收方肯定不知道。所以应用层的网络协议诞生了。

应用层

规定发送方和接收方必须使用一个固定长度的消息头,消息头必须使用某种固定的组成。而且消息头里必须记录消息体的长度等一系列信息,方便接收方能够正确的解析发送方发送的数据。应用层旨在让你更方便的应用从网络中接收到的数据。至于数据的传递,没有该层你也可以直接在两台电脑间直接传递,只不过传来传去就是一堆0、1组成的字节数组。该层需要我们重点去关注的是与之相对应的TCP/IP协议中的HTTP协议。

以上就是关于OSI各层次的划分。从应用层开始,都会对要传输的数据头部进行处理。最终由物理层通过以太网电缆等介质将数据解析成比特流在网络中传输。数据传递到目标地址,并自底而上的将先前对应的头部给解析分离出来,这就是我们的网络数据处理的整个流程。
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章