【网络】网络基础

目录

一、前言

1.计算机网络背景

2.认识协议 

 二、网络协议初识

 1.OSI七层模型

2.TCP/IP五层(或四层)模型

3.网络传输基本流程

4.数据包封装和分用

5.网络中的地址管理

1.IP地址

2.MAC地址


一、前言

1.计算机网络背景

网络之前,我们所有在电脑上的操作都是单机的。

计算机最初被发明出来是干什么的呢?最初计算机被发明是用来计算导弹轨迹的,而这项任务通常是由一个实验室来完成,一定会有多个人,可能会有多台电脑,每台电脑最初都是独立的,每一台计算机的任务都是对数据进行加工和处理。但是每台电脑的任务通常是不一样的,为了效率问题,通过在多台电脑同时部署不同的任务,但是最终都是都是去回收多台电脑的加工处理后的数据,一个电脑的任务有可能还需另一台电脑的数据。

所以有人发明了软盘,当一台电脑处理完成后,将数据拷贝到软盘后,再由人将这个软盘线下交给其他人/电脑,以达到传输数据,但是这种方法效率太低,就是太慢了。

所以将多台电脑连接起来,以达到数据的传输,这是计算机发展的趋势。在此情形下,网络的产生是必然的,因为我们最终还是要方便的拿到这些电脑的数据来进行决策。

独立模式: 计算机之间相互独立;

网络互联: 多台计算机连接在一起,完成数据共享;

在此情形下,实验室中,每个人都有着连接其它电脑的需求。不同实验室中,每个实验室也有着连接其它实验室的需求。历史同样会进行选择,让不同子网进行连接,但是这之间当然会出现一些问题,比如数据的传输问题,是谁传输给谁的,在这些个网络中。还有传输距离问题,信息随距离衰减怎么办。有了网络的发展,新设备必然也会诞生,比如路由器,交换机。

局域网LAN: 计算机数量更多了, 通过交换机和路由器连接在一起; 

广域网WAN: 将远隔千里的计算机都连在一起;

所谓 "局域网" 和 "广域网" 只是一个相对的概念。比如我国的广域网,就是一个大一点的局域网。

2.认识协议 

不多废话,用现阶段最简单的话来说,"协议" 是一种约定。

计算机之间的传输媒介是光信号和电信号. 通过 "频率" 和 "强弱" 来表示 0 和 1 这样的信息. 要想传递各种不同的信息, 就需要约定好双方的数据格式 。

但是只要通信的两台主机, 约定好协议就可以了么?

比如

  • 计算机生产厂商有很多;
  • 计算机操作系统, 也有很多;
  • 计算机网络硬件设备, 还是有很多;
  • 如何让这些不同厂商之间生产的计算机能够相互顺畅的通信? 就需要有人站出来, 约定一个共同的标准, 大家都来遵守, 这就是 网络协议;

标准不等于协议,协议只能说明是标准的一个子集

 二、网络协议初识

举例,在这个例子中, 我们的协议只有两层; 但是实际的网络通信会更加复杂, 需要分更多的层次。

在逻辑上,我们认为人和人在通话,电话和电话在通信。 

每个层内的交互,在上层来说,是透明的,也就是说上层不管你怎么交互。照样也能完成工作,这就是高内聚,低耦合。任何一层出现了问题,只需解决这一层的问题。分层带来的好处,就是好维护

高内聚,低耦合带来的好处就是减少了维护成本。

 1.OSI七层模型

  • OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型, 是一个逻辑上的定义和规范;
  • 把网络从逻辑上分为了7层. 每一层都有相关、相对应的物理设备,比如路由器,交换机;
  • OSI 七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输;
  • 它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整. 通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯;
  • 但是, 它既复杂又不实用; 所以我们主要学习TCP/IP四层模型. 

2.TCP/IP五层(或四层)模型

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

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

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

 物理层我们考虑的比较少. 因此很多时候也可以称为 TCP/IP四层模型.

3.网络传输基本流程

同一个网段内的两台主机进行文件传输.

发消息时,每次都要添加报头

报文 = 报头 + 有效载荷

网络通信的本质,就是贯穿协议栈的过程。

网络通信的过程,本质就是不断地封装和解包的过程

以太网通信

每台主机在局域网上,都有自己唯一的一个“标识”。

假如局域网上一根网线上有10台电脑连接,由于每台电脑都有自己唯一的MAC物理地址,所以当我们向另一台电脑传递信息时,只需广播发送自己的MAC地址和目标的MAC地址,目标地址不是自己的会丢掉该信息,而是目标信息的电脑则会收到该信息,并且进行处理。

