【网络】网络基础
🥁作者: 华丞臧.
📕专栏:【网络】
各位读者老爷如果觉得博主写的不错,请诸位多多支持(点赞+收藏+关注)。如果有错误的地方,欢迎在评论区指出。
推荐一款刷题网站 👉 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)队列的概念:① 队列只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表。② 入队列,进行插入操作的一端称为 队尾。出队列,进行删除操作的一端称为 队头。③ 队列中的元素…...
HTML前端开发:JavaScript 常用事件详解
作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...
JDK 17 新特性
#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的ÿ…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
uniapp 实现腾讯云IM群文件上传下载功能
UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中,群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS,在uniapp中实现: 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...
Elastic 获得 AWS 教育 ISV 合作伙伴资质,进一步增强教育解决方案产品组合
作者:来自 Elastic Udayasimha Theepireddy (Uday), Brian Bergholm, Marianna Jonsdottir 通过搜索 AI 和云创新推动教育领域的数字化转型。 我们非常高兴地宣布,Elastic 已获得 AWS 教育 ISV 合作伙伴资质。这一重要认证表明,Elastic 作为 …...
五子棋测试用例
一.项目背景 1.1 项目简介 传统棋类文化的推广 五子棋是一种古老的棋类游戏,有着深厚的文化底蕴。通过将五子棋制作成网页游戏,可以让更多的人了解和接触到这一传统棋类文化。无论是国内还是国外的玩家,都可以通过网页五子棋感受到东方棋类…...
MeshGPT 笔记
[2311.15475] MeshGPT: Generating Triangle Meshes with Decoder-Only Transformers https://library.scholarcy.com/try 真正意义上的AI生成三维模型MESHGPT来袭!_哔哩哔哩_bilibili GitHub - lucidrains/meshgpt-pytorch: Implementation of MeshGPT, SOTA Me…...
手动给中文分词和 直接用神经网络RNN做有什么区别
手动分词和基于神经网络(如 RNN)的自动分词在原理、实现方式和效果上有显著差异,以下是核心对比: 1. 实现原理对比 对比维度手动分词(规则 / 词典驱动)神经网络 RNN 分词(数据驱动)…...
Git 命令全流程总结
以下是从初始化到版本控制、查看记录、撤回操作的 Git 命令全流程总结,按操作场景分类整理: 一、初始化与基础操作 操作命令初始化仓库git init添加所有文件到暂存区git add .提交到本地仓库git commit -m "提交描述"首次提交需配置身份git c…...
