网络七层结构是干啥的? 看这篇文章就够了

专注IP定位
• 阅读 500

** 前言**

“物理层、数据链路层、网络层、传输层、会话层、表示层和应用层”,今天我们的目标就是把这些个玩意,翻译成“人话”,保证你一看就懂,一学就废~

网络七层结构是干啥的?  看这篇文章就够了

网络七层结构,相信是个搞计算机网络的,或者是搞软件开发的,甚至是搞互联网的,99%的人应该都知道,最起码那也得是听过,就是下方这个玩意:

(你要是听都没听过,别跟我说你是混迹于互联网界的啊~)

但是,如果让这些人讲清楚这七层结构是干嘛的,那这个比例,估计能从99%锐减到1%。

今天,就让我们一起来把这七层结构,翻译成“人话”。

本着“有问题,找百度”的原则,我打开了百度百科,然后就发现了以下这些内容

网络七层结构是干啥的?  看这篇文章就够了

看到这些查找出来的“答案”,相信大家跟我的感觉是一样的:“看是不可能看懂的,这辈子估计都看不懂了。。。”

想要看懂这些东西怎么办呢?

按照“正常”的思路,我们需要解决以下问题:这七层都跟哪些内容相关?他们怎么关联起来的?协议这个玩意跟计算机是怎么结合的?操作系统是如何把IP数据包发给网卡的?

网络七层结构是干啥的?  看这篇文章就够了

于是我们发奋图强,了解到它大概跟应用程序、操作系统、路由器、交换机这些玩意相关,知道协议通过一层一层的封包或者解包来传输数据。再研究一下Linux网络实现,理解操作系统与外设的通信,中间可能还要写个驱动模块加深印象。额,等一下,晶体管是如何起到开关作用的?好像还得学学物理。。。

其实以上说的啥,我自己都不知道,纯属一顿胡诌,哈哈哈。

但我知道的是,这个“正常”的思路,绝对是“不正常”的,相信很多人,面对陌生的知识时,都会犯这种“打破砂锅问到底”的错误~

宏观理解层面,讲究的是“不求甚解”,只需要理解到以下这种程度即可。

翻译

整个网络当中,最基本或者是最核心的就是数据的传输,整个网络的搭建,都是为数据传输服务的,我们类比一下快递物流的例子,就可以初步理解这七层都是干嘛的了:

  1. 应用层

应用层的作用是为应用程序提供服务并规定应用程序中通讯相关的细节,也就是为应用提供服务。常见的协议有 HTTP,FTP,TELNET、SMTP 等。

翻译成“人话”:

相当于收件员。当客户(应用)打电话(发起请求)给收件员(应用层)时,收件员可以根据客户的不同需求提供不同的服务(不同协议),比如隔天送达、指定时间送达等等。

  1. 表示层

表示层的作用是将应用处理的信息转换为适合网络传输的格式,或者将来自下一层的数据转换为上层能处理的格式。它主要负责数据格式的转换。具体来说,就是将设备固有的数据格式转换为网络标准格式。常见的协议有 ASCII、SSL/TLS 等。

翻译成“人话”:

相当于打包员。如果快递(数据)太臃肿,他会在不破坏快递的情况下压扁(压缩)它。如果客户注重安全线,全能的快递公司还能用密码箱( SSL/TLS)打包快递再快送。当然,打包员会确定,目的地快递站的拆包员,能无损地拆开包裹,将快递交给用户。 3.会话层

会话层作用是负责建立和断开通信连接,以及数据分割等数据传输相关的管理。常见的协议有 ADSP、RPC 等。

翻译成“人话”:

相当于调度员。对快递运输进行调度指挥。例如这次客户要发100吨沙土(数据),到底是空运、陆运还是海运。而运完之后,相关信息(连接)也可以被销毁了,这些都是他的职责。

4.传输层

传输层起着可靠传输的作用。只在通信双方节点进行处理,而不需在路由器上处理。此层有两个具有代表性的协议:TCP 与 UDP。

翻译成“人话”:

相当于跟单员。负责任的跟单员(使用 TCP 协议)会保证快递送到客户手上,如果送不到就让公司再发一次。不负责任的跟单员(使用 UDP 协议)只管将快递送到客户指定的地方,不管快递是否送到客户手上。

  1. 网络层

网络层负责将数据传输到目标地址。目标地址可以是多个网络通过路由器连接而成的某一个地址。因此这一层主要负责寻址和路由选择。主要由 IP、ICMP 两个协议组成。

