网络原理初识(2)
目录
一、协议分层
1、分层的作用
2、OSI七层模型
3、TCP / IP五层(或四层)模型
4、网络设备所在分层
5、网络分层对应
二、封装和分用
发送过程(封装)
1、应用层(应用程序) QQ
2、传输层
3、网络层
4、数据链路层
5、物理层
接收过程(分用)
1、物理层
2、数据链路层--以太网
3、网络层--IP协议
4、传输层--UDP协议
5、应用层--QQ应用程序
现实世界的封装和分用
假设上面其中某个节点是交换机
假设上面其中某个节点是路由器
都看到这了,点个赞再走吧,谢谢谢谢谢
一、协议分层
1、分层的作用
网络通信过程中,涉及到的细节非常多,如果要有一个协议来完成网络通信,就要约定好方方面面的内容,因为细节非常多,就导致协议非常麻烦。
一个协议太庞大复制,就把它拆分成多个功能单一的协议,拆分出来的协议太多了,为了让这些协议更好的相互配合,就引用了协议分层。
网络协议被拆分出来后,就把这些协议进行分层,把功能相似的协议放到同一层,上层协议能调用下层协议的功能,下层协议给上层协议提供服务。类似公司的老板--领导--组织--员工体系。
协议分层的初心就是让一个复制的协议变成多个简单的协议,这还附带了一些好处,如图:
(1)上层协议直接使用下层协议就好了,不需要了解下层协议的细节
如上图,语言层,不管老人还是小孩,只要会说汉语,就能打电话,并不需要知道电话机的工作原理。
(2)某一层协议进行替换后,对其他协议并没有啥影响
如上图,电话机协议换成汉语协议和英语协议,还是能打电话,说汉语的就使用无线电,说英语的就使用电话机,还是可以实现打电话这个功能,并没有啥影响。
2、OSI七层模型
最初大佬设计的方案,后来在实施过程中,因为太麻烦了,就简化成五层。
OSI:即Open System Interconnection,开放系统互连.
OSI七层网络模型是一个逻辑上的定义和规范:把网络从逻辑上分为了七层.
OSI七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输;
OSI:七层模型划分为以下七层:
3、TCP / IP五层(或四层)模型
这里的或四层的意思是不算物理层,物理层是纯硬件的,而程序员往往不用理会物理层。
1)应用层:程序拿到数据后,要用来干嘛,解决什么问题。
类似网上下单商品后,装进快递盒贴码后交给快递小哥,快递小哥拿快递盒开始运送。
2)传输层:负责关注网络数据包的 起点和终点(从哪来到哪去),端口和端口之间的传输。
类似网购的商品发送地址和收货地址,广东-->上海
3)网络层:负责关注起点和终点之间的 路径规划(怎么走)。
类似规划路线:广东-->武汉-->河北-->...-->上海
4)数据链路层:负责两个相邻节点的传输。
类似上海-->南京:飞机空运;南京-->无锡:铁路运输。
5)物理层:通信过程的基础设施
类似公路,铁路,航线....
4、网络设备所在分层
对于一台主机:它的操作系统内核实现了从传输层到物理层的内容,即TCP / IP五层模型的下四层。
对于一台路由器:它实现了从网络层到物理层,即TCP / IP五层模型的下三层。
对于一台交换机:它实现了从数据链路层到物理层,即TCP / IP五层模型的下二层。
对于一台集线器:它只实现了物理层。
注意:这里谈到的路由器和交换机是 “经典”的路由器、交换机(教科书上的);事实上,真实世界中的交换机 / 路由器要更复杂,功能也更强大。
很多交换机,也具备一些路由器的的功能,也能工作在网络层。
很多路由器,也具备一些交换机的功能,也能工作在数据链路层。
现实世界的情况和考试的情况 可能存在差异。
5、网络分层对应
网络数据传输时,经过不同的网络结点(主机,路由器)时,网络分层需要对应.
以下为同一个网段中两台主机进行文件传输:
两台计算机通过TCP/IP协议通讯的过程如下图所示:
TCP/IP通讯过程:
以下为跨网段的主机文件传输:数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器.
二、封装和分用
封装和分用是网络传输过程中,最核心的过程。
1.不同协议层对数据包有不同的称谓:包(packet)->IP数据包,;段(segment)->TCP数据段;
报(datagram)->UDP数据报;帧(frame)->以太网数据帧.
2.应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装
3.首部信息中包含了一些类似于首部有多长,载荷有多长,上层协议是什么等信息.
4.数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥离出相应的首部,根据首部中的"上层协议字段"将数据交给对应的上层协议处理.
举个例子,介绍分装分用的过程:A 通过QQ 给 B 发送一个 hello。
发送过程(封装)
1、应用层(应用程序) QQ
QQ从消息输入框,获取到用户输入的 “hello”,就要把这个字符串构造成应用层的数据包;QQ这样的程序内部就设置了一个应用层协议:应用层数据包就是按照这个应用层协议约定的格式来构造的。
约定格式如下:
应用程序就会调用操作系统的api,把这个数据包交给传输层。
2、传输层
输入层就会把上述数据作为一个整体,再构造成一个传输层的数据包。
此处假定使用UDP来进行通信,就会构造成一个UDP的数据包。如图:
UDP报头:虽然不能保护数据,但能起到类似 “贴标签”的效果,就能承载一些关键的、用来转发数据的信息。对于UDP报头来说,承载的最重要的信息就是源端口和目的端口。
形如上述添加报头的过程,就叫做封装,其实就是字符串拼接,只不过拼的报头,具有一定的结构。
拼装好传输层数据包之后,就要把这个数据包进一步的交给下层,网络层继续进行封装。
3、网络层
这里涉及的最核心的协议:IP协议。
网络层根据IP协议,把刚才传输层的UDP数据包作为一个整体,再拼上IP协议的报头,构造成一个IP数据包。如图:
IP协议的报头,相当于把整个UDP数据包当成一个整体了。这里也会包含一些辅助转发的关键信息,此处最关键的信息就是 源IP 和 目的IP。
构造完成完整的IP数据包后,IP协议继续调用数据链路层的 api,再把数据交给数据链路层的协议处理。
4、数据链路层
这里涉及核心的协议:以太网,此处的 “以太” 用来表示网络数据传输的介质。
以太网就是日常最常见到的 有线网络,日常用到的网线,也叫做 “以太网线”,日常用到的网口,也叫做 “以太网口”,用到的交换机,也叫做 “以太网交换机”。
在数据链路层中,会把IP数据包作为一个整体,再添加以太网数据帧,在IP数据包基础上,添加帧头和帧尾。如图下就是以太网数据帧:
构造完以太网数据帧后,以太网协议就会把以数据交给物理层。
5、物理层
物理层涉及到的是硬件设备,把上述这样的以太网数据帧,它是二进制结构(一串 0 1 0 1 这样的数据),转换成光信号 / 电信号 / 电磁波。
光信号:光纤,通过光的频谱进行编码。
电信号:网线,高电平 / 低电平
电磁波:无线WiFi
经过上述流程,数据才从你电脑上发送出去
接收过程(分用)
中间过程暂时不考虑,假定数据包已经到达B的网卡了,B如何处理这个数据包的过程,就称为 分用。
1、物理层
B的物理层收到光信号 / 电信号 / 电磁波,就会把这些物理信号转换成数字信号(二进制的 0 1 0 1),得到一个以太网数据帧,进一步的把这个数据帧交给数据链路层处理。
2、数据链路层--以太网
按照以太网数据帧的格式,来解析,取出其中的载荷,再交给上层协议。(发送方和接收方得使用一样的协议才行)如图:
3、网络层--IP协议
按照IP协议的格式进行解析,取出其中的载荷,再交给上层协议。如图:
4、传输层--UDP协议
按照UDP协议的格式来解析,取出其中的载荷,再交给上一层。如图:
5、应用层--QQ应用程序
按照QQ应用程序内部的应用层协议格式来解析数据,如图:
qq拿到上面数据后,就会再窗口给你弹出提示,并且把消息、发送者、发送时间 都显示在连聊天窗口上。
现实世界的封装和分用
上面这种情况是两台主机网线直连的情况,并不是真实情况,真实情况更加复杂,会通过一系列交换机 / 路由器 进行数据转发。
但实际上,即使是经过路由器或者交换机,上述的封装分用过程,也同样适用,只不过,封装分用的程度不一定是到 应用层(五层都有)。
对于经典的交换机来说,就只需要封装分用到数据链路层
对于经典的路由器来说,就只需要封装分用到网络层
假设上面其中某个节点是交换机
交换机就会把上述光电信号转换成以太网数据帧二进制,交给数据链路层。如图:
交换机的数据链路层就会对上述数据进行解析,这个解析过程:一方面要取出载荷部分,另一方面要解析帧头的关键信息。
根据帧头中的信息,决定下一步把数据往哪里进行发送,根据这个情况,再构造出新的以太网数据帧。如图:
把新的数据继续通过物理层发送出去。
假设上面其中某个节点是路由器
路由器则比交换机要更复杂一些,就是封装分用到网络层。
先是物理层拿到光电信号,转换成二进制数据,再交给数据链路层,如图:
数据链路层根据上面的数据进行解析,取出载荷,交给网络层(IP协议)。
网络层中,IP协议进一步对收到的数据进行解析,取出载荷。
也要解析IP报头,路由器需要通过IP报头,得到目的IP,接下来才知道如何转发。
取出IP报头,IP协议进行重新封装,得到新的IP报头,如图:
继续交给数据链路层,继续加上新的帧头和帧尾,如图:
这个数据再交给物理层,转成光电信号,继续传输。
上述是经典的交换机和路由器,现实情况要更复杂一些,比如交换机,就要截取 / 解析你传输的数据,会封装分用到应用层,把你的hello拎出来看看,你作为外人,无从得知,比如棱镜门事件,就是利用这一机制,监听各国机密的。
都看到这了,点个赞再走吧,谢谢谢谢谢
相关文章:

