【网络】网络基础
🥁作者: 华丞臧.
📕专栏:【网络】
各位读者老爷如果觉得博主写的不错,请诸位多多支持(点赞+收藏+关注
)。如果有错误的地方,欢迎在评论区指出。
推荐一款刷题网站 👉 LeetCode刷题网站
文章目录
- 一、计算机网络背景
- 1.1 网络发展
- 1.2 协议
- 二、网络协议初识
- 2.1 协议分层
- 2.1 OSI七层模型
- 2.2 TCP/IP五层(或四层)模型
- 三、网络传输基本流程
- 3.1 网络和操作系统
- 3.2 网络传输流程图
- 3.3 数据包封装和分用
- 四、网络中的地址管理
- 4.1 认识IP地址
- 4.2 认识MAC地址
一、计算机网络背景
1.1 网络发展
独立模式:在发展之初,计算机之间相互独立。
网络互联:多台计算机连接连接在一起,完成数据共享。
局域网LAN:计算机数量更多了,通过交换机和路由器连接在一起,局域网内部没有路由器。
广域网WAN:将远隔千里的计算机都连在一起,局域网通过路由器连接形成广域网。
所谓 “局域网” 和 “广域网” 只是一个相对的概念. 比如, 我们有 “天朝特色” 的广域网, 也可以看做一个比较大的局域网。
重新看待计算机结构,以理解计算机通过网络互联的可能性:根据冯诺依曼体系结构,一台计算机由输入输出设备、存储器和中央处理器构成,如下图:
那么上图中计算机上的硬件如何进行数据交互的呢?毫无疑问设备和设备之间一定要有线连接起来,只不过这些线比较短并且藏在计算机内部通常用户是看不见的;那么计算机体系结构本质上也可以看做一个小型网络。其次我们也可以使用多主机互相连通,构建宏观的冯诺依曼体系结构,而多主机连接本质上也是通过“线
”连接起来的–我们称之为网线(也有用无限WAN连接)。
跨主机与主机内的小型网络不同的是跨主机连接线变长了,线变长了相应地数据传输的可靠性、效率降低了,如何寻找对方的难度上升了,为了保证长距离传输的可靠性、效率,各种新的设备诞生了,如:路由器、交换机。
1.2 协议
计算机之间的传输媒介是光信号和电信号. 通过 “频率” 和 “强弱” 来表示 0 和 1 这样的信息,要想传递各种不同的信息,计算机之间进行通信需要约定好双方的数据格式。在计算机当中把这种约定称为协议,协议是一种约定。
思考:只要通信的两台主机约定好协议就可以了吗?
并不是,计算机的生产厂商有很多如联想、华硕、小米、华为等,计算机操作系统也有很多如windows、苹果、Linux等,计算机网络硬件设备同样有很多,要让这些不同的品牌的计算机实现相互顺畅的通信,就必须制定一个共同的标准大家都来遵守,这就是网络协议。
二、网络协议初识
2.1 协议分层
软件是可以分层的:在学习编程之初,比如学习C语言时,起初我们编写代码都是放在一个.c
文件中;随着学习的深入,我们知道可以将函数的声明和定义分离,并且在主函数文件中包含声明文件即可使用自己编写好的函数,这就是在软件上的分层:main函数是一层,声明定义是第二层。
为什么要分层?
- 软件在分层的同时,也把问题归类了,方便排查问题;
- 分层可以让代码逻辑更加简单;
- 分层的本质:软件上对代码进行解耦;
- 便于工程师进行软件维护;
- 网络本身的代码就是层状结构,层状结构是软件中非常重要的结构,几乎任何软件都离不开层状结构。
层状结构下的网络协议,我们认为:同层协议都可以认为自己在和对方直接通行,忽略底层细节;因此同层之间,一定都要有自己的协议。
2.1 OSI七层模型
- OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范;
- 把网络从逻辑上分为了7层. 每一层都有相关、相对应的物理设备,比如路由器,交换机;
- OSI 七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输;
- 它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整. 通过七
个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯; - 但是, 它既复杂又不实用。
分层名称 | 功能 | |
---|---|---|
7 | 应用层 | 针对特定应用的协议 |
6 | 表示层 | 设备固有数据格式和网络标准数据格式的转换 |
5 | 会话层 | 通信管理,负者建立和断开通信连接(数据流动的逻辑通路)。管理传输层以下的分层 |
4 | 传输层 | 管理两个节点之间的数据传输。负者可靠传输(确保三个月后又被可靠地传送到目标地址) |
3 | 网络层 | 地址管理与路由选择 |
2 | 数据链路层 | 互连设备之间传送和识别数据帧 |
1 | 物理层 | 以“0”、“1”代表电压的高低。灯光的闪灭。界定连接器和网线的规格。 |
2.2 TCP/IP五层(或四层)模型
TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇.。
TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。
- 物理层: 负责光/电信号的传递方式. 比如现在以太网通用的网线(双绞 线)、早期以太网采用的的同轴电缆
(现在主要用于有线电视)、光纤, 现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决
定了最大传输速率、传输距离、抗干扰性等. 集线器(Hub)工作在物理层. - 数据链路层: 负责设备之间的数据帧的传送和识别. 例如网卡设备的驱动、帧同步(就是说从网线上检测
到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作. 有以太
网、令牌环网, 无线LAN等标准. 交换机(Switch)工作在数据链路层. - 网络层: 负责地址管理和路由选择. 例如在IP协议中, 通过IP地址来标识一台主机, 并通过路由表的方式规
划出两台主机之间的数据传输的线路(路由). 路由器(Router)工作在网路层. - 传输层: 负责两台主机之间的数据传输. 如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标
主机. - 应用层: 负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问
协议(Telnet)等. 我们的网络编程主要就是针对应用层.
物理层考虑的比较少,因此很多时候也可以称为 TCP/IP四层模型,一般而言:
- 对于一台主机, 它的操作系统内核实现了从传输层到物理层的内容;
- 对于一台路由器, 它实现了从网络层到物理层;
- 对于一台交换机, 它实现了从数据链路层到物理层;
- 对于集线器, 它只实现了物理层;
三、网络传输基本流程
3.1 网络和操作系统
体系结构直接决定:数据包在主机内进行流动的时候,一定要进行自顶向下或者自底向上进行流动的。
计算机发数据需要底层硬件转发,用户层数据无法直接抵达硬件必须贯穿操作系统,而网络协议栈隶属于操作系统,因此必须自顶向下交付给硬件;发数据一般是用户发给用户,底层硬件没办法直接将数据发给用户,必须贯穿操作系统和协议栈才能将数据交给用户。,因此需要自底向上。
3.2 网络传输流程图
- 重谈协议:计算机视角看待协议,体现在代码逻辑上,计算机通过协议完成对数据包的转发;体现在数据上,计算机为了维护协议在传输的数据上一定新增其他的协议数据。
- 报头:每一层在要交付给下一层的数据上添加上本层的协议数据拼接在原始数据的开头,其中添加的协议数据称为报头。
如果两台局域网处于同一个局域网,这两台主机是可以直接通信的(以太网,最常见的一种局域网标准)。站在系统的角度,以太网就是临界资源。
局域网通信的原理:
- 每一台主机都要有唯一的标识,该主机对应的MAC地址,MAC地址主要工作在局域网中用来标识主机的唯一性;
- 在同一碰撞域中,各个主机发送的信息会发生碰撞,无法准确的接收对应的信息;每一台主机都能够识别域中发生了碰撞,每台主机都会检测域中有无碰撞(碰撞避免),检测到无碰撞发生时再发送信息。
- 碰撞域:在一局域网中,任何一台主机,在任何时候,都可以随时发消息。
在LInux上查看机器的MAC地址:
跨网段的主机的文件传输. 数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器。
在上图的过程中,MAC地址用于在局域网中标定主机的唯一性;而IP地址用来在广域网(公网)标定主机的唯一性。在远距离传输中,数据传输会经过多个局域网,在数据通过不同的局域网时MAC地址是在不断变化的,因为数据需要通过不同路由器传输,路由器用于连接两个不同的局域网,而数据中的IP地址是不变的。从上图可以得出结论,IP网络屏蔽了底层网络的差异,所有的IP层向上的协议发送和接收主机看到的数据是一模一样的。
例子:假如张三在长沙读大学,放假了张三要回家,所以张三买了去武汉的高铁票,那么张三的起点就是长沙,目的地就是武汉;在上了高铁之后,高铁会经过一个一个的站,直到到了武汉张三才会下高铁。那么在这个过程中,源IP地址就是起点长沙,目的IP地址就是武汉,源MAC地址是高铁在中途停留的某个高铁站,而目的MAC地址就是高铁下一个将要停留的高铁站。
3.3 数据包封装和分用
- 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链路层叫做帧(frame)。
- 应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation).。
- 首部信息中包含了一些类似于首部有多长, 载荷(payload)有多长, 上层协议是什么等信息。
- 数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部, 根据首部中的 “上层协议字段” 将数据交给对应的上层协议处理。
下图为数据封装的过程:
- 有效载荷:本层需要传递的数据,注意是没有添加本层报头的数据称为有效载荷。
下图为数据分用的过程:
- 首先需要注意,每一层都有多种协议,因此数据包在添加报头的时候,也要考虑未来解包的时候将自己的有效载荷交付给上一层的哪一个协议。
- 将有效载荷交付给上层的协议称为有效载荷的分用过程。
通过数据封装和分用的过程可以得出以下两个结论:
- 一般而言,任何报头属性里面一定要存在一些字段用来支持封装和解包,;
- 一般而言,任何报头属性里面一定要存在一些字段用来支持进行分用;
四、网络中的地址管理
4.1 认识IP地址
IP协议有两个版本, IPv4和IPv6。目前一般的使用的都是IPV4。
- IP地址是在IP协议中, 用来标识网络中不同主机的地址;
- 对于IPv4来说, IP地址是一个4字节, 32位的整数;
- 我们通常也使用 “点分十进制” 的字符串表示IP地址, 例如 192.168.0.1 ; 用点分割的每一个数字表示一个
字节, 范围是 0 - 255。
4.2 认识MAC地址
- MAC地址用来识别数据链路层中相连的节点;
- 长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19);
- 在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些网卡支持用户配置mac地址)。
相关文章:

