谁都能看懂的网络模型知识
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及其它可以联网的用户设备)都可称为一个站点。
完,各位共勉~
谁都能看懂的网络模型知识相关推荐
- sql 数据库前两列值乘_与开发battle有点虚?小白都能看懂的数据库知识来了
文末领取[SQL面试题及答案] 随着近几年AI智能,大数据的发展,"产品经理是是否需要懂技术?""产品经理应该对技术理解到什么程度?"诸如此类的问题又再次出现在 ...
- 外行人都能看懂的 NFS 知识,错过血亏
目录 前言 初识 NFS 1.1 什么是 NFS? 1.2 RPC 远程调度 1.3 NFS 工作过程 1.4 NFS 权限 1.5 NFS 相关文件 NFS 案例 2.1 NFS server 2. ...
- 人人都能看懂的EM算法推导
作者丨August@知乎(已授权) 来源丨https://zhuanlan.zhihu.com/p/36331115 编辑丨极市平台 估计有很多入门机器学习的同学在看到EM算法的时候会有种种疑惑:EM ...
- 《小学生都能看懂的快速沃尔什变换从入门到升天教程》(FWT / FMT / FMI)(最最严谨清晰的证明!零基础也能得学会!)
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 0x00 卷积 0x01 多项式 0x02 卷积的定义 0x03 卷积的基本性质 0x04 位运 ...
- 一图看懂新一代人工智能知识体系大全
来源:财经头条 摘要:人工智能的发展离不开基础支持层和技术层,基础支持层包括大数据.计算力和算法:技术层包括计算机视觉.语音识别和自然语言处理.人工智能的技术本质是什么,本文会详细分析. 人工智能的发 ...
- em算法 实例 正态分布_人人都能看懂的EM算法推导
↑ 点击蓝字 关注极市平台作者丨August@知乎(已授权)来源丨https://zhuanlan.zhihu.com/p/36331115编辑丨极市平台 极市导读 EM算法到底是什么,公式推导怎么去 ...
- 一篇高中生都能看懂的MySQL入门博客(长文)
写在前面: 本篇博客共一万五千字左右,是我自己对MySQL进行重新学习时写的,是一些偏基础的东西. 如果你对MySQL足够的了解,本篇博客最多只能起一个查漏补缺的作用. 博客的主要面向对象为:想学习了 ...
- 小白都能看懂的实战教程 手把手教你Python Web全栈开发(DAY 3)
小白都能看懂的实战教程 手把手教你Python Web全栈开发 Flask(Python Web)实战系列之在线论坛系统 第三讲 这是小白都能看懂的实战教程 手把手教你Python Web全栈开发 的 ...
- 深度学习小白如何看懂神经网络模型/图?
深度学习小白如何看懂神经网络模型/图? 神经网络的图还是比较容易看懂的,比电路图什么的要好懂多了.只是刚开始接触有些不习惯罢了,多看一些就好了. 下面举几张神经网络图作为例子(由简单到复杂). 简单的 ...
最新文章
- PKI/CA 技术的介绍
- IP Precedence DSCP、TOS
- 查看网页js数据接口
- 绿色经营:从优秀到卓越最显性准则
- boost::spirit模块实现错误处理的测试程序
- 让行内元素(如图片)在div中水平垂直居中 (干货)
- MySQL : 报错:1130-host ... is not allowed to connect to this MySql server 开放mysql远程连接 不使用localhost...
- 【报告分享】2021中国数据中台研究报告.pdf(附下载链接)
- 基于java社区疫情防控管理系统(java毕业设计)
- PMP考试计算公式汇总
- Epsilon-Greedy算法
- docker 启动失败:specified both as a flag and in the configuration fir/daemon.json
- NFC模组,开发NFC功能 只要几条指令的事情
- android 高德地图GPS点校正
- HM数据科学库-matplotlib(二)
- 伯乐在线 android,伯乐在线博客
- 为什么网恋男友一直不肯告诉我名字和年龄?
- 自动化爬虫selenium之操控浏览器
- SPASS多元统计分析在无人机航线精度方面的综合评价
- MFC的消息处理函数和消息过程函数的区别
热门文章
- Swift 与 JSON 数据
- ios 开发日记 21 -自动处理键盘事件的第三方库:IQKeyboardManager
- struts2.1.6教程二、struts.xml配置及例程
- java中重载和重写
- 使用jquery操作iframe
- SVN trunk branches tags 的用法 - 摘自网络
- 【转】Linux 下修改Tomcat使用的JVM内存大小
- C#多线程JOIN方法初探
- pandas计算移动平均值
- android fragment fragmenttransaction,Android FragmentTransaction 常用方法总结