当前位置: 首页 > news >正文

网络基础_1

目录

网络基础

协议

协议分层

OSI七层模型

网络传输的基本流程

数据包的封装和分用

IP地址和MAC地址


网络基础

网络就是不同的计算机之间可以进行通信,前面我们学了同一台计算机之间通信,其中有进程间通信,前面学过的有管道(匿名管道和命名管道)、共享内存,但是进程间通信还有消息队列以及信号量,这些都是 systemV 标准的进程间通信,但是 systemV 标准的进程间通信并不能进行不同的主机间进行通信。

但是我们有时候是需要不同的主机间进行通信的,所以我们需要不同主机间通信的功能。

例如:现在有三个人分别需要处理一些数据,而这些数据需要再三台主机上进行处理,而这样的话那么如果不同主机间不能进行进程间通信的话,那么就只能当第一台计算机将数据处理结束后然后将数据拷贝到第二个计算机上,其中这里面是由人参与再里面的,只要有人参与的话,那么效率无疑是很慢的,所以我们是需要不停的主机间进行通信的。

而主机间通信就是数据的传输,那么如果一个主机给另一个主机一堆数据,那么另一个主机能知道发送数据的主机想要干什么吗?所以再计算机中发送数据时需要由协议的!

协议

那么我们现在理解一下协议。

由于计算机之间传输数据是通过光电信号,由信号的强弱来表示二进制的0,1,要是想传输数据,就需要约定好传输数据的格式。

那么意思是只要计算机的通信协议弄好就可以了吗?

由于计算机的操作系统又很多,生产硬件的厂商也很多,所以不同的计算机之间如果仅仅是约定好协议就可以了,所以还需要有一个通信的标准,只要所有的计算机的生产厂商都遵守这个标准,那么就可以达到让所有的计算机之间都可以约定好协议就可以通信!

协议分层

我们知道,如果是定义好协议的话,那么是需要使用语言定义的,同时像 linux 操作系统是使用C语言写的,而既然是使用C语言写的,那么就可以理解为软件,我们由知道软件是可以分层的,所以实际上协议也是可以分层的,那么协议怎么分层?

下面我们举一个例子:

现在有两个人再打电话,其中这两个人使用的是中文再交流,其中如果两个人距离千里之外使用中文那么两个人能听到对方说话吗?显然不可以的,而两个人听到对方说话完全是通过电话来实现的,而其中我们可以理解为两个人使用的中文就是其中的一层协议,而使用电话来通信,电话也是一层协议。

而既然协议分层了,那么也就是说这些协议是可以分开的,每一层之间互不影响,例如:两个人交流不光可以使用中文来交流,其中也可以使用英文来交流,而两个人也不仅可以使用电话来进行交流,也可以使用微信等其他的工具来进行交流,所以说分层是互不影响的。

OSI七层模型

而上面是我们平时交流的一个例子,那么计算机中使用的是什么协议呢?同时这些协议是如何分层的呢?

其中计算机中之前设计的时候定义的是OSI的七层模型,但是实际上并没有七层模型,而是有五层,但是如果将五财务模型细分一下,也可以分为七层模型。

还是先说一下传统中说的五层模型有哪些!

再回答上面的问题的时候,我们先说一个问题:如果两个人再交流的时候距离很近还好,那么还是可以通道对方再说什么的,但是i如果了两个人距离很远呢?可能就会存在一个人说话,然后另一个人没有听到的场景,还有就是如果距离特别远,那么还需要中间有人或者有其他的来帮忙传话等,同样计算机也是如此,通信的难易程和距离是成正比的,所以说越远通信的复杂程度就越高!

那么为什么说越远通信的复杂程度越高呢?

  1. 当两台主机激励很远的时候,由于数据传输是使用光电信号,所以如果距离特别远的话吗,可能出现数据丢失的问题,也就是所谓的丢包!

  2. 还有就是如果两台主机要进行通信,那么仅仅说想通信就好了吗?显然不是,如果要将数据从一台主机发送到另一台主机那么难道不需要找到对方主机然后发送数据吗?当然需要,所以还需要解决定位问题。

  3. 如果两台主机现在距离千里之外,那么仅仅是靠一根网线就好了吗?不是因为全世界计算机记忆入网设备这么多,不可能是两台主机通信,如果每两台主机通信就需要一根网线,那么显然是不可能的,所以实际上数据的发送是通过路由器,将所有的局域网连在一起,而局域网的连接时通过路由器,所以距离很远的两台主机时通信很多路由器来数据传输的,所以如果两台主机距离很远的话,还需要通过友一个路由器到下一个路由器,所以还需要解决如何让从这个路由器到下一个正确的路由器。

