网络协议——一张图看懂网络分层
目录
一、四个问题
二、网络为什么分层?
三、程序时如何工作的
3.1 一张图看懂工作过程
3.2 接受包
3.3 发起请求
四、层与层之间的关系
一、四个问题
1. TCP进行三次握手时,IP层和MAC层对应有什么操作?
2. 中转站之间是如何知道自己下一个站在哪的?
3. 二层设备处理的包里,有没有http层的内容呢?
4. 从你的电脑,通过SSH登录到公有云主机中,都需要经过哪些过程?
二、网络为什么分层?
因为,是个复杂的程序都要分层。
根据程序设计的要求: 复杂的程序都要分层。 譬如我们写的项目代码还要分成:controller层,service层,dao层呢。 网络分层:(由底向上是) 物理层、数据链路层、网络层、传输层、应用层。
三、程序时如何工作的
3.1 一张图看懂工作过程
3.2 接受包
1.第一层物理层发现有网络包经过一个网口时,看看是否需要将这个网络包请进来进行处理。
2.当网络包被拿进来之后,会有一个函数process_layer2摘去包中二层的头,根据头里的内容进行操作。如果发现二层头中的MAC地址与我的相同则说明这个包是发送给我的。
3.接着会有下一个函数process_layer3摘去三层的头,在这个头中存有ip地址,如果ip地址与自己相符则表明这个包的终点是我们自己即我是终点,如果ip不相符则说明我们是中转站而非终点。
4.假设这个ip地址是tcp的, 然后会有一个函数process_tcp摘去第四层的头,看这是一个发起,还是一个应答,又或者是一个正常的数据包,然后分别由不同的逻辑进行处理。如果是发起或者应答,接下来可能要发送一个回复包;如果是一个正常的数据包,就需要交给上层了。这里的上层是某个应用程序,在四层的头里面有端口号,不同的应用监听不同的端口号。如果发现浏览器应用在监听这个端口,那你发给浏览器就行了。
3.3 发起请求
用户点击浏览器链接会发起一个http请求,浏览器知道,又要发起另一个 HTTP 请求了,于是使用端口号,将请求发给了你(程序)。
1. 调用send_tcp函数,给http请求的内容加一个tcp头,记录下源端口号。
2. 调用send_layer3函数,此时已经有了http的头和内容以及tcp头。这个函数会加一个ip头,记录源ip地址和目标ip地址。
3.调用send_layer2函数,此时已经有了http、tcp、ip头。这个函数会加一个MAC头,记录源MAC地址即本机器的MAC地址,和目标MAC地址。
5. 从网口将包发送出去。
四、层与层之间的关系
从分层这一说法本身出发,可以看出网络分层是层层封装的含义,一层套一层的。处理接受到的就想剥洋葱的感觉一样。
那 TCP 在三次握手的时候,IP 层和 MAC 层在做什么呢?当然是 TCP 发送每一个消息,都会带着 IP 层和 MAC 层了。因为,TCP 每发送一个消息,IP 层和 MAC 层的所有机制都要运行一遍。而你只看到 TCP 三次握手了,其实,IP 层和 MAC 层为此也忙活好久了。
这里要记住一点:只要是在网络上跑的包,都是完整的。可以有下层没上层,绝对不可能有上层没下层。
可以理解为空中阁楼(上层依赖于下层):上层是应用层,下层是基础层; 从上到下依次是:HTTP、TCP、IP、MAC、物理层。 我们区分上下层时,还是将它们按如上顺序看,看成一个倒立的金字塔。 实际的网络包数据结构,是反过来的,HTTP包上套了TCP(端口),TCP包上套了IP,IP包上套了MAC地址。 虽然HTTP的内容相对多一些,IP、MAC地址的内容相对少一些, 但上层的HTTP需要依赖下层的IP、MAC工作,所以网络上跑的包, 可以有下层没上层,却绝不可能有上层没下层。
所以,对TCP协议来说,三次握手也好,重试也好,只要想发出去包,就需要有ip层和MAC层,不然是发布出去的。
如果一个 HTTP 协议的包跑在网络上,它一定是完整的。无论这个包经过哪些设备,它都是完整的。因为缺少任何一层,包都是无法发送出去的。
所谓的二层设备、三层设备,都是这些设备上跑的程序不同而已。一个 HTTP 协议的包经过一个二层设备,二层设备收进去的是整个网络包。这里面 HTTP、TCP、 IP、 MAC 都有。什么叫二层设备呀,就是只把 MAC 头摘下来,看看到底是丢弃、转发,还是自己留着。那什么叫三层设备呢?就是把 MAC 头摘下来之后,再把 IP 头摘下来,看看到底是丢弃、转发,还是自己留着。
网络协议——一张图看懂网络分层相关推荐
- 一张图看懂阿里云网络产品[二] 专有网络VPC
摘要: 一张图看懂网络产品系列文章,让用户用最少的时间了解网络产品,本文章是第二篇 专有网络VPC 一张图看懂阿里云网络产品系列文章,让用户用最少的时间了解网络产品,本文章是第二篇 专有网络VPC 系 ...
- 一张图看懂2017双11中的网络产品和技术
摘要: 大家都知道,2017年双11又创造了新纪录,全天交易额1682亿,交易峰值32.5万笔/秒,支付峰值25.6W笔/秒,狂欢的背后是极其复杂庞大的技术系统,其中就有大量阿里云云计算相关的产品和技 ...
- 一张图看懂开源许可协议,开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别...
一张图看懂开源许可协议,开源许可证GPL.BSD.MIT.Mozilla.Apache和LGPL的区别 转载于:https://www.cnblogs.com/jingzhishen/p/589278 ...
- 一张图看懂Battery Charging Specification 1.2(BC1.2)USB充电协议
一张图看懂Battery Charging Specification 1.2(BC1.2)USB充电协议 作者:AirCity 2019.11.2 本文所有权归作者Aircity所有 Aircity ...
- 开源项目许可证相关-一张图看懂几种开源许可证
常见的几种许可 开源许可证允许每个人出于任何目的使用.修改和共享许可软件,前提是要保持软件的来源和开放性.以下许可证从要求条件严苛程度递减排序,从最严苛(GNU AGPLv3)到没有条件(未许可).请 ...
- 一张图看懂微服务架构路线
目录 一张图看懂微服务架构路线 我为什么选择微服务架构? 微服务架构路线 基本思路 Docker 容器编排 Docker 容器管理 API网关 负载均衡 服务发现 事件总线 日志记录 监控和警报 分布 ...
- 一张图看懂图像识别算法发展历史
一张图看懂图像识别算法发展历史
- 【转】几张图看懂列式存储
几张图看懂列式存储 转载于:https://www.cnblogs.com/apeway/p/10870211.html
- 鸿蒙分布式体验,一张图看懂鸿蒙OS 2.0 分布式能力升级构筑全场景体验
原标题:一张图看懂鸿蒙OS 2.0 分布式能力升级构筑全场景体验 [手机中国新闻]9月10日下午,华为召开HDC2020大会,全新的HarmonyOS 2.0正式发布.新系统的分布式能力全面升级,同时 ...
最新文章
- linux getty进程 cpu占用过高 解决办法
- 1.15 异常处理规则
- CSS Hack 汇总速查一览
- Random Forest
- leetcode 397 整数替换
- 【原码, 反码, 补码的基础概念和计算方法】
- LoggingFilter Session 以及Async
- RecyclerView子View不刷新(RequestLayout无效),RecyclerView.mEatRequestLayout
- Redis迭代查询详解及其使用:Scan命令、Sscan命令、Hscan命令、Zscan命令
- 亚马逊吸尘器需要提交UL1017测试报告,亚马逊要求提供ISO17025资质机构出具的UL报告
- 淘宝平台搜索规则变化,怎么提升搜算转换率?
- js中函数传参的问题
- 2021-10-06 BGP错误配置导致脸书网络瘫痪
- 主流消费级固态硬盘SSD接口
- 笔记本有线网络共享为WiFi
- SQL使用函数处理数据
- 谈谈如何设计好网站的 URL
- ������ʾ����
- html邮箱图标代码,CSS3 单元素邮件图标
- html 获取浏览器语言,js之获取浏览器语言
热门文章
- 计算机软件工程、计算机科学与技术、大数据专业开题报告如何撰写?不懂的可以看下以下模板
- 企业发展理论(八):知识理论
- perl 数组元素为空和数组元素为undef 是两码事
- 浙江理工大学数字电子技术课程设计
- php网站作业秦皇岛美食,舌尖上的河北,河北省秦皇岛市的美食有哪些?十大必吃美食推荐!...
- 职场也是情场,总有“小三”对你虎视眈眈!
- 制作条码(barcode)
- 最近流行的QQ爱情说说:爱情可以让人忘了时间
- 三年级计算机群鸭戏水教案导入,三年级下册信息技术教案37群鸭戏水自选图形清华大学版.doc...
- Affordance Detection of Tool Parts from Geometric Features