【网络】网络基础(一)

网络基础(一)

文章目录

  • 一、计算机网络背景
    • 1.1网络发展
    • 1.2认识“协议”
  • 二、网络协议初识
    • 2.1OSI七层模型
    • 2.2OSI五层模型
  • 三、网络传输基本流程
    • 3.1局域网通信
    • 3.2网络传输流程
      • 不跨子网的网络传输
      • 跨子网的网络传输
    • 3.3网络中的地址管理
      • IP地址
      • MAC地址

一、计算机网络背景

1.1网络发展

在计算机发展初期,计算机之间相互独立,每个终端各自持有数据,这明显对于数据的共享很不友好,为了高效的数据传输和共享,世界各地的科学家、实验室就开始想办法提出自己的解决方案用来解决多设备数据共享的问题,所以在这一阶段形成了网络互联的概念,在这一阶段,不同设备之间可以进行数据共享,那么随着设备的增多,技术的发展,就产生了局域网广域网这样的技术概念,那么具体的内容我们我们慢慢抽丝剥茧学习,这部分只是有一个网络发展的概念就行。

1.2认识“协议”

我们之前说为了解决多设备之间数据共享的问题,世界各地的实验室、科学家们提出了诸多解决方案,而这个数据通信的解决方案其实就是协议

协议可以理解成一种约定,即通信双方提前约定好通信的数据格式,在通信过程中双方基于该数据格式进行通信,站在语言角度理解协议就是通信双方都能识别的结构体数据类型

但是这时就存在一个问题,计算机的生产厂商有很多,操作系统也有很多,衍生的网络硬件设备也有很多,那么如何让这些不同厂商之间生产的计算机都能相互顺畅的通信呢,所以这时就需要标准的存在,而这个统一的标准就是网络协议

当今的网络协议是OSI(Open System Interconnection)提出的OSI七层模型

为什么网络协议要分层?

联想到我们之前对于分层的理解,分层一般是为了可以松耦合,层与层之间不会有太多的联系,方便后期维护。

比如:当物理层发生变化时,我们只需要改动物理层的代码,其他层次的代码无需改动。


为什么存在网络协议?

首先客观事实是,通信距离变远,必定会引发新的问题:

  1. 如何使用数据的问题;
  2. 可靠性问题;
  3. 主机定位问题;
  4. 数据报局域网转发问题。

那么以上这些问题我们都会在后面的学习中有所体现,简言之网络协议的不同层次可以分别解决上述的问题。

二、网络协议初识

2.1OSI七层模型

  • OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范;
  • 把网络从逻辑上分为了7层,每一层都有相关、相对应的物理设备,比如路由器,交换机;
  • OSI 七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输;
  • 它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整. 通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯;
  • 但是,它既复杂又不实用,所以我们按照TCP/IP四层模型来讲解。
分层名称功能每层功能概述
应用层针对特定应用的协议在这里插入图片描述
表示层设备固有数据格式和网络标准数据格式的转换在这里插入图片描述
会话层通信管理、负责建立和断开通信连接(数据流动的逻辑通路)、管理传输层以下的分层在这里插入图片描述
传输层(TCP)管理两个节点之间的数据传输、负责可靠性传输(确保数据被可靠地传送到目标地址,即数据传输可靠性)在这里插入图片描述
网络层(IP)地址管理与路由选择(路由器)在这里插入图片描述
数据链路层互联设备之间传送和识别数据帧(交换机)在这里插入图片描述
物理层以0/1代表电压的高低以及灯光的闪灭、界定连接器和网线的规格(集线器、调制解调器)在这里插入图片描述

为什么上面我们说是TCP/IP四层模型呢?

OSI七层模型是非常优秀的网络协议,但是对于应用层、表示层和会话层,一般这三个层次被统一称为应用层,原因大概是因为这三个层次如果分开实现会引发其他问题导致问题复杂,这三层一般是由用户实现。

对于物理层我们一般不关心,所以在软件的角度考量,我们认为是OSI四层模型就可以,或者带上物理层称为OSI五层模型。

2.2OSI五层模型

TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。

TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。

  • 物理层: 负责光/电信号的传递方式. 比如现在以太网通用的网线(双绞 线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤, 现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等. 集线器(Hub)工作在物理层。
  • 数据链路层: 负责设备之间的数据帧的传送和识别。例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作。 有以太网、令牌环网,无线LAN等标准。交换机(Switch)工作在数据链路层。
  • 网络层: 负责地址管理和路由选择。例如在IP协议中,通过IP地址来标识一台主机,并通过路由表的方式规划出两台主机之间的数据传输的线路(路由)。路由器(Router)工作在网路层。
  • 传输层: 负责两台主机之间的数据传输。如传输控制协议 (TCP),能够确保数据可靠的从源主机发送到目标主机。
  • 应用层: 负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。我们的网络编程主要就是针对应用层

数据链路层解决数据报局域网转发问题,该层一般集成在网卡驱动程序中实现。

网络层解决主机定位问题。

传输层解决可靠性问题。

应用层解决如何使用数据的问题。

网络层和传输层集成在OS内部实现。

即操作系统源码中包含有实现网络层(IP协议)和传输层(TCP协议)的代码。

这两个层次合起来也称为TCP/IP协议栈

所有的操作系统只要入网,就必须遵守TCP/IP协议栈,保证不同主机之间的数据通信。

虽然操作系统千千万,但是操作系统中TCP/IP协议栈的内容一定是一样的,这也就是为什么不同设备间可以进行通信的缘由。

所以你知道了网络也是OS源码的一部分,所以应用层想要使用网络,就必须存在有系统调用接口,而将这些系统调用进行封装就形成了网络库

三、网络传输基本流程

3.1局域网通信

image-20240606195421370

场景:A设备给C设备发送数据。

实际上,B设备也受到了A设备的数据,但是B设备查看时发现不是发给自己的消息就忽略了,而C设备收到分析后发现是发送给自己的数据。

即局域网中所有主机都受到了消息,经过对比Mac地址后确定通信双方。

区分不同设备的依据是Mac地址,不同设备有不同的Mac地址。

MAC地址(Media Access Control Address),也称为物理地址或硬件地址,是一个用来确认网络设备位置的地址。在OSI模型中,MAC地址位于数据链路层,它使得数据可以从源网络介质发送至目标网络介质,从而进行可靠的数据传输。

MAC地址具有以下特点:

  1. 唯一性:MAC地址是全球唯一的,每个网络设备(如网卡、路由器、交换机等)都有一个唯一的MAC地址。
  2. 固定性:MAC地址是写在网卡上的,一般来说是固化在网卡上的EEPROM(电可擦写可编程只读存储器)中,可通过网卡驱动程序进行配置。
  3. 层次化:MAC地址由六组两个十六进制数(共六个字节)组成,用冒号(:)或者连字符(-)分隔。前三个字节称为组织唯一标识符(OUI),用来标识厂商或组织;后三个字节由厂商自行分配,标识网络设备。

在发送数据和接收数据的过程中,可能会发生数据碰撞(一个局域网就是一个碰撞域),这是因为局域网可以被视为一种临界资源在任何一个时刻,仅允许一个设备向局域网中发送数据。

  • 如果数据链路层是以太网的标准,那么以太网通信标准中(碰撞检测与避免),当设备A发送数据发生数据碰撞后,设备A就停止发送,让出局域网这个临界资源供其他设备使用,其他设备皆是如此,所以以太网的处理方式可以认为是一种乐观的处理机制,因为同一时间有两个设备同时发送数据的概率并不高。
  • 如果数据链路层是令牌环网的标准,那么局域网中会存在一个令牌,谁持有令牌谁可以发送数据,有点类似持有锁。

所以思考下:局域网中,主机越多越好还是越少越好?

当然是越少越好,越少就意味着更小的数据碰撞可能性,当主机数目变多后,会存在有交换机这样的设备来解决处理。

如果要黑掉一个局域网,就不断地向该局域网中发送垃圾数据🤐。

3.2网络传输流程

不跨子网的网络传输

image-20240607095403499

当设备A向设备B发送数据时,报文并不是直接发送过去的,而是需要自顶向下进行封装,即添加每一层的协议报头,然后到达链路层后将封装后的数据报文发送给以太网。

报文=协议报头(快递单)+有效载荷(快递)

报文不断被自顶向下进行交付的过程,需要添加每一层的协议报头,叫做封装

而当报文经过以太网传输到设备B时,需要解析报文,解析报文需要两个步骤:

  1. 将报头和有效载荷分离;
  2. 判断将有效载荷交付给上层的哪一个协议(每层可能存在有不同的协议,比如传输层可能存在有TCP协议和UDP协议)。

这两个步骤被称为:解包与分用

协议报头中包含了类似报头有多长,载荷有多长,上层协议是什么等信息。

通过上述数据传输流程,逻辑上:同层协议都可以认为自己在和对方直接通信

不同协议层对数据包有不同的称谓:

  • 应用层:request/response;
  • 传输层:数据段;
  • 网络层:数据报;
  • 链路层:数据帧。

跨子网的网络传输

image-20240607153816873

当网络传输跨子网时,我们需要路由器来进行转发。

路由器一般至少要横跨两个子网,这句话表明路由器要有两张网卡,有两个mac地址。

报文一般会存在有两套地址:

  1. src(源IP地址)、dst(目的IP地址);
  2. 上一站从哪来(源mac地址)、下一站到哪去(目标mac地址)。

很明显第一套地址基本是不变的,因为数据传输一定有明确的通信双方,这个不变的地址也是路径规划的依据。

存在一些特殊情况,比如在数据传输过程中使用NET技术,其源IP地址会发生变化,但至少目的IP地址是不会变化的。

而第二套地址即mac地址在跨子网的情况下是会变化的,当数据跨网络到达另一个局域网时,其源mac地址和目的mac地址就需要发生变化,因此当数据达到路由器时,路由器会将该数据当中链路层的报头去掉**(解包),然后再重新封装一个报头(重新封装)**,此时该数据的源mac地址和目的mac地址就发生了变化。

而这个过程最重要的是:通过IP协议,我们能够在不同子网间进行通信,无需关注底层的MAC地址变化。IP地址是网络通信的关键,它确保了数据能够准确地从源地址传输到目的地址。

3.3网络中的地址管理

IP地址

  • IP协议有两个版本,IPv4和IPv6。
  • IP地址是在IP协议中,用来标识网络中不同主机的地址;对于IPv4来说,IP地址是一个4字节,32位的整数;
  • 我们通常也使用"点分十进制"的字符串表示IP地址,例如192.168.0.1。用点分割的每一个数字表示一个字节,范围是0 - 255;

MAC地址

  • MAC地址用来识别数据链路层中相连的节点;
  • 长度为48位,及6个字节。一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)
  • 在网卡出厂时就确定了,不能修改。mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址,可能会冲突;也有些网卡支持用户配置mac地址)。