而上面说的协议的分成就是为了每一层之间解决不同的问题。

我们现在先不谈七层模型,我们先说一下 TCP/IP 的五层模型!

什么是TCP/IP的五层模型呢?

其实这里的TCP/IP是协议的一组代名词,而里面不仅包含TCP/IP协议,还包含了很多的其他协议。

其中下面四层是和七层模型是相同的,但是TCP/IP五成模型,将七层模型的上三成压缩为一层了。

而且我们也说了,每一层都是为了解决不同的问题,下面看一下每一层都解决的问题。

首先就是最下面的物理层:物理层主要是为了解决光电信号的传输,比如以太网,和现在常见的wife,等都是物理层的概念,也就是物理信号的传输。

再往上就是数据链路层:其实也可以说是驱动,这一层就是将数据帧的发送,他解决的问题就是数据再局域网内碰撞的检测,以及就是数据差错校验等工作

上面还有网络层:之前我们说过,两台主机太远的话,那么主机是如何找到对面主机在哪的呢?而网络层就是解决主机定位,以及下一跳去哪的。

网络层上面就是传输层了:传输层主要的工作就是数据的传输,例如TCP协议就可以保证数据的有效传输,如果失败了,那么就需要重新发送。

最后就是引用层:应用层就是我们现在所使用的软件,由于每一种的应用都不一样,所以实现起来也是不一样的。

那么七层模型出来:物理层、数据链路层、网络层、传输层,那么还有哪些呢?

其中还有就是会话层、表示层、应用层。

会话层就是为例管理链接的建立以及保持多久。

表示层就是数据的格式,以及格式的转换等。

但是TCP/IP将最后这三层给压缩了,实际上并不是没有会话和表示层,而是全都放到了应用层里面。

实际上,我们其实不关心物理层,我们只关系上面的几层,其中我们学习系统而TCP/IP就是再系统种实现的,所以我们更关心TCP/IP协议。

网络传输的基本流程

那么网络既然是分层的,也就是每一层也都有自己的协议,那么当前层的协议其他层能看懂吗?显然是看不懂的,那么也就是当前层的协议只能由对方的当前层来解析。

那么既然是这样那么每一层再发送的时候是不是就应该将自己的协议加上去呢?

而这个加协议的时候,每一层加的协议就叫做报头,而报头之外的数据,就叫做有效载荷。

现在假设有两台主机,其中左边想要给右边的主机通过网络发送数据,那么应该怎么发呢?

现在假设用户产生了一个数据 “你好“,那么这个数据如何通过网络发送的?

首先,我们说了每一层都有不同的协议,而其中再数据发送的时候,每一层都是要加上自己这一层的协议的,否则即使发送到对端主机,那么对端主机也看不懂。

当数据通过应用层的时候,应用层会第一次将数据封装,也就是加上自己的协议报头,接着会交给下一层。

到了传输层,传输层也会将自己的报头加到应用层给的数据。此时对于传输层来说,应用层给的数据就是有效载荷,而自己加的报头就是报头。

到了网络层之后,网络层也会加上自己的报头,同时交给下一层,然后数据链路层也是加上报头交给下一层,直到数据现在再网络中跑...

此时数据就已经发送到网络里面了,但是当对方接受到该怎么办呢?

其实即使是对方接受到了,那么发送的时候是封装,那么接收到当然需要里面的数据了,那么就是每一层将对应层的报头给解包,然后交付给上层,让上层处理掉剩下的数据。

对应的对方就是和封装相反的动作,直到解包到用户手里。

但是这里仅仅演示的是局域网种的通信,如果是跨网段的话,那么中间还是需要经过路由器,其中路由器会帮我们做很多工作,其中就是找到下一跳,还有就是如果网络使用的技术不同的话,那么路由器还回帮我们进行网络的转换。

数据包的封装和分用

其实我们上面已经简单的模拟了如何封装和分用,但是上面就是一个简单的理解,其实数据包的封装和分用时很复杂的,而且因为同一层的协议时很多的,所以还需要判断再交付的时候,需要交给哪一个协议去进行处理。

再说封装分用之前,我们先说一些背景知识:

  • 其实数据再不同层的协议有不同的叫法:再传输层叫做”数据段“、再网络层叫”数据报“、再数据链路层叫”数据帧“/

  • 应用层数据通过协议栈将数据发送到网络上时,每一层都需要加上首部,这歌就叫做封装。

  • 首部种包含了一些信息类似于:首部的长度、有效载荷的长度、需要交付给上层的哪一个协议。

  • 当数据被封装成数据帧后,发送到物理介质上后,被对方主机接收到后,将每一层的首部去掉,然后通过首部种的上层协议,然后将数据交给上层处理。

