为啥我又来看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 思否

网络知识之----http七层协议相关推荐

  1. 网络编程之OSI七层协议略析

    OSI七层协议 1 物理连接层 用高低电平模拟二进制数0101 2 数据链路层 以太网协议,Ethernet,要求连入网络的计算机必要要有一块网卡,并且规定全球每一块网卡的mac 地址都不一样,用12 ...

  2. 网络编程 之osi七层协议

    osi 七层协议 : 应用层: 应用层功能:规定应用程序的数据格式 传输层:tcp协议可靠传输 tcp协议不可靠传输 设定端口,端口即应用程序与网卡关联的编号. 网络层: ip协议 网络部分:标识子网 ...

  3. 网络编程之 osi七层协议

    内容目录: 1.软件开发架构 2.OSI七层协议 3.每层协议介绍 1.软件开发架构 c/s架构:c:客户端s:服务端 b/s架构:b:浏览器s:服务器 本质:b/s其实也是c/s 2.OSI七层协议 ...

  4. 网络知识梳理--OSI七层网络与TCP/IP五层网络架构及二层/三层网络

    作为一个合格的运维人员,一定要熟悉掌握OSI七层网络和TCP/IP五层网络结构知识. 废话不多说!下面就逐一展开对这两个网络架构知识的说明: 一.OSI七层网络协议 OSI是Open System I ...

  5. Day09: socket网络编程-OSI七层协议,tcp/udp套接字,tcp粘包问题,socketserver

    今日内容:socket网络编程     1.OSI七层协议     2.基于tcp协议的套接字通信     3.模拟ssh远程执行命令     4.tcp的粘包问题及解决方案     5.基于udp协 ...

  6. 【网络基础概念】: 网络相关硬件、TCP/IP四层协议模型、OSI七层协议模型。

    # 时人不识凌云木,直待凌云始道高 # 大家好,我是码辣,是一只正在努力的小小猿一枚,希望大家多多关照 ^v^. # 初次见面,希望大家能够喜欢.(如果你认为文章可以,别忘一键三连呀!嘿嘿. # 有什 ...

  7. 网络中的七层协议与TCP/IP五层模型

    socket(套接字)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程 ...

  8. 网络编程之网络架构及其演变过程、互联网与互联网的组成、OSI七层协议、socket抽象层...

    目录 网络架构及其演变过程 单机架构 CS架构 BS架构 BS架构和CS架构的区别 C/S架构的优缺点: B/S架构的优缺点: 互联网与互联网的组成 互联网的组成(教科书版) 互联网的组成(科普版) ...

  9. 网络七层协议 五层模型 TCP连接 HTTP连接 socket套接字

    socket(套接字)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程 ...

  10. 网络七层协议_IT人计算机网络浅析

    LAN: 局域网 local Area Network WAN: 广域网 Wide Area Network WAN = LAN +LAN+....+LAN 多个LAN 组成 WAN OSI 七层协议 ...

最新文章

  1. “伪高管”是如何搞垮一个公司的?
  2. 太强了!阿里技术团队重磅开放 《Java 开发手册》(附下载地址)!
  3. python主成分分析相关系数_python如何进行主成分分析
  4. 前沿资讯|Spring Native 0.11.2、Spring Authorization Server 0.2.2 发布
  5. 查看linux4222端口,linux 内核 ALIGN 含义
  6. php向指定文件发送消息,PHP-将文件发送给用户
  7. hdu-4825(01字典树)
  8. 没有外层实列可以访问_这糕点外层香酥,内馅香甜可口,让人吃一次就爱上了,做起来...
  9. 朋友圈广告助手_腾讯社交广告代理附近推跟朋友圈广告对比优势
  10. Spark streaming java代码
  11. c# params 工作原理。
  12. 设置MAC 下 Vim 语法高亮显示
  13. hfss仿真时间过长怎么解决_一文详解相控阵天线仿真技术
  14. 跌落测试显示:iPhone 13/13 Pro耐用性和前代几乎相同
  15. 有项目管理模板提供吗?(模板和管理工具对过程改进的帮助)
  16. 全国大学生数学竞赛(非数学专业)习题精讲等相关资源
  17. 路由器修改dns服务器,路由器DNS怎么设置如何修改路由器DNS服务器地址
  18. C++:空间坐标映射到球面坐标/全景图
  19. verilog实现pwm
  20. mysql order by 排序技巧

热门文章

  1. 局域网之间两台计算机同屏,如何实现内网多电脑同屏协同?
  2. 对龙果支付系统的简单了解
  3. 音视频基础:H264、H265、MPEG-4、VP8、VP9编码基础知识
  4. 【干货满满】初级银行从业考试《个人理财》重点梳理
  5. python程序设计总结报告_把PPT 总结报告上传
  6. 多比特杯第四届ACM程序设计竞赛同步赛
  7. SO、SOP、SOIC、MSOP、TSSOP、TSOP、VSSOP、SSOP、SOJ封装详解
  8. 深度优先遍历,广度优先遍历
  9. 华为无线路由器信道怎么测试软件,华为路由WS5200怎么修改wifi信道
  10. linux超级块编辑,在EXT4 linux系统上模拟丢失的超级块错误