在linux操作系统中,我们可以采用ifconfig -a指令来查看mac地址:
image-20240606201058633

ether的意思:以太,证明我的云服务器数据链路层采用的是以太网标准。


幸福从来不曾远离我们,只是有时候它会用试探的方式,看我们还在不在意。 —朱德庸

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/865221.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kotlin中的数据类型

人不走空 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 目录 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌…

冒泡排序写法

正宗的冒泡排序写法&#xff1a; public class BubbleSort {public static void main(String[] args) {int[] a {4,6,5,24,3,7,1};//初始化一个最大角标变量int n a.length-1;//循环轮次for (int i0;i<n;i){//从后向前开始&#xff0c;相邻元素比较大小&#xff0c;小的元…

Batch Size 不同对evaluation performance的影响

目录 问题描述如果是bugbatch size的设置问题尝试使用GroupNorm解决batchsize不同带来的问题归一化的分类 参考文章 问题描述 深度学习网络训练时&#xff0c;使用较小的batch size训练网络后&#xff0c;如果换用较大的batch size进行evaluation&#xff0c;网络的预测能力会…

Python基础001

Python输出语句 print输出字符串 print("中国四大名著&#xff1a;","西游记|","三国演义|","红楼梦|","水浒传") print(6) print(1 1)Python输入语句 input函数 input() input("我的名字是&#xff1a;") p…

RK3568驱动指南|第十五篇 I2C-第182章 使用Linux中默认的模拟I2C驱动程序

瑞芯微RK3568芯片是一款定位中高端的通用型SOC&#xff0c;采用22nm制程工艺&#xff0c;搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码&#xff0c;支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU&#xff0c;可用于轻量级人工…

线性代数笔记

行列式 求高阶行列式 可以划上三角 上三角 余子式 范德蒙行列式 拉普拉斯公式 行列式行列对换值不变 矩阵 矩阵的运算 同型矩阵加减 对应位置相加减 矩阵的乘法 左边第 i 行 一次 相乘求和 右边 第 j 列 eg 中间相等 两边规模 矩阵的幂运算 解题思路 找规律 数学归纳…

CVE-2024-6387 分析

文章目录 1. 漏洞成因2. 漏洞利用前置知识2.1 相关 SSH 协议报文格式2.2 Glibc 内存分配相关规则 3. POC3.1 堆内存布局3.2 服务端解析数据时间测量3.3 条件竞争3.4 FSOP 4. 相关挑战 原文链接&#xff1a;个人博客 近几天&#xff0c;OpenSSH爆出了一个非常严重的安全漏洞&am…

重生奇迹mu精灵之心怎么搭配

玩家可以通过召唤来召唤多种精灵之心&#xff0c;每种精灵之心增加的属性也不同。精灵之心的作用是为了提升各种各样的属性。我们可以通过召唤获得精灵之心&#xff0c;前面的解锁费用较低&#xff0c;而后面的解锁需要大量的金币来解锁。 召唤精灵之心后&#xff0c;我们可以…