由此得之,搞掉一个局域网的方法就是不断的向该网线上丢垃圾信息,与正常的信息进行消息碰撞,就可以使这个局域网上的电脑都收不到有效消息

由此,每台电脑都要有自己的碰撞避免的算法,

交换机有个重要作用,就是划分碰撞域

局域网可以看作多台主机所共享的临界资源,不过访问时不是加锁,而是重新发送。

令牌相当于系统里的锁。

ip地址,尤其是目的IP,一般都是不会改变的,协助我们进行路径选择

max地址,出局域网后,源和目的都要被丢弃,让路由器重新选择。

4.数据包封装和分用

  • 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链路层叫做帧(frame).
  • 应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装 (Encapsulation).
  • 首部信息中包含了一些类似于首部有多长, 载荷(payload)有多长, 上层协议是什么等信息.
  • 数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部, 根据首部中的 "上层协议字段" 将数据交给对应的上层协议处理. 
  • 我们要开始重新在不同的阶段命名,在应用层数据包叫请求和响应,在传输层叫做数据断或数据报,在网络层叫数据报,在数据链路层叫做数据帧。

5.网络中的地址管理

1.IP地址

IP协议有两个版本, IPv4和IPv6. 接下来,凡是提到IP协议, 没有特殊说明的, 默认都是指IPv4

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

2.MAC地址

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

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

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

相关文章

Spring Boot数据映射利器:MapperStruct vs. BeanUtils.copyProperties 一较高下

