【网络】网络基础(一)

网络基础(一)

文章目录

  • 一、计算机网络背景
    • 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.rhkb.cn/news/367256.html

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

相关文章

使用conda安装第三方包报错CondaSSLError

使用conda安装第三方包报错CondaSSLError 1. 报错信息2. 解决方法 1. 报错信息 错误描述:刚刚下载的 anaconda 在使用 conda 安装 pytorch 时报错(CondaSSLError: OpenSSL appears to be unavailable on this machine. OpenSSL is required to download …

LeetCode题练习与总结:二叉树的后序遍历--145

一、题目描述 给你一棵二叉树的根节点 root ,返回其节点值的 后序遍历 。 示例 1: 输入:root [1,null,2,3] 输出:[3,2,1]示例 2: 输入:root [] 输出:[]示例 3: 输入&#xff1a…

2002-2022年各省老年人口抚养比(人口抽样调查)数据

2002-2022年各省老年人口抚养比(人口抽样调查)数据 1、时间:2002-2022年 2、指标:老年人口抚养比 3、来源:国家统计局、统计年鉴 4、范围:31省, 5、缺失情况:无缺失,其中2010年的值取2009、…

Swift 中强大的 Key Paths(键路径)机制趣谈(下)

概览 在上一篇博文 Swift 中强大的 Key Paths(键路径)机制趣谈(上)中,我们介绍了 Swift 语言中键路径机制的基础知识,并举了若干例子讨论了它的一些用武之地。 而在本文中我们将再接再厉,继续有趣的键路径大冒险,为 KeyPaths 画上一个圆满的句号。 在本篇博文中,您将…

JavaScript之深入对象,详细讲讲构造函数与常见内置构造函数

前言:哈喽,大家好,我是前端菜鸟的自我修养!今天给大家详细讲讲构造函数与常见内置构造函数,并提供具体代码帮助大家深入理解,彻底掌握!原创不易,如果能帮助到带大家,欢迎…

笔记:Git学习之应用场景和使用经验

目标:整理Git工具的应用场景和使用经验 一、开发环境 Git是代码版本控制工具;Github是代码托管平台。 工具组合:VSCode Git 需要安装的软件:vscode、Git 其中vscode需要安装的插件:GitLens、Git History 二、应用…

Unity编辑器工具---版本控制与自动化打包工具

Unity - 特殊文件夹【作用与是否会被打包到build中】 Unity编辑器工具—版本控制与自动化打包工具: 面板显示:工具包含一个面板,用于展示软件的不同版本信息。版本信息:面板上显示主版本号、当前版本号和子版本号。版本控制功能…

单目行车测距摄像系统(单目测距-行车)

单目行车测距摄像系统是一种利用单个摄像头实现车辆行驶中前方障碍物距离测量的技术。该系统通过计算机视觉算法,能够实时分析摄像头捕捉的图像,精确计算出车辆与前方物体之间的距离,对于自动驾驶、高级驾驶辅助系统(ADAS&#xf…

【探索Linux】P.36(传输层 —— TCP协议段格式)

阅读导航 引言一、TCP段的基本格式二、控制位详细介绍三、16位接收窗口大小⭕窗口大小的作用⭕窗口大小的限制⭕窗口缩放选项⭕窗口大小的更新⭕窗口大小与拥塞控制 四、紧急指针温馨提示 引言 在上一篇文章中,我们深入探讨了一种无连接的UDP协议,它以其…

《新华日报》理论版报刊简介及投稿邮箱

《新华日报》理论版报刊简介及投稿邮箱 《新华日报》是中国共产党在抗日战争时期和解放战争初期创办的大型机关报,1949 年 4 月在南京复刊,1952 年成为中国共产党江苏省委机关报,现为中共江苏省委直属事业单位。 该报纸的理论版(…

记录前端发现问题之 mock接口无返回数据导致所有后续接口调用报错:网络异常

1. 背景 就更新了代码,发现新涉及的页面,切换tab 之后会报错网络异常,再次切换其他没涉及的功能页面,继续报错网络异常 测试环境:纯前端代码,后端是前端mock的数据,仅供demo 2. 问题报错 手动…

开箱机视觉系统大揭秘:如何轻松辨别千差万别的包装?

在现代物流仓储领域,开箱机作为提升作业效率的关键设备,正日益受到行业的重视。而开箱机的视觉系统更是其十分强大,能够准确辨认不同包装,确保物流作业的高效与准确。与星派深入探究一下开箱机视觉系统是如何工作的,以…

女生读中职,选择什么专业最吃香!

自《国家职业教育改革实施方案》颁布实施以来,中国职业教育的改革和发展已取得显著进展。目前,我国已建立起世界上规模最大的职业教育体系,中高职学校每年培养约1000万高素质技术技能人才,职业教育实现了历史性的跨越。对于那些不愿加入“千军万马过独木桥”的高考竞争大军,初中…

Firewalld防火墙基础

Firewalld 支持网络区域所定义的网络连接以及接口安全等级的动态防火墙管理工具 支持IPv4、IPv6防火墙设置以及以太网桥 支持服务或应用程序直接添加防火墙规则接口 拥有两种配置模式 运行时配置:临时生效,一旦重启或者重载即不生效 永久配置&#xff1a…

华三多台交换机堆叠配置(环形组网)

组网架构 配置步骤 SW1的配置: irf member 1 priority 32 设置master的优先级为32 interfacec range Ten-GigabitEthernet1/0/49 to Ten-GigabitEthernet1/0/50 shutdown 关闭上述接口(将其加入到堆叠口之前需要关闭,否则无法加入&a…

机器学习 - 实现KNN对图像有监督学习的 分类算法 (一)【原理】

一、KNN算法介绍: KNN 算法,或者称 k最邻近算法,是 有监督学习 中的 分类算法 。它可以用于分类或回归问题,但它通常用作分类算法。 KNN (K-Nearest Neighbor)算法是机器学习算法中最基础、最简单的算法之一…

“不喝鸡汤 不诉离殇”华火电燃灶用实力引领烹饪灶具发展

在这个快节奏的时代,我们常常被各种厨房电器的鸡汤所包围,并悄悄的告诉我们厨房生活是美好与温暖的,但面对现实中的挑战与困难时,常常表现出选择性失明;那些隐藏在传统厨房烹饪环境下的危机,就像是慢性的毒…

[Python学习篇] Python函数

定义函数 语法:使用关键字 def def 函数名(参数): 代码1 代码2 ...... 调用函数 语法: 函数名(参数) 注意:不同的需求,参数可有可无。在Python中,函数必须先定义后使用 示例: # 定义函数 d…

华为仓颉编程语言

目录 一、引言 二、仓颉编程语言概述 三、技术特征 四、应用场景 五、社区支持 六、结论与展望 一、引言 随着信息技术的快速发展,编程语言作为软件开发的核心工具,其重要性日益凸显。近年来,华为公司投入大量研发资源,成功…