IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 网络协议——一张图看懂网络分层 -> 正文阅读

[网络协议]网络协议——一张图看懂网络分层

目录

一、四个问题

二、网络为什么分层?

三、程序时如何工作的

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 头摘下来,看看到底是丢弃、转发,还是自己留着。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-09-05 11:23:21  更:2021-09-05 11:24:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 23:29:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码