1.

网络是我们做嵌入式 避无可避的知识点,但是网络的层次很多,很多时候我们根本理解不了其中的层次和作用,今天跟我们公司的 X 总聊到这个,给我普及了一些知识,我觉得非常有用,分享给大家。

最近事情比较忙,更新文章速度没那么快,大家有问题还是到知识星球里面去找我,不是微信不对接,是消息太多,自己的事情也多,忙不过来,望见谅,觉得文章不错的,帮忙推荐下,转发下,感谢。

文章感谢下几个读者,我在最近的项目中遇到几个问题,本来想付费咨询,发了几个红包都没有被收下,现在更加明白了做公众号对自己的帮忙真的非常大,能认识更多靠谱的朋友,不管是技术上的,还是生活上的,创业的,希望大家有问题都可以多跟我讨论,共创美好明天,哈哈

2.

网络模型经典图片

好了,针对上面的模型,我们来举个例子说明一下

下面这个图片

两台 pc 通过交换机连上一个云服务器,我们假设都是通过网线来连接的。

1、物理层

物理层可以理解为硬件层,这个层的东西就是一个硬件的网口,phy 就是这个东西,这里的网络 pc 和交换机通过 phy连接,交换机也是通过 phy 和云连接。网络数据也是通过 phy 发送出去的。

我们所说的物理就是比较硬的东西,硬的东西那肯定是实际的硬件东西了,那物理层肯定就是硬件的鬼东西了。

2、数据链路层

这一层就涉及了一些软件的东西了,加入了全球唯一的 MAC 地址,这一层确定了 每个网络设备的 MAC 地址,正常我们 PC 发送数据的时候,可以通过 MAC 地址让对方知道自己是哪个设备,告诉别人我是谁。

物理层完成了数据的传输,还需要对0和1的定义进行规定(类似低电平为0,高电平为1),同时在传输0,1之后还需要对01进行分组如8bit为一个字节多少字节为一个包之类。这就是链接层的功能。

Ethenet 和 Wifi 基本就是属于这个层次。所以 wifi 协议其实就是解决的一个链路和物理层的问题,在更往上的网络层和传输层一般就是 TCP/IP 协议。

3、网络层

链路层说明把路打通了,可以在上面开车了,那不能随便开车啊,开车没有交通规则那就是要命的,所以就出现了网络层,出现了一些规范性的东西来规范在这条路上的车神们。

这个层次就引入了 ip 这个鬼东西了,我们设备的 MAC 地址唯一的,但是 IP 地址并不保证需要唯一,一台设备可能有几个 IP 地址。这个东西都是在这个层次决定的。

3.1 IP协议

定义网址的协议,叫做IP协议。所定义的地址也称为IP地址。

目前广泛采用的是IPv4协议,这个协议规定,网址由32个bit组成

习惯上,我们用分成四段的十进制数表示IP地址,从0.0.0.0一直到255.255.255.255

互联网上的每个设备,都会分配到一个IP地址。这个地址分成两个部分,前一部分代表网络,后一部分代表设备。比如,IP地址172.16.254.1,这是一个32位的地址,假定它的网络部分是前24位(172.16.254),那么主机部分就是后8位(最后的那个1)。处于同一个子网络的电脑,它们IP地址的网络部分必定是相同的,也就是说172.16.254.2应该与172.16.254.1处在同一个子网络。

但是,问题在于单单从IP地址,我们无法判断网络部分。还是以172.16.254.1为例,它的网络部分,到底是前24位,还是前16位,甚至前28位,从IP地址上是看不出来的。

那么,怎样才能从IP地址,判断两台计算机是否属于同一个子网络呢?

这就要用到另一个参数"子网掩码"(subnet mask)

"子网掩码",就是表示子网络特征的一个参数。它在形式上类似IP地址,也是一个32位二进制数字,它的网络部分全部为1,主机部分全部为0。比如,IP地址172.16.254.1,如果已知网络部分是前24位,主机部分是后8位,那么子网络掩码就是11111111.11111111.11111111.00000000,写成十进制就是255.255.255.0。

有了"子网掩码"这个东西,我们就能判断,任意两个IP地址是否处在同一个子网络。方法是将两个IP地址与子网掩码分别进行 AND 运算(两个数位都为1,运算结果为1,否则为0),然后比较结果是否相同,如果是的话,就表明它们在同一个子网络中,否则就不是。