翻译成“人话”:

相当于路线规划员。快递公司有很多集散中心(路由器),根据集散中心的情况(是否拥堵),找出一条最合适的路径将货物(数据)沿路运过去。

  1. 数据链路层

该层负责物理层面上互连的节点之间的通信传输。例如与1个以太网相连的两个节点间的通讯。常见的协议有 HDLC、PPP、SLIP 等。

翻译成“人话”:

相当于驾驶员。他们驾驶着汽车,将打包好的快递(数据帧)从一个城市(物理节点)运输到另一个城市。

  1. 物理层

物理层负责0、1比特流(0、1序列)与电压高低、光的闪灭之间的互换。典型的协议有 RS 232C、RS 449/422/423、V.24 和 X.21、X.21bis 等。

翻译成“人话”:

相当于交通工具。例如公路、汽车和飞机等,承载货物(数据)的交通运输。

如果以上一堆文字都懒得看的话,那直接看下面这个图也行,这可是我耗费了大半天时间消化理解的,拿着这张图,你就可以给别人去讲,网络七层结构是干嘛的啦~

网络七层结构是干啥的?  看这篇文章就够了

1至4层被认为是低层,这些层与数据移动密切相关。5至7层是高层,包含应用程序级的数据。每一层负责一项具体的工作,然后把数据传送到下一层。 从上往下,每经过一层,协议就会在这个包裹上面做点手脚,加点东西,传送到接收端,再层层解套出来,如下示意图:

网络七层结构是干啥的?  看这篇文章就够了

知道了这些,我们就可以来看一下“快递”的行进过程。

假如你是一个网络上的操作系统。1层和2层的网卡会接收请求并通知你什么时候有包裹到达,驱动程序处理2层帧的出口,得到一个发亮和闪光的3层数据包。作为操作系统,你将调用一些常用的应用程序处理3层数据。

如果你决定保留这个数据包,你将打开它,并且取出4层数据包。如果它是TCP协议,这个TCP子系统将被调用并打开这个数据包,然后把这个7层数据发送给在目标端口等待的应用程序,整个过程就结束了。

在实际过程中,七层结构执行了哪些操作呢?

要回答这个问题,我们可以思考一下:用户输入一个网址,计算机执行了什么操作?

  1. 所有的数据通信经过封装打包后,经由物理线路传送。

    网络七层结构是干啥的?  看这篇文章就够了

  2. 所有的主机名都需要解析为IP地址

    网络七层结构是干啥的?  看这篇文章就够了

  3. 应用层使用HTTP协议,利用传输层面面向连接的TCP协议。

    网络七层结构是干啥的?  看这篇文章就够了

  4. WEB应用采用客户机/服务器的工作模式。

    网络七层结构是干啥的?  看这篇文章就够了

  5. 数据包通过路由器,根据路由表进行转发。

    网络七层结构是干啥的?  看这篇文章就够了

6.在每个网络内部,都要把IP地址转换成MAC地址。

网络七层结构是干啥的?  看这篇文章就够了

7.服务器上的WEB服务进程在监听TCP的80端口。

8.服务器按照请求,生成HTML文档发送到客户端。

9.客户端浏览器解释HTML文档,生成页面。

可以看到,正是因为有了七层结构的紧密配合,我们的数据和指令才会源源不断地被“打包”出去。同时,我们的服务器也在源源不断地接收“快递”,并且进行解析,以保障网络的正常运转。 结合网络安全,我们进而提出一些问题:

今天已经知道了整个网络的流程是怎样的,都有哪些关键节点?

对网络进行监控的话,都可以监控哪些关键指标,这些指标的意义是什么?

指标异常以后,可以采取哪些应对措施?

指标监控是怎样实现的?

我们来看看这四个问题,第一个其实是在研究业务流程,第二三两项是在研究用户场景​,第四项是在考虑技术实现,指标都是数据嘛,也可以说成是在研究数据逻辑。

第一个问题,在今天的文章中已经有所涉及,另外的三个问题,大家可以自己做出思考,下次我们共同讨论。

以上部分内容来自网络,如有侵权及时联系删除。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Stella981 Stella981
3年前
Linux网络基础(一)——网络模型
【网络模型】1.OSI七层模型:(从高到低)应用层表示层会话层传输层网络层数据链路层物理层2.TCP/IP四层网络模型:接入网层网间网络层传输层应用层3.IP地址:——32位的二进制表示,通常用4组8位二进制
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这