前端网络基础-网络分层模型

OSI七层网络模型中各层的作用

前端网络基础-网络分层模型_第1张图片

 

物理层

物理层提供了两台机器互联的物理链路,比如网线(双绞线,光纤),无线网(电波)。

物理层不仅提供了物理链路,还提供了数据传输能力,比如双绞线使用电信号,光纤使用光信号,无线网使用电波信号,实现数据传输。

物理层使用信号来模拟出二进制数据0和1,来实现复杂数据的简单表示,所以物理层中数据也被称为比特流(因为二进制每一位都是bit,比特)。

数据链路层

物理层的比特流是一串0和1组成的信息流,它们之间没有分隔,所以无法被机器识别。而数据链路层的首要任务就是将物理层的比特流 按照 八位一组(字节) 的方式,依次发送。这样比特流就会被转成字节流(帧),就可以被机器有效解析了。

数据链路层还有一个重要作用就是:

发送请求时:加入发送方机器的MAC地址 和 接收方的MAC地址。作用是,方便接收方确认数据发送方MAC地址,以及帮助接收方确认数据是否是给它的。

收到响应时:解析接收方的MAC地址,确认该数据是否发送给本机。如果是,数据中接收方的MAC地址就应该是本机的MAC地址。

网络层

在数据链路层中,发送请求时,如何获取到接收方的MAC地址呢? 解决方案:ARP协议

如果发送方和接收方不在一个子网下,请求该如何发送?如果在一个子网下,请求该如何发送?

解决方案:IP协议

发送方如何选择最优路径找到接收方?解决方案:一组路由协议(静态路由,动态路由)

传输层

当发送的数据过多过大时,需要的传输事件就很长,如果传输过程中网络中断,那么如何保证数据重传?如何保证数据的完整性?

传输层会对发送的数据进行封装,会根据TCP协议或UDP协议进行封装。

数据的源头是来自于应用层的某个应用,而数据最终也要反馈到应用层的对应应用,那么我们如何将数据反馈到对应的应用中呢?

我们知道每个应用都会占用操作系统下的一个端口,且应用占用的端口号是固定的,无论应用安装在哪个机器上。此时,就可以通过端口号找到对应的应用。

所以传输层需要记录下数据来源的应用端口号,这样就可以根据端口找到对应应用,并将数据发送给他。

会话层

如果数据较大时,需要花费较多时间来进行数据传递,但是过程中网络中断,则需要数据重传。此时我们希望的是从网络断开时数据段开始重传,即断点续传。

会话层的作用就是从一个校验点开始恢复数据传递。

另外会话层还实现了自动收发包功能和自动寻址功能。

表示层

网络中互相通信的两台设备之间的操作系统完全可能不同,而操作系统不同就会导致数据传递实现方式出现差异,而表示层的作用就是提供一种公共语言,所有操作系统都可以识别的,来解决不同操作系统之间通信实现的差异性。即表示层做了一个翻译工作。

应用层

应用层直接面向用户,它需要将用户输入的数据整理后发送,即按照一定的协议(如HTTP协议),编排请求报文。

或者将从底层传递过来的字节流数据转化为可以被用户识别的语言。

TCP/IP协议族 四层网络模型 及 和OSI各层对应关系

前端网络基础-网络分层模型_第2张图片

为什么会出现TCP/IP 四层网络模型

OSI七层网络模型是一种理想化的模型,但是当前网络通信实现基本都是按照TCP/IP协议族四层网络模型进行设计的。

TCP/IP 四层网络模型中,将 OSI的 应用层,表示层,会话层  全部归纳为 应用层。

因为OSI前三层的功能,当前都由应用软件整体完成了,即应用软件本身完成了 对用户输入的整理,以协议要求来组装请求报文以及解析响应报文;应用软件本身会针对不同操作系统开发出不同版本的软件,来适配对应的操作系统;并且将断点重传,自动重传,以及会话控制等能力写在自身软件逻辑中。

所以完全没有必要单独分出表示层和会话层,这样既会造成表示层和会话层的复杂性,它们要考虑到各种应用软件的情况,也造成了应用软件开发的约束性。

另外TCP/IP还将OSI最后两层:数据链路层和物理层 归纳为 数据链路层。 其实可以分析出来,网络分层模型中大部分层都是软件层面的,而物理层作为硬件层面出现在网络分层中,显得很鸡肋,物理层本身没有复杂的逻辑,只管将数据转成二进制形式的信号进行传输。但是物理层确实是网络通信中必不可少的一个环节。所以TCP/IP直接将其划分到数据链路层。

而OSI模型中,传输层和网络层 具有鲜明的特色,无法和其他层合并。

TCP/IP 模型中 数据传输过程

举个例子:

我在自己HP笔记本上的Edge浏览器的地址栏中输入一个网址 https://www.baidu.com,按下回车后,浏览器显示了一个百度搜索网页。

这一过程就涉及了网络中数据的传输,当前我们只关注数据在网络分层模型中的传输,不关注其他地方,所以可以画出如下示意图

(为了方便理解,我们还是将TCP/IP模型中物理层单独列出来)

请求过程,浏览器负责封装请求数据,服务器负责解封请求数据

前端网络基础-网络分层模型_第3张图片

 响应过程类似于上面,只不过是服务器负责封装响应数据,浏览器负责解封响应数据

你可能感兴趣的:(前端网络基础,前端,网络)