Spring Boot数据映射利器:MapperStruct vs. BeanUtils.copyProperties 一较高下 在 Spring Boot 应用程序中,常常需要在不同的 Java 对象之间进行数据拷贝。这种拷贝操作在开发中非常常见,比如将 DTO(Data Transfer Object&#x…

5. 简单说一说uniapp中的语法吧

前言 如果你 知道Vue3并且对Vue3的语法有一定了解,请跳过这一章,由于后续项目主要是基于Vue3TypeScript,因此提前简单概述一些Vue3的基础语法~ 本文的目的是 期望通过对本文的阅读后能对Vue3的每个语法有一个简单的印象,至少要知…

nacos配置中心

配置不成功的时候需要放开服务器的8848端口号不然报错 父工程 <!-- springCloud --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.ver…

Flink面试整理-Flink的监控和日志收集

在 Apache Flink 中,监控和日志收集对于维护系统的健康、性能优化和故障诊断非常重要。以下是 Flink 监控和日志收集的几个关键方面: 监控 Metrics System:Flink 提供了一个全面的指标(Metrics)系统,可以收集和报告各种性能指标,如吞吐量、延迟、资源利用率等。支持的指…

二叉搜索数使用,底层原理及代码实现

1:二叉搜索树的定义 二叉搜索树的底层是一个二叉链表 二叉搜索树又称二叉排序树&#xff0c;它或者是一棵空树 &#xff0c;或者是具有以下性质的二叉树 : 若它的左子树不为空&#xff0c;则左子树上所有节点的值都小于根节点的值 若它的右子树不为空&#xff0c;则右子树上所…

Redis-配置文件详解

Redis配置文件详解 units单位 配置大小单位&#xff0c;开头定义基本度量单位&#xff0c;只支持bytes&#xff0c;大小写不敏感。 INCLUDES Redis只有一个配置文件&#xff0c;如果多个人进行开发维护&#xff0c;那么就需要多个这样的配置文件&#xff0c;这时候多个配置 文…

docker安装向量数据库milvus

Miluvs Milvus 向量数据库能够帮助用户轻松应对海量非结构化数据(图片 / 视频 / 语音 / 文本)检索。 单节点 Milvus 可以在秒内完成十亿级的向量搜索,分布式架构亦能满足用户的水平扩展需求。 Milvus 向量数据库的应用场景包括:互联网娱乐(图片搜索 / 视频搜索)、新零售…

【K8s】Kubectl 常用命令梳理

Kubectl常用命令梳理 下面包含大致涵盖命令只需要替换对应的Pod \ NameSpace 查看 命名空间 是 ’worktest2‘ 下 名字包括 ’todo‘的所有 Pod kubectl -n worktest2 get pod|grep todo查看 所有命名空间下 名字包括 ’todo‘的所有 Pod kubectl get pods --all-namespace…

MATLAB基础—系统环境

1.MATLAB操作界面的组成 (1)MATLAB主窗口&#xff08;红色&#xff09; MATLAB主窗口是MATLAB的程序窗口&#xff0c;他除了嵌入一功能窗口外&#xff0c;主要包括功能区(1)&#xff0c;快速访问工具栏(2)&#xff0c;和当前文件夹工具栏(3)。 在功能区提供了三个选项卡&#…

浅析vue3自定义指令

vue3中可以像下面这样使用自定义指令。 这里我们只是定义了一个vFoucs变量&#xff0c;vue怎么知道这是一个指令呢&#xff1f; 这是因为约定大于配置&#xff0c;vue3中有这样一个约定&#xff08;截图来自官方文档&#xff09;&#xff1a; 注意这里说的是驼峰命令&#x…

机器学习案例:加州房产价格(一)

参考链接&#xff1a;https://hands1ml.apachecn.org/2/ 假设你是被一家地产公司雇佣的数据科学家&#xff0c;现在需要做一些工作。 公司所给的数据集是StatLib 的加州房产价格数据集。这个数据集是基于 1990 年加州普查的数据。数据已经有点老&#xff0c;但它有许多优点&…

查看ubuntu当前路径的剩余存储空间

要查看Ubuntu当前路径所在磁盘分区的剩余存储空间&#xff0c;应该使用df命令&#xff0c;而不是du命令&#xff0c;因为df命令能显示磁盘分区的使用情况&#xff0c;包括总容量、已用空间和可用空间。为了使输出更易于阅读&#xff0c;可以加上-h选项。如果你还想知道特定挂载…

Mysql中的DML

insert语法 指定字段添加数据&#xff1a;insert into 表名&#xff08;字段名1&#xff0c;字段名 2&#xff09;values &#xff08;值1&#xff0c;值2&#xff09; 全部字段添加数据&#xff1a;insert into 表名 values &#xff08;值1&#xff0c;值2&#xff0c;...&…

doc 链接

阿豪 Android Framework 坂田民工framework Android Framework_坂田民工的博客-CSDN博客 Harmony HarmonyOS第一课|应用开发视频教程学习|HarmonyOS应用开发官网 zh-cn/release-notes/OpenHarmony-v4.0-release.md OpenHarmony/docs - Gitee.com yi诺千金 yi诺千金_An…

【三十一】springboot+easyExcel实现多文件导出压缩包

互相交流入口地址 整体目录&#xff1a; 【一】springboot整合swagger 【二】springboot整合自定义swagger 【三】springboot整合token 【四】springboot整合mybatis-plus 【五】springboot整合mybatis-plus 【六】springboot整合redis 【七】springboot整合AOP实现日志操作 【…

【数字IC设计】芯片设计中的RDC

RDC问题定义 在芯片设计中,RDC是reset domain crossing 的缩写,类似于CDC(clock domain crossing),由于现在SOC芯片是有很多ECUs组成,为了使整个系统能够快速从复位中恢复, 用户希望SOC里面每个ECU模块都可以有自己独立的异步复位信号,这样可以在出问题的时候只复位有错…

【计算机网络篇】数据链路层(8)共享式以太网的退避算法和信道利用率

文章目录 &#x1f6f8;共享式以太网的退避算法&#x1f95a;截断二进制指数算法 &#x1f354;共享式以太网的信道利用率 &#x1f6f8;共享式以太网的退避算法 在使用CSMA/CD协议的共享总线以太网中&#xff0c;正在发送帧的站点一边发送帧一边检测碰撞&#xff0c;当检测到…

1080:余数相同问题

1080&#xff1a;余数相同问题 时间限制: 1000 ms 内存限制: 65536 KB 提交数:74558 通过数: 49412 【题目描述】 已知三个正整数a&#xff0c;b&#xff0c;c。现有一个大于1的整数x&#xff0c;将其作为除数分别除a&#xff0c;b&#xff0c;c&#xff0c;得到的…

【Cesium】Cesium核心类、坐标系与着色器简介

核心类&#xff1a; Viewer: Viewer 是 Cesium 中最基本的视图容器&#xff0c;用于显示地球、地图、三维场景等。它提供了创建和管理场景的功能&#xff0c;可以配置视图的各种属性和行为。 Scene: Scene 是 Cesium 中的核心类之一&#xff0c;代表了一个三维场景&#xff0c…

react如何拿输入框的值

在React中获取输入框的值可以通过以下几个步骤实现&#xff1a; 首先&#xff0c;在React组件的状态中定义一个变量来存储输入框的值。可以使用useState钩子函数来创建一个状态变量。 在输入框的onChange事件中&#xff0c;通过事件对象获取输入框的值&#xff0c;并将其更新到…