首页 > 编程知识 正文

安全协议,网络七层协议每层的作用

时间:2023-05-05 11:00:05 阅读:173848 作者:3026

互联网的本质是一系列网络协议,这个协议被称为OSI协议。 根据功能的不同分工也不同,可以考虑的分为七层。 实际上这七层是不存在的。 也就是说,没有这些概念。 今天我们提到的七层概念只是人为的划分。 目的只是让他们更好地理解这些是用来做什么的。 OSI是一种开放的通信系统互连参考模型,也是一种定义良好的协议规范。 OSI模型有七层结构,每层可以有几个子层。 OSI的第7层自下而上依次为7-APP应用层、6-表示层、5-会话层、4-传输层、3-网络层、2-数据链路层和1-物理层。

七层协议详细物理层(网卡)是模型的最低层。 该层是网络通信的数据传输介质,由连接不同节点的电缆和设备构成。 功能利用传输介质为数据链路层提供物理连接,用于计算机之间的数据传输,并传输比特流。 负责0、1比特流(0/1序列)与电压高低、忽悠闪烁的切换。

在此层次中,数据单位称为http://www.Sina.com/(bit )。

数据链路层(交换机)模型的第2层。 主要功能是负责物理级别的相互连接、节点之间的通信传送,例如一个以太网项链两个节点之间的通信,比特,这一层的作用是传输以“帧”为单位的数据包、com 格式化并验证bit数据。物理地址寻址采用差错控制和流量控制方法,使有差错的物理线路成为无差错的数据链路。

在这个层次中,数据的单位称为帧。

网络层(路由、点对点) :第3层。 主要功能是创建逻辑链路以在节点之间传输数据、IP寻址以及通过IP连接到网络上的计算机。 将数据转发到目标地址; 目标地址是多个网络通过路由器连接的地址之一,主要搜索地址和路由。 通过路由实现不同局域网之间的通信。 通过路由算法,使数据包通过通信子网选择最优路径,实现拥塞控制、网络互联等功能。

在此层,数据的单位称为数据包(packet )。

传输层(端到端) :第四层。 只在通信对象的节点(计算机终端等)进行处理,而不是由路由器进行处理。 主要功能是建立主机端到端服务,处理数据包错误、数据包顺序和其他重要的传输问题。 传输层向上层屏蔽了下层数据通信的细节。 因此,它是计算机通信体系结构的关键层。 主要关注tcp、udp。 ipv6的传输效率高与这一层有关。

在此层次中,数据的单位称为数据段(segment )

主要功能:

:为端到端连接提供传输服务

)这种传输服务分为可信和不可信两种,其中Tcp是典型的可信传输,Udp是不可信传输

)提供端到端连接的流量控制、差错控制、服务质量(QoS )等管理服务

的协议如下

TCP :传输控制协议,传输效率低,可靠性高

UDP )用户数据报协议。 适用于传输可靠性不高、数据量少的数据(例如QQ )

斜层(对话控制)第五层。 主要功能是保持两个节点之间的传输连接,避免点对点传输中断,并管理数据交换等功能。 管理不同设备之间的通信。

表示层(数据格式转换)第六层。 对APP应用层的数据进行编码和数据格式转换,以确保不同设备之间的通信(windows和linux )。 主要功能是用于处理两个通信系统交换的信息的显示方法,主要包括数据格式转换、数据加密与解密、数据压缩与恢复等功能。

APP应用层:模型的顶层。 它的主要功能是提供一个APP界面,直接向用户提供各种网络服务,包括文件服务器、数据库服务、电子邮件和其他网络软件服务。

自顶向下、自底向上处理数据头。

从记忆的上至下,是应、表、会、传、网、数链、物。

OSI模型最初是因为美国人有在两台设备之间进行通信的需求。

需求1 )如何在两个硬件之间进行通信? 具体来说,一台发送比特流,另一台可以接收。

因此,目的是保障数据传输可靠性:主要定义了网线接口类型、管线接口类型、各种传输介质的传输速率等设备标准。 其主要作用是传输比特流,从1/0转换为电流强弱进行传输,达到目的后再转换为1/0,即数模转换。 这一层的数据是比特。

需求2 )现在我可以通过电线传输数据流,但我希望它可以通过无线电波,通过其他介质进行传输。 而且,需要保证传输的比特流是正确的,并具有纠正错误的功能。

物理层:定义如何传输格式化的数据以及如何控制对物理介质的访问。 此级别通常还提供错误检测和修复,以确保数据的可靠传输。

需求3 )现在我可以将正确的比特流数据发送到另一台计算机,但发送大量数据时,可能需要一些时间。 例如,某种视频格式会导致网络多次中断。 事实上,即使有物理层和数据链路层,网络也总是中断。 只是,被中断的时间是毫秒级。 需要保证传输大量文件时的准确性。 于是,我把发送的数据封装起来。 就像送快递一样,一个一个地送。

因此发明了数据链路层()传输层在OSI模型中