背景知识说完了,其实封装就是再首部中加一些字段,并不是我们刚才加的哪些什么,但是主要还都是一样的,而且有一些的首部时定长的,所以就直接解包就可以了,我们下面还是再说一下解包,也就是分用:

这就是解包,我们前面说了,每一层有不同的协议,所以还是需要根据报头中的上层协议来交付给不同的上层。

IP地址和MAC地址

IP地址现在有两个版本:IPv4、IPv6版本,但是现在基本还是IPv4。

IP协议时用来标注不同网段中的主机地址的。

IPv4时四字节的一个整数,其中我们就使用点分十进制来分割,其中每一个点分割一个字节的整数,所以就是0~255.

MAC地址就是用来表示数据链路层中相连的节点。

长度一般时6字节,也就是48位,其中一般使用16进制表示,而每个字节使用冒号隔开。

而mac地址一般是网卡自带的,所以mac地址一般时不能被修改的,同时也是唯一的。

而虚拟机中的mac地址不是真实的mac地址,时虚拟出来的,所以也可能会有冲突。

相关文章:

网络基础_1

目录 网络基础 协议 协议分层 OSI七层模型 网络传输的基本流程 数据包的封装和分用 IP地址和MAC地址 网络基础 网络就是不同的计算机之间可以进行通信,前面我们学了同一台计算机之间通信,其中有进程间通信,前面学过的有管道&#xff…...

机器学习:DBSCAN算法(效果比K-means好)

基本概念 核心对象:以点为圆心半径为r的圆,如果圈里面的样本点大于给定的阈值(minPts),那么这个点就叫做核心点 直接密度可达:点p在q为圆心的圆内 密度可达: p1与p2直接密度可达,p2与p3直接密度可达&…...

在Spring Boot中隔离@Async异步任务的线程池

在异步任务执行的时候,我们知道其背后都有一个线程池来执行任务,但是为了控制异步任务的并发不影响到应用的正常运作,我们需要对线程池做好相关的配置,以防资源过度使用。这个时候我们就考虑将线程池进行隔离了。 那么我们为啥要…...

FFmpeg架构全面分析

一、简介 它的官网为:https://ffmpeg.org/,由Fabrice Bellard(法国著名程序员Born in 1972)于2000年发起创建的开源项目。该人是个牛人,在很多领域都有很大的贡献。 FFmpeg是多媒体领域的万能工具。只要涉及音视频领…...

OAuth(开放授权)介绍

OAuth(开放授权)是一个开放标准,允许用户授权第三方应用访问他们存储在另一服务提供商上的信息,而无需将用户名和密码直接暴露给第三方应用。这个过程提供了一种安全的授权方式,常用于允许用户让第三方应用访问例如邮箱…...

Online ddl和replace ddl

在这个之前我们先来了解两种文件类型 1. .ibd文件 表数据文件,存储了表的数据和索引信息,从Mysql8开始表定义信息,从.frm文件改为.dcl文件存储,而表数据和索引信息仍然储存在.ibd文件,.idb文件通常在书籍库目录下。 …...

WEB渗透—反序列化(九)

Web渗透—反序列化 课程学习分享(课程非本人制作,仅提供学习分享) 靶场下载地址:GitHub - mcc0624/php_ser_Class: php反序列化靶场课程,基于课程制作的靶场 课程地址:PHP反序列化漏洞学习_哔哩哔_…...

蓝桥杯day02——第三大的数

题目 给你一个非空数组,返回此数组中 第三大的数 。如果不存在,则返回数组中最大的数。 示例 1: 输入:[3, 2, 1] 输出:1 解释:第三大的数是 1 。 示例 2: 输入:[1, 2] 输出&…...

linux shell中set -e命令的作用

set -e 是一个在shell脚本中常用的命令,它的含义是在脚本执行过程中,如果出现任何一个命令的执行结果不是零(即命令执行失败),则立即退出整个脚本。 set -e 的用途是在脚本中进行错误处理和控制流程。通过设置set -e&…...

linux shell 字符替换命令

sed 文本 2.txt 内容如下: 1 2 3 4 511 121abcabcc1.替换文本指定字符或字符串,不更改原文件 将文本内容替换并输出,但不直接在原文档中修改: sed "s/旧字符串/新字符串/g" 文档 范例,将文本中的 1 替换为 b rootheihei:/# sed &…...