【网络】网络基础
🥁作者: 华丞臧. 📕专栏:【网络】 各位读者老爷如果觉得博主写的不错,请诸位多多支持(点赞收藏关注)。如果有错误的地方,欢迎在评论区指出。 推荐一款刷题网站 👉 LeetCode刷题网站 文章…...
Linux系统之Uboot、Kernel、Busybox思考之三
目录 三 内核的运行 5-中断子系统 6 锁、延迟与原子上下文 7 内存管理子系统 8 驱动的两类框架 三 内核的运行 5-中断子系统 中断子系统的数据结构及设计思想。 中断子系统需要解决中断管理的问题。 如果系统中断较少的话,其管理就不用设计这样一个中断子系统这…...

FPGA 20个例程篇:20.USB2.0/RS232/LAN控制并行DAC输出任意频率正弦波、梯形波、三角波、方波(一)
在最后一个例程中笔者精挑细选了一个较为综合性的项目实战,其中覆盖了很多知识点,也是从一个转产产品中所提炼出来的,所以非常贴近实战项目。 整个工程实现了用户通过对上位机PC端人机界面的操作,即可达到控制豌豆开发并行DAC输出…...

性能测试学习和性能瓶颈分析路线
很多企业招聘都只写性能测试,会使用LR,jmeter工具。其实会使用jmeter和LR进行性能测试还只是性能测试的第一步,离真正的性能测试工程师还很远,笔者也还在路上 .。 性能测试,都是要求测试系统性能,系统自然…...