在网络层面上)。比如TCP,是用于发送大量数据的,我发出去一万个包,另一台电脑就需要告诉我是否接收到一万个包,如果缺少3个包,就告诉我是第1001/234/8888个包丢了,那我再发一次。这样,就能保证对方把这个视频完整接收了。例如UDP,适用于发送少量数据的。我发20个包出去,一般不会丢包,所以 ,我不管你收到多少,在多人互动游戏中,也经常受到UDP协议,因为一般都是简单的额信息,而且有广播的需求。如果用TCP,效率就会很低,因为它会不停地告诉主机我收到20个包,或者18个包,再发我两个!如果同时有1万台计算机都这样做,那么用TCP反而会降低效率,还不如用UDP,主机发出去就算了,丢几个包就卡一下,算了,下次再发包更新。

需求4:传输层是解决了打包的问题。但是如果我有多台计算机,怎么能找到我要发的那台?或者A要给F发信息,中间要经过B/C/D/E,但是中间还有好多节点,如K/J/Z/Y.我怎么选择最佳路径?这就是路由要做的事情。

于是发明了网络层,也就是路由器,交换那些具有寻址功能的设备所实现的功能。这一层定义的是IP复制,通过IP地址寻址,所以产生了协议。

需求5:现在已经能够给指定计算机发送正确的封装过的信息了,但是用户级别的体验并不是很好?难道我每次都要调用TCP去打包,然后调用IP协议去找路由,自己去发?当然不行,所以我们要建立一个自动收发包,自动寻址的功能。

于是发明了会话层。会话层的作用就是建立和管理应用程序之间的通信。

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

于是需要表示层,帮我们解决不同系统之间的通信语法问题。

需求7:现在所有必要条件都准备好了,我们可以写个Android程序,web程序去实现需求吧。

补充:不知道有没有小伙伴熟悉Socket,这不是一个协议,而是一个通信模型。其实它最初是伯克利加州分校软件研究所,简称BSD发明的,主要是一台电脑两个进程之间进行通信,然后把它用到两台电脑的进程间通信。所以,可以把它简单理解为进程间通信,主要是这么做的:

A发包:A发请求包给某个已经绑定的端口;收到B的允许后,A正式开始发送,发送完了,A告诉B要断开连接;A收到断开允许后,马上断开,然后发送已经断开信息给B。

B收包:绑定端口和IP,然后在这个端口监听接收到A的请求,发给A,并做好接收准备,主要就是清理缓存等待接收新数据;然后正式接收,B接收到断开请求,并允许断开,B确认断开后,继续监听其他请求。

换句话说,socket就是I/O操作,socket并不仅限于网络通信。在网络通信中,它涵盖了网络层、传输层、会话层、表示层、应用层。

from:https://blog.csdn.net/qq_27623337/article/details/80982931

from:https://www.cnblogs.com/mike-mei/p/8548238.html

 

数据链路层

    数据链路层把网络层交下来的数据构成帧发送到链路上,以及把接收到的帧中的数据取出并交给网络层。在互联网中,网络层协议数据单元就是IP数据报(或简称为数据报、分组或包)。数据链路层的三个基本作用:封装成帧、透明传输和差错检测。两台主机通过互联网进行通信时数据链路层所处的地位:

当我们专门研究数据链路层的问题时, 在许多情况下我们可以只关心在协议栈中水平方向的各数据链路层。

当H1到H2发送数据时,从数据链路层来看, H1到H2的通信可以看成由四段不同的链路层通信组成, 即:

 H1→R1, R1→R2, R2→R3和R3→H2。 这四段不同的链路层可能采用不同的数据链路层协议。

1. 数据链路和帧

链路和数据链路不是一回事。

所谓链路就是从一个结点到相邻结点的一段物理线路(有线或无线),而中间没有任何其他的交换接点。在进行数据通信时,两台计算机之间的通信路径往往要经过许多段这样的链路。可见链路是路径的组成部分。

数据链路是另一个概念、这是因为当需要在一条线路上传输数据时,除了必须有一条物理线路外,还必须有一些必要的协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。现在最常用的方法是使用网络适配器(既有硬件,也有软件)来实现这些协议。一般设配器都拥有物理层和数据链路层。

                     

点对点信道的数据链路层在进行通信时主要步骤如下:

1.结点A的数据链路层把网络层交下来的IP数据报添加首部和尾部封装成帧。

2.结点A把封装好的帧发送给结点B的数据链路层。

3.若接点B的数据链路层收到的帧无差错,则从收到的帧中提取出IP数据报交给网络层;否则丢掉这个帧。

数据链路层不必考虑物理层如何实现比特传输的细节。我们甚至还可以简单的设想好像是沿着两个数据链路层的水平方向把帧直接发送到对方。

封装成帧

    在数据部分的前面和后面添加上首部和尾部,构成一个完整的帧。首部和尾部可以确定帧的界限、此外还有很多控制信息。在发送帧时,是从帧首部进行发送的,各种数据链路层协议都对帧首部和帧尾部的格式由明确的要求。

               

当数据出现差错时,帧定界的作用更加的明显。假定一个帧发送到一半突然出了故障,中断了发送。但随后很快又恢复了正常,于是从头发送这个帧,由于使用了帧定界符,那么前面收到的帧是不完整的帧(只有首部SOH而没有尾部EOT),必须丢弃。而后面收到的数据有明确的定界符,因此得到的是一个完整的帧,应当收下。

from:https://www.jianshu.com/p/a93e79669cc5

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。