数据结构(JAVA)—代码题

01-数据结构—判断题 02-数据结构—选择题 03 数据结构—多选填空程序填空 ​ 01-顺序表的建立及遍历 import java.util.Iterator; import java.util.LinkedList; import java.util.ListIterator; import java.util.Scanner;public class Main {public static void main(St…

Hadoop-09-HDFS集群 JavaClient 代码上手实战!详细附代码 安装依赖 上传下载文件 扫描列表 PUT GET 进度条显示

章节内容 上一节完成&#xff1a; HDFS的集群启动HDFS的命令行操作HDFS 上传下载移动重命名等操作 背景介绍 这里是三台公网云服务器&#xff0c;每台 2C4G&#xff0c;搭建一个Hadoop的学习环境&#xff0c;供我学习。 之前已经在 VM 虚拟机上搭建过一次&#xff0c;但是没…

基于FPGA的DDS信号发生器

前言 此处仅为基于Vivado实现DDS信号发生器的仿真实现&#xff0c;Vivado的安装请看下面的文章&#xff0c;这里我只是安装了一个标准版本&#xff0c;只要能够仿真波形即可。 FPGA开发Vivado安装教程_vivado安装 csdn-CSDN博客 DDS原理 DDS技术是一种通过数字计算生成波形…

Pandas_DataFrame读写详解:案例解析(第24天)

系列文章目录 一、 读写文件数据 二、df查询数据操作 三、df增加列操作 四、df删除行列操作 五、df数据去重操作 六、df数据修改操作 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 系列文章目录前言一、 读写文…

Web 基础与 HTTP 协议

Web 基础与 HTTP 协议 一、Web 基础1.1域名和 DNS域名的概念Hosts 文件DNS&#xff08;Domain Name System 域名系统&#xff09;域名注册 1.2网页与 HTML网页概述HTML 概述网站和主页Web1.0 与 Web2.0 1.3静态网页与动态网页静态网页动态网页 二、HTTP 协议1.1HTTP 协议概述1.…

秋招——MySQL补充——MySQL是如何加行级锁

文章目录 引言正文什么SQL语句会加行级锁查询操作增加对应的行级锁事务的写法 update和delete修改操作也会增加行级锁 行级锁有哪些种类记录锁间隙锁Next-Key锁 MySQL是如何加行级锁&#xff1f;唯一索引等值查询查询记录是存在的查询记录是不存在的 唯一索引范围查找针对大于或…

《梦醒蝶飞:释放Excel函数与公式的力量》8.4 COUNTIF函数

8.4 COUNTIF函数 COUNTIF函数是Excel中常用的统计函数之一&#xff0c;用于统计指定条件下的单元格数量。通过COUNTIF函数&#xff0c;我们可以轻松地对数据进行条件筛选和统计分析。下面将从函数简介、语法、基本用法、注意事项、高级应用、实战练习和小节几个方面展开介绍。…

爬虫笔记19——代理IP的使用

访问网站时IP被阻止 有些网站会设置特定规则来限制用户的访问&#xff0c;例如频率限制、单一账户多次登录等。 网站为了保护自身安全和用户体验&#xff0c;会设置防御机制&#xff0c;将涉嫌恶意行为的IP地址加入黑名单并屏蔽访问。如果用户在使用网站时违反了这些规则&…

格式化选NTFS还是exFAT 格式化NTFS后Mac不能用怎么办 移动硬盘格式化ntfs和exfat的区别

面对硬盘、U盘或移动硬盘的格式化决策&#xff0c;NTFS与exFAT作为主流的文件系统&#xff0c;用户在选择时可以根据它们的不同特点来选择适用场景。下面我们来看看格式化选NTFS还是exFAT&#xff0c;格式化NTFS后Mac不能用怎么办的相关内容。 一、格式化选NTFS还是exFAT 在数…

十四、【源码】@Autowired、@Value、@Component

源码地址&#xff1a;https://github.com/spring-projects/spring-framework 仓库地址&#xff1a;https://gitcode.net/qq_42665745/spring/-/tree/14-auto-property Autowired、Value、Component 注解注入属性的实现分散在refresh容器的各个方法中&#xff0c;梳理&#x…

docker 搭建 AI大数据模型 --- 使用GPU

docker 搭建 AI大数据模型 — 使用GPU方式 搭建本地大模型&#xff0c;最简单的方法&#xff01;效果直逼GPT 服务器GPU系统HP580 G8P40Rocky9.2 安装程序AnythingLLM前端界面Open WebUIChatOllamaollama 一、AnythingLLM 介绍 AnythingLLM 是 Mintplex Labs Inc. 开发的一…