网络原理初识(2)
目录 一、协议分层 1、分层的作用 2、OSI七层模型 3、TCP / IP五层(或四层)模型 4、网络设备所在分层 5、网络分层对应 二、封装和分用 发送过程(封装) 1、应用层(应用程序) QQ 2、传输层 3、网络层 4、数据链路层 5、物理…...
【C++】每日一题 92 反转链表
给你单链表的头指针 head 和两个整数 left 和 right ,其中 left < right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。 class ListNode { public:int val;ListNode* next;ListNode(int _val) {val _val;next nullptr;} };…...
算法D39 | 动态规划2 | 62.不同路径 63. 不同路径 II
今天开始逐渐有 dp的感觉了,题目不多,就两个 不同路径,可以好好研究一下 62.不同路径 本题大家掌握动态规划的方法就可以。 数论方法 有点非主流,很难想到。 代码随想录 视频讲解:动态规划中如何初始化很重要&#x…...
面试官:如何在 Spring Boot 启动的时候提前运行一些特定的代码
该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:如何在 Spring Boot 启动的时候提前运行一些特定的代码 在Spring Boot启动的时候提前运行一些特定的代码可以通过实现ApplicationRunner接口、Com…...

力扣最热100题——56.合并区间
吾日三省吾身 还记得梦想吗 正在努力实现它吗 可以坚持下去吗 目录 吾日三省吾身 力扣题号:56. 合并区间 - 力扣(LeetCode) 题目描述 Java解法一:排序然后原地操作 具体代码如下 Java解法二:new一个list…...