达梦数据库(DM8)集成使用 Geoserver(2.22.2) 以及其他对应版本详解
达梦数据库(DM8)集成使用 Geoserver(2.22.2) 以及其他对应版本详解系统环境版本Geoserver 驱动对应版本达梦 8 集成 Geoserver 过程试错过程问题总结项目需要国产化,选择使用达梦数据库,在技术测试阶段&…...

全开源无加密的RuleApp文章社区APP客户端源码
内容目录一、详细介绍二、效果展示1.部分代码2.效果图展示三、学习资料下载一、详细介绍 开源无加密的文章社区客户端源码分享 RuleApp文章社区,VIP会员,写作投稿积分商城,付费模块集成,多平台兼容这是一款开源免费,界…...

基于springboot校园二手市场平台
一、项目简介 本项目是一套基于springboot校园二手市场平台,主要针对计算机相关专业的正在做bishe的学生和需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本等,该项目可以直接作为bishe使用。 项目都经过严格调试,确保…...

维度建模基本流程总结
一、维度建模基本流程图数据RD进行业务调研和数据现状调研,产出符合相关模版规范的业务知识文档和数据现状文档。数据PM也会调研相关业务产出需求设计文档,三方参与需求评审,评审通过后基建数据RD进行需求拆解,产出技术方案&#…...

RocketMQ事务消息
RocketMQ事务消息 RocketMq提供的一种高级消息类型,支持在分布式场景下面保障消息生产和本地事务的一致性 生产者将消息发送到服务端服务端将消息持久化成功后,向生产者返回ACK确认消息发送成功,此时消息状态为待投递,这种状态下的消息称之为…...
大数据处理 - 双层桶划分
分桶法简介其实本质上还是分而治之的思想,重在“分”的技巧上!适用范围: 第k大,中位数,不重复或重复的数字基本原理及要点: 因为元素范围很大,不能利用直接寻址表,所以通过多次划分,逐步确定范围…...
NFC标签读写器隐私协议
【标签读写器】(以下简称“我们”)深知个人信息对您的重要性,并会尽全力保护您的个人信息安全可靠。我们致力于维持您对我们的信任,恪守以下原则,保护您的个人信息:权责一致原则、目的明确原则、选择同意原…...

DocEE:一种用于文档级事件抽取的大规模细粒度基准 论文解读
DocEE: A Large-Scale and Fine-grained Benchmark for Document-level Event Extraction 论文:NAACL2022.pdf (tongmeihan1995.github.io) 代码:tongmeihan1995/DocEE: DocEE: A Large-Scale and Fine-grained Benchmark for Document-level Event Ext…...

ImageCombiner设计源码详解
前言在前面的博客中介绍了一款Java的海报生成器ImageCombiner,原文地址:拿来就用的Java海报生成器ImageCombiner(一),在博文中简单介绍了一下代码以及一个真实的生成案例。但是对源码的介绍不多,本文就针对源码进行深入…...

python基础 | python基础语法
文章目录📚基础语法🐇输入和输出🥕print()输出🥕input()输入🐇 变量的命名🐇条件判断🥕单向判断🥕双向判断🥕多向判断🥕if嵌套🥕三元表达式&#…...

YOLOv6-3.0-目标检测论文解读
文章目录摘要算法2.1网络设计2.2Anchor辅助训练2.3自蒸馏实验消融实验结论论文: 《YOLOv6 v3.0: A Full-Scale Reloading 》github: https://github.com/meituan/YOLOv6上版本参考 YOLOv6摘要 YOLOv6 v3.0中YOLOv6-N达到37.5AP,1187FPS&…...
JAVA集合之Map >>HashMap/Hashtable/TreeMap/LinkedHashMap结构
Map 是一种键-值对(key-value)集合,键不可以重复,值可以重复。常见的实现类有:HashMap、Hashtable、TreeMap、LinkedHashMap等。 HashMap&Hashtable HashMap:数据结构为哈希表,允许使用 n…...

JavaScript从零开始 学习记录(一)
前言 选择视频课程之前,不仅查阅了资料,还询问了网友,最终敲定了学习黑马前端的视频教程,学了5小节,发现挺对自己口味的且从反响来看,还是相当不错的,便打算利用这个寒假学完 笔记范围 从这节…...

C++项目——高并发内存池(3)--central cache整体设计
1.central cache的介绍 1.1框架思想 1.1.1哈希映射 centralcache其实也是哈希桶结构的,并且central cache和thread cacha的哈希映射关系是一致的。目的为了,当thread cache某一个哈希桶下没有内存块时,可以利用之前编写的SizeClass::Index…...
Spring Boot 整合 MyBatis 配置等案例教程
运行环境:JDK 7 或 8、Maven 3.0 技术栈:SpringBoot 1.5、SpringBoot Mybatis Starter 1.2 、MyBatis 3.4 前言 距离第一篇 Spring Boot 系列的博文 3 个月了。《Springboot 整合 Mybatis 的完整 Web 案例》第一篇出来是 XML 配置 SQL 的形式。虽然 XM…...

比特数据结构与算法(第三章_下)队列的概念和实现(力扣:225+232+622)
一、队列(Queue)队列的概念:① 队列只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表。② 入队列,进行插入操作的一端称为 队尾。出队列,进行删除操作的一端称为 队头。③ 队列中的元素…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...
在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:
在 HarmonyOS 应用开发中,手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力,既支持点击、长按、拖拽等基础单一手势的精细控制,也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档,…...
2024年赣州旅游投资集团社会招聘笔试真
2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...
LeetCode - 199. 二叉树的右视图
题目 199. 二叉树的右视图 - 力扣(LeetCode) 思路 右视图是指从树的右侧看,对于每一层,只能看到该层最右边的节点。实现思路是: 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...
【生成模型】视频生成论文调研
工作清单 上游应用方向:控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...
MinIO Docker 部署:仅开放一个端口
MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...

【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制
目录 节点的功能承载层(GATT/Adv)局限性: 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能,如 Configuration …...