比如,已知IP地址192.168.1.1和192.168.1.5的子网掩码都是255.255.255.0,请问它们是否在同一个子网络?两者与子网掩码分别进行AND运算,结果都是192.168.1.0,因此它们在同一个子网络。

现在总结一下,IP协议的作用主要有两个,一个是为每一台计算机分配IP地址,另一个是确定哪些地址在同一个子网络。

4、传输层

我们用网络的东西 ,都会记得有一个 socket ,这个层次就完成了,socket 的东西。到这个层次,就可以通过 socket 来发送数据了。还包装了一些简单的协议,比如 TCP,UDP。

socket 就相当于发动机,有了发动机,就可以创造出不同的车子,汽车,卡车,电动车,当然还会有玛莎拉蒂和布拉迪威龙。

有了MAC地址和IP地址,我们已经可以在互联网上任意两个设备上建立通信了。接下来的问题是,如果一个设备有多个任务需要进行网络通信的时候,我们如何分配这些数据,让多个任务能够只使用自己对应的数据呢?

传输层的作用就是建立一条规范,使得两台设备上多个任务之间的相互通信能够正常进行,而不需要区分数据到底是来自于哪个程序而能直接接收。这个实现方式就是,我们添加了一个参数,这个参数被称为“端口”(port)。每个任务拥有自己 port,只接受对应 port 的数据,以此来区分数据。

4.1 UDP协议

包含端口号最简单的实现就是UDP协议,他的格式几乎就只是在数据前加上发送端口和接收端口而已。

4.2 TCP协议

UDP协议的优点是比较简单,容易实现,但是缺点是可靠性较差,一旦数据包发出,无法知道对方是否收到。

为了解决这个问题,提高网络可靠性,TCP协议就诞生了。这个协议非常复杂,但可以近似认为,它就是有确认机制的UDP协议,每发出一个数据包都要求确认。如果有一个数据包遗失,就收不到确认,发出方就知道有必要重发这个数据包了。

因此,TCP协议能够确保数据不会遗失。它的缺点是过程复杂、实现困难、消耗较多的资源。

TCP数据包和UDP数据包一样,都是内嵌在IP数据包的"数据"部分。TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割。

5、应用层

有了汽车,就出现了各种运输公司,什么中通,顺丰就应运而生了。所以这就是应用层了。

应用层的东西就是根据之前的层次来封装一些场景应用,比如我们正常的网址,就是 http协议。

其他还有 ftp 等等之类的,具体还是看上面那个图,看起来还是非常不错的。

举例来说,TCP 协议可以为各种各样的程序传递数据,比如 Email、WWW、FTP等等。那么,必须有不同协议规定电子邮件、网页、FTP数据的格式,这些应用程序协议就构成了"应用层"。

为什么说一个WIFI要说以上这么多。好吧,其实大部分没什么用,最重要的要理解一点,WIFI其实只是把赋予设备MAC地址,连接上网络,并分配好IP,或者是作为AP给别的设备分配IP等等,而要真正的传输数据,使用的仍然是TCP 或者 UDP协议。

3.

经过上面的层次封装之后,如果我们要发送数据就变成了这样。

然后接收端和发送端的对应解析大概是这样的,发送的时候每一层就封装上自己的东西,接收的时候,每一层就剥离掉其他层次,拿到自己那一层的数据。

AP :类似 wifi 也就是无线接入点,是一个无线网络的创建者,是网络的中心节点。一般家庭或办公室使用的无线路由器就是一个 AP。

STA:类似手机  每一个连接到无线网络中的终端(如笔记本电脑、PDA及其它可以联网的用户设备)都可称为一个站点。

完,各位共勉~