docker学习(十四)docker搭建私服
docker私服搭建,配置域名访问,设置访问密码 启动registry docker run -d \-p 5000:5000 \-v /opt/data/registry:/var/lib/registry \registrydocker pull hello-world docker tag hello-world 127.0.0.1:5000/hello-world docker push 127.0.0.1:5000…...
基于BERTopic模型的英文20新闻数据集主题聚类及可视化
文章目录 bertopic介绍20 newsgroups dataset20 newsgroups数据集下载数据导入nltk数据处理bertopic模型构建模型训练运行模型可视化目前主题的一致性得分语料库建模bertopic介绍 BERTopic 是基于深度学习的一种主题建模方法。BERT 是一种用于 NLP 的预训练策略,它成功地利用…...

【Oracle之DataGuard的初步学习】
** 以下所有均是基于11G版本的 ** 一、DataGuard的部署方式 DG的部署最常用的方式就是直接在备库端部署一个空库然后再设置参数,但是这样做在初始同步时如果数据量过大会耗费较长的时间;相对来说这中方式比较简单不易出错。 还有一种方式就是通过rman的备…...

PyCharm无代码提示解决
PyCharm无代码提示解决方法 在使用PyCharm工具时,调用方法却无法进行提示,针对PyCharm无代码提示整理下解决方案 1、Python内置语法无智能提示 复现:我这里以urllib库读取网页内容为例,在通过urlopen()之后调用getur…...

记一次 .NET某设备监控自动化系统 CPU爆高分析
一:背景 1. 讲故事 先说一下题外话,一个监控别人系统运行状态的程序,结果自己出问题了,有时候想一想还是挺讽刺的,哈哈,开个玩笑,我们回到正题,前些天有位朋友找到我,说…...

大数据与云计算
目录 一、大数据时代二、云计算——大数据的计算三、云计算发展现状四、云计算实现机制五、云计算压倒性的成本优势 一、大数据时代 我们先来看看百度关于 “大数据”(Big Data)的搜索指数。 可以看出,“大数据” 这个词是从2012年才引起关注…...

一. 并行处理与GPU体系架构-并行处理简介
目录 前言0. 简述1. 串行处理与并行处理的区别2. 并行执行3. 容易混淆的几个概念4. 常见的并行处理总结参考 前言 自动驾驶之心推出的 《CUDA与TensorRT部署实战课程》,链接。记录下个人学习笔记,仅供自己参考 本次课程我们来学习下课程第一章——并行处…...

vb机试考试成绩分析与统计,设计与实现(高数概率统计)-141-(代码+程序说明)
转载地址http://www.3q2008.com/soft/search.asp?keyword141 前言: 为何口出狂言,作任何VB和ASP的系统, 这个就是很好的一个证明 :) 又有些狂了... 数据库操作谁都会,接触的多了也没什么难的,VB编程难在哪?算法上,这个是一个算法题的毕业设计,里面涉及到对试卷的 平均分,最…...

Arm MMU深度解读
文章目录 一、MMU概念介绍二、虚拟地址空间和物理地址空间2.1、(虚拟/物理)地址空间的范围2.2、物理地址空间有效位(范围) 三、Translation regimes四、地址翻译/几级页表?4.1、思考:页表到底有几级?4.2、以4KB granule为例,页表的…...
2024 年 AI 辅助研发趋势
在2024年,AI辅助研发的应用趋势将非常广泛。举个例子,比如在医疗健康领域,AI将深度参与新药研发、早期癌症研究以及辅助诊断等,助力医疗技术的突破。同时,在农业领域,AI也将通过无人机、智能装备等方式&…...
聊聊pytho中的函数
Python中的函数 一、Python中函数的作用与使用步骤 1、为什么需要函数 在Python实际开发中,我们使用函数的目的只有一个“让我们的代码可以被重复使用” 函数的作用有两个: ① 代码重用(代码重复使用) ② 模块化编程&#x…...

Python中starmap有什么用的?
目录 前言 starmap函数的作用 starmap函数的用法 starmap函数的示例 1. 对每个元组元素进行求和 2. 对每个元组元素进行乘积 实际应用场景 1. 批量处理函数参数 2. 并行处理任务 3. 批量更新数据库 总结 前言 在Python中, starmap 是一个非常有用的函数&…...

面向切面编程 AOP
提示:主要内容参考动力节点老杜的Spring6讲义。 面向切面编程 AOP 一、AOP介绍二、AOP的七大术语三、切点表达式 IoC使软件组件松耦合。AOP让你能够捕捉系统中经常使用的功能,把它转化成组件。AOP(Aspect Oriented Programming)&a…...

POS 之 奖励机制
为什么需要有奖惩机制 如果没有奖励,就不会有节点参与POS,运营节点有成本,而奖励正是让运营者获利的方式 如果没有惩罚,网络上会充斥着很多无效节点,会扰乱甚至破坏网络 所有奖励和惩罚在每个 Epoch 实施一次 奖励 什…...

Unity类银河恶魔城学习记录9-7 p88 Crystal instead of Clone源代码
Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili Blackhole_Skill_Controller.cs using System.Collections; using System…...

【kafka】Golang实现分布式Masscan任务调度系统
要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收…...

Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...

网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...
LeetCode - 199. 二叉树的右视图
题目 199. 二叉树的右视图 - 力扣(LeetCode) 思路 右视图是指从树的右侧看,对于每一层,只能看到该层最右边的节点。实现思路是: 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...

mac 安装homebrew (nvm 及git)
mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用: 方法一:使用 Homebrew 安装 Git(推荐) 步骤如下:打开终端(Terminal.app) 1.安装 Homebrew…...

并发编程 - go版
1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...

Rust 开发环境搭建
环境搭建 1、开发工具RustRover 或者vs code 2、Cygwin64 安装 https://cygwin.com/install.html 在工具终端执行: rustup toolchain install stable-x86_64-pc-windows-gnu rustup default stable-x86_64-pc-windows-gnu 2、Hello World fn main() { println…...