网络知识之----http七层协议

为啥我又来看N年前看的七层协议,因为我又忘了。逗比们,从学点知识吧,温故而知新也。

看完这张图,你是否和我一样,神清气爽,如醍醐灌顶,瞬间对七层协议豁然开朗。虽有了一个大概,但真要想深挖下去,还是得细嚼慢读,才能稍有理解,不然过几天又要忘。

一,什么是七层协议

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

1.物理层(网卡)

是模型的最低层。该层是网络通信的数据传输介质由连接不同结点的电缆与设备共同构成。功能是:利用传输介质为数据链路层提供物理连接,用于计算机之间的数据传输,传输bit流。负责0、1 比特流(0/1序列)与电压的高低、逛的闪灭之间的转换。

在这一层,数据的单位称为比特(bit)

2.数据链路层(交换机)

负责物理层面上的互联的、节点间的通信传输(例如一个以太网项链的2个节点之间的通信),传输以“帧”为单位的数据包该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。对bit数据格式化,校验。目的是保障数据传输可靠性。采用差错控制与流量控制方法,使有差错的物理线路变成无差错的数据链路。

在这一层,数据的单位称为帧。

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

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

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

3.网络层(路由选择,点到点)

为数据在节点之间传输创建逻辑链路,IP寻址,通过IP连接网络上的计算机。将数据传输到目标地址;目标地址可以使多个网络通过路由器连接而成的某一个地址,主要负责寻找地址和路由选择。通过路由实现不同局域网间的通信。通过路由选择算法为分组通过通信子网选择最适当的路径,以及实现拥塞控制、网络互连等功能。

在这一层,数据的单位称为数据包(packet)

4.传输层(端到端)

只在通信双方的节点上(比如计算机终端)进行处理,而无需在路由器上处理,主要功能是:建立了主机端到端服务,处理数据包错误、数据包次序,以及其他一些关键传输问题。传输层向高层屏蔽了下层数据通信的细节。因此,它是计算机通信体系结构中关键的一层。主要关注tcp、udp。ipv6传输效率高就和这层有关

在这一层,数据的单位称为数据段(segment)

主要功能

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

②:这种传输服务分为可靠和不可靠的,其中Tcp是典型的可靠传输,而Udp则是不可靠传输

③:为端到端连接提供流量控制,差错控制,服务质量(Quality of Service,QoS)等管理服务

包括的协议如下

TCP(Transmission Control Protocol):传输控制协议,传输效率低,可靠性强

UDP(User Datagram Protocol):用户数据报协议,适用于传输可靠性要求不高,数据量小的数据(比如QQ)

5.会话层(会话控制)

负责维护两个结点之间的传输连接,以便确保点到点传输不中断,以及管理数据交换等功能。管理不同设备之间通信。

6.表现层(数据格式转化)

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

7.应用层

提供应用接口,为用户直接提供各种网络服务,比如文件服务器、数据库服务、电子邮件与其他网络软件服务

看完以上的解释,瞬间再次㝬然开朗。

================================历史故事=================================

OSI模型最初是因为美国人的两台机器之间有进行通信的需求。(题外话:美国人对于未知的东西勇于去尝试,去挑战,哪怕百次失败也挫不了他们的决心,这点至少是我所不具备的)

需求1:两个硬件之间如何进行通信,具体就是一台发比特流,另一台能够收到。

于是就有了物理层:主要是定义设备标准,如网线的接口类型、管线的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流,就是从1/0转化为电流强弱来进行传输,到达目的之后再转化为1/0,也就是我们常说的数模转换。这一层的数据是比特。

需求2:现在通过电线我能发数据流了,但是我还是希望能通过无线电波,通过其他介质来进行传输。然后我还要保证传输过去的比特流是正确的,需要由纠正错误的功能。

数据链路层:定义了如何让格式化数据进行传输,以及如何让控制对物理介质的访问。这一层通常还提供错误检测和纠正,以确保数据的可靠传输。

需求3:现在我能发正确的比特流数据到另一台计算机了,但是当我发大量数据的时候,可能需要很长时间,例如:一个视频格式的,网络会中断好多次,实际上,即使有了物理层和数据链路层,网络还是经常中断,只是中断的时间是毫秒级别的。我需要保证传输大量文件时的准确性。于是,我要对发出去的数据进行封装。就像发快递一样,一个个发送。

传输层是解决了打包的问题。但是如果我有多台计算机,怎么能找到我要发的那台?或者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并不仅限于网络通信。在网络通信中,它涵盖了网络层、传输层、会话层、表示层、应用层。

以上内容原文链接

网络7层协议简述_菜鸟知识搬运工的博客-CSDN博客_网络七层协议

TCP/IP协议(一)网络基础知识 网络七层协议 - 专注it - 博客园

http的七层协议_乡愁入我心的博客-CSDN博客_http七层协议


互联网协议(OSI 七层协议) - SegmentFault 思否

  • 8
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值