Vue3生命周期函数(简述题)

1.图示 2.说明 3.补充 1.在vue3组合式API中,我们需要将生命周期函数先导入,然后才能使用。 import {onMounted} from vue2.beforeCreate和created被setup()方法所代替...

11月29日,每日信息差//雷军个人向武汉大学捐赠13亿元现金//看电视默认设置新规一览:开机广告不超 5 秒、不设置一键付费

🎖 继长安汽车后,蔚来将与吉利控股达成换电业务合作 🎄 中国飞鹤入选工信部质量提升典型案例 🎆 雷军个人向武汉大学捐赠13亿元现金 🎇 奢侈品电商Farfetch或将私有化 🎁 亚马逊云科技宣布推出Amazon Q ✨ …...

融资经理简历模板

这份简历内容,以综合柜员招聘需求为背景,我们制作了1份全面、专业且具有参考价值的简历案例,大家可以灵活借鉴。 融资经理简历在线编辑下载:百度幻主简历 求职意向 求职类型:全职 意向岗位:融资经理 …...

iptables防火墙之SNAT与DNET

NAT 1.SNAT:让内网可以访问外网 2.DNAT:让外网可以访问到内网的机器 网关服务器,要开启路由功能 内核功能: sysctl -a 列出所有参数 内核参数,然后grep可以查看到默认的内核参数 内核参数配置文件 /etc/sysctl.…...

mysql使用--备份与恢复

1.mysqldump 1.1.使用mysqldump备份数据 1.1.1.备份指定数据库中的指定表 如:mysqldump [其他选项] 数据库名 [表1名 表2名 …] 如:mysqldump -uroot -hlocalhost -p1234 database1 student_score > student_score.sql 上述采用-u和-p完成用户登录&am…...

【vue实战项目】通用管理系统:信息列表,信息录入

本文为博主的vue实战小项目系列中的第六篇,很适合后端或者才入门的小伙伴看,一个前端项目从0到1的保姆级教学。前面的内容: 【vue实战项目】通用管理系统:登录页-CSDN博客 【vue实战项目】通用管理系统:封装token操作…...

【驱动】SPI驱动分析(六)-RK SPI驱动分析

前言 Linux的spi接口驱动实现目录在kernel\drivers\spi下。这个目录和一些层次比较明显的驱动目录布局不同,全放在这个文件夹下,因此还是只好通过看Kconfig 和 Makefile来找找思路 先看Makefile,里面关键几行: obj-$(CONFIG_SPI…...

【Linux】基础IO--文件基础知识/文件操作/文件描述符

文章目录 一、文件相关基础知识二、文件操作1.C语言文件操作2.操作系统文件操作2.1 比特位传递选项2.2 文件相关系统调用2.3 文件操作接口的使用 三、文件描述符fd1.什么是文件描述符2.文件描述符的分配规则 一、文件相关基础知识 我们对文件有如下的认识: 1.文件 …...

Intellij IDEA 的安装和使用以及配置

IDE有很多种,常见的Eclipse、MyEclipse、Intellij IDEA、JBuilder、NetBeans等。但是这些IDE中目前比较火的是Intellij IDEA(以下简称IDEA),被众多Java程序员视为最好用的Java集成开发环境,今天的主题就是IDEA为开发工…...

Zynq-Linux移植学习笔记之67- 国产ZYNQ上通过GPIO模拟MDC/MDIO协议

1、背景介绍 模块上有9个PHY,其中两个PHY通过ZYNQ PS端的MDIO总线连接,其余7个PHY单独通过GPIO进行控制,需要实现GPIO模拟MDC/MDIO协议。 2、vivado工程设计 vivado工程内为每个PHY建立两个GPIO IP核,分别用来代表MDC和MDIO&…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

网络六边形受到攻击

大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...

系统设计 --- MongoDB亿级数据查询优化策略

系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...

linux 下常用变更-8

1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...

【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)

要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...

Unit 1 深度强化学习简介

Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...

Spring AI与Spring Modulith核心技术解析

Spring AI核心架构解析 Spring AI(https://spring.io/projects/spring-ai)作为Spring生态中的AI集成框架,其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似,但特别为多语…...

dify打造数据可视化图表

一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...

C# 求圆面积的程序(Program to find area of a circle)

给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...

Ubuntu Cursor升级成v1.0

0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开,快捷键也不好用,当看到 Cursor 升级后,还是蛮高兴的 1. 下载 Cursor 下载地址:https://www.cursor.com/cn/downloads 点击下载 Linux (x64) ,…...