谁都能看懂的网络模型知识相关推荐

  1. sql 数据库前两列值乘_与开发battle有点虚?小白都能看懂的数据库知识来了

    文末领取[SQL面试题及答案] 随着近几年AI智能,大数据的发展,"产品经理是是否需要懂技术?""产品经理应该对技术理解到什么程度?"诸如此类的问题又再次出现在 ...

  2. 外行人都能看懂的 NFS 知识,错过血亏

    目录 前言 初识 NFS 1.1 什么是 NFS? 1.2 RPC 远程调度 1.3 NFS 工作过程 1.4 NFS 权限 1.5 NFS 相关文件 NFS 案例 2.1 NFS server 2. ...

  3. 人人都能看懂的EM算法推导

    作者丨August@知乎(已授权) 来源丨https://zhuanlan.zhihu.com/p/36331115 编辑丨极市平台 估计有很多入门机器学习的同学在看到EM算法的时候会有种种疑惑:EM ...

  4. 《小学生都能看懂的快速沃尔什变换从入门到升天教程》(FWT / FMT / FMI)(最最严谨清晰的证明!零基础也能得学会!)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 0x00 卷积 0x01 多项式 0x02 卷积的定义 0x03 卷积的基本性质 0x04 位运 ...

  5. 一图看懂新一代人工智能知识体系大全

    来源:财经头条 摘要:人工智能的发展离不开基础支持层和技术层,基础支持层包括大数据.计算力和算法:技术层包括计算机视觉.语音识别和自然语言处理.人工智能的技术本质是什么,本文会详细分析. 人工智能的发 ...

  6. em算法 实例 正态分布_人人都能看懂的EM算法推导

    ↑ 点击蓝字 关注极市平台作者丨August@知乎(已授权)来源丨https://zhuanlan.zhihu.com/p/36331115编辑丨极市平台 极市导读 EM算法到底是什么,公式推导怎么去 ...

  7. 一篇高中生都能看懂的MySQL入门博客(长文)

    写在前面: 本篇博客共一万五千字左右,是我自己对MySQL进行重新学习时写的,是一些偏基础的东西. 如果你对MySQL足够的了解,本篇博客最多只能起一个查漏补缺的作用. 博客的主要面向对象为:想学习了 ...

  8. 小白都能看懂的实战教程 手把手教你Python Web全栈开发(DAY 3)

    小白都能看懂的实战教程 手把手教你Python Web全栈开发 Flask(Python Web)实战系列之在线论坛系统 第三讲 这是小白都能看懂的实战教程 手把手教你Python Web全栈开发 的 ...

  9. 深度学习小白如何看懂神经网络模型/图?

    深度学习小白如何看懂神经网络模型/图? 神经网络的图还是比较容易看懂的,比电路图什么的要好懂多了.只是刚开始接触有些不习惯罢了,多看一些就好了. 下面举几张神经网络图作为例子(由简单到复杂). 简单的 ...

最新文章

  1. PKI/CA 技术的介绍
  2. IP Precedence DSCP、TOS
  3. 查看网页js数据接口
  4. 绿色经营:从优秀到卓越最显性准则
  5. boost::spirit模块实现错误处理的测试程序
  6. 让行内元素(如图片)在div中水平垂直居中 (干货)
  7. MySQL : 报错:1130-host ... is not allowed to connect to this MySql server 开放mysql远程连接 不使用localhost...
  8. 【报告分享】2021中国数据中台研究报告.pdf(附下载链接)
  9. 基于java社区疫情防控管理系统(java毕业设计)
  10. PMP考试计算公式汇总
  11. Epsilon-Greedy算法
  12. docker 启动失败:specified both as a flag and in the configuration fir/daemon.json
  13. NFC模组,开发NFC功能 只要几条指令的事情
  14. android 高德地图GPS点校正
  15. HM数据科学库-matplotlib(二)
  16. 伯乐在线 android,伯乐在线博客
  17. 为什么网恋男友一直不肯告诉我名字和年龄?
  18. 自动化爬虫selenium之操控浏览器
  19. SPASS多元统计分析在无人机航线精度方面的综合评价
  20. MFC的消息处理函数和消息过程函数的区别

热门文章

  1. Swift 与 JSON 数据
  2. ios 开发日记 21 -自动处理键盘事件的第三方库:IQKeyboardManager
  3. struts2.1.6教程二、struts.xml配置及例程
  4. java中重载和重写
  5. 使用jquery操作iframe
  6. SVN trunk branches tags 的用法 - 摘自网络
  7. 【转】Linux 下修改Tomcat使用的JVM内存大小
  8. C#多线程JOIN方法初探
  9. pandas计算移动平均值
  10. android fragment fragmenttransaction,Android FragmentTransaction 常用方法总结