【网络】网络基础

目录

一、前言

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.xdnf.cn/news/1421350.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

IPD推行成功的核心要素(四)IPD究竟分几期做更合适?

集成产品开发 IPD体系(Integrated Product Developm e nt)是产品创新型企业关于产品开发(从概念到产品开发、发布直至退市的全过程)的一种理念与方法。IPD体系强调以市场需求作为产品开发的驱动力,将产品开发作为一项投…

笔记-跨域方式实现原理

websocket Websocket是HTML5的一个持久化的协议,它实现了浏览器与服务器的全双工通信,同时也是跨域的一种解决方案。WebSocket和HTTP都是应用层协议,都基于 TCP 协议。但是 WebSocket 是一种双向通信协议,在建立连接之后&#xff…

ICLR 2024落幕,一文了解ICLR + 历年(2017-2024) 论文整理(含源码!)

来源: AINLPer公众号(每日干货分享!!) 编辑: ShuYini 校稿: ShuYini 时间: 2024-5-13 引言 最近这几天,相信大家都或多或少的刷到了ICLR 2024这个关键词。对于刚刚入门的小伙伴或对此并没有深入的理解,只知…

ae如何导出mp4格式?图文教程,手把手教您搞定

在创作精彩的视频内容后,将其成功导出为通用的MP4格式是确保作品在不同平台上流畅播放的重要一环。Adobe After Effects作为一款专业的视频后期制作工具,提供了丰富的功能来实现这一目标。在本文中,我们将通过图文教程,手把手地向…

云相册APP

简介 一款用于云存照片的app,支持批量上传和下载照片。 平台技术 Android客户端:Kotlin 协程 Retrofit Server服务后端:Java SpringBoot 部署云服务器:华为云耀云服务器L实例 下载网址 小鲸鱼相册 Ps: 由于网站域名备案审核…

零成本实现网站HTTPS访问的全面指南

在当今的互联网环境中,HTTPS已经成为网站安全的标配,它不仅能够保护用户数据免受监听和篡改,还能提升网站在搜索引擎中的排名。幸运的是,即使预算有限,通过一些免费的资源和服务,你同样可以为你的网站启用H…

css伪元素实现三角形箭头和空心箭头

使用css实现三角形箭头和空心箭头&#xff0c; 常用的使用场景&#xff1a;展开收起&#xff0c;下拉菜单 1.向下实心三角形&#xff1a; html <span class"arrow"></span>css .arrow {position: relative;}.arrow:after {position: absolute;top: 5…

Redis之主从复制详解

主从复制 概念 主从复制&#xff0c;是指将一台Redis服务器的数据&#xff0c;复制到其他的Redis服务器。前者称为主节点&#xff08;master&#xff09;&#xff0c;后者称之为从节点&#xff08;slave&#xff09;&#xff1b;数据的复制是单向的&#xff0c;只能由主节点到…

【word技巧】word文档打开之后,有些地方不能编辑,什么原因?

有些朋友打开word文档之后发现&#xff0c;文档内容中有些地方是无法编辑的&#xff0c;这是什么原因导致的&#xff1f;今天我们一起来学习一下&#xff01; 原因&#xff1a; Word文档部分内容无法编辑的原因是因为word设置了限制编辑&#xff0c;有些朋友是否会有疑问&…

图文详解:synchronized关键字 及其底层原理

目录 一.线程安全问题 二.synchronized关键字 ▐ synchronized图解 ▐ 可重入锁及图解 ▐ synchronized用于方法上 三.Java标准库中synchronized的使用 四.synchronized的底层实现原理 一.线程安全问题 线程安全是指在多线程环境下&#xff0c;对共享资源的访问不会导致…

Python构建网络控制和管理应用程库之使用详解

概要 POX是一种广泛使用的Python开发工具,主要用于构建网络控制和管理应用程序。作为一个灵活的软件平台,POX支持快速开发网络通信协议,尤其是在软件定义网络(SDN)领域中得到了广泛应用。本文将全面介绍POX库的安装、主要特性、基本与高级功能,并结合实际应用场景,展示…

AVL树!

文章目录 1.AVL树的概念2.AVL树的插入和旋转3.AVL树的旋转3.1旋转的底层&#xff1a;3.2 右旋转3.3 左旋转3.4 双旋 4.AVL树的底层 1.AVL树的概念 当向二叉搜索树中插入新结点后&#xff0c;如果能保证每个结点的左右子树高度之差的绝对值不超过1(需要对树中的结点进行调整)&a…

字符串取第一个空格之后的所有的值字符串取第一个空格之后的第二个元素的值,不要后面的值

当我们后端返回值可能存在某些特定的值或标识导致返回数据不固定且是空格分割时&#xff0c;我们想取出返回字符串中的某个值&#xff0c;就可以参考下面对这个字符串进行操作提取&#xff0c;当然&#xff0c;如果是别的符号分割开的把下面的空格替换即可 1、字符串取第一个空…

根据特定条件在列表中加一列操作,符合此条件时此列才会展示

我们想要列表中有一列数据在A环境打开是显示的&#xff0c;在B环境打开则不显示&#xff0c;这里B环境表示为默认环境 1、不能直接用环境判断加在列表的前面&#xff0c;否则其他环境会出现空格情况 constructor(props) {super(props)const columns [{ title: 姓名, dataInd…

在全志H616核桃派开发板上进行PyQt5的代码编写和运行

核桃派本地 在上一节我们通过Qt Designer设计了ui窗口并转换成了Python代码&#xff0c;由于是Python编程&#xff0c;因此我们可以在核桃派开发板打开Python代码进行编程。 在核桃派上推荐使用Thonny来打开编写Python文件, 使用请参考&#xff1a;Thonny IDE。 打开上一节生…

Java并发编程:Thread原理解析

文章目录 一、java中的thread和操作系统中的Thread对应关系 一、java中的thread和操作系统中的Thread对应关系 在java中用户线程和内核线程是1:1的形式&#xff1a; 其中java层面创建的线程为用户线程&#xff0c;其对应的底层线程为内核线程。 Java生成线程的流程如下&#…

【JavaEE】【1.3 Servlet】1.3.3 HttpServletRequest的应用

Http报文结构 请求报文 HTTP的请求报文由四部分组成&#xff08;请求行请求头部空行请求体&#xff09;&#xff1a; 请求行&#xff08;Request Line&#xff09;①②③&#xff1a; ① 请求方法&#xff08;Method&#xff09;&#xff1a;要执行的HTTP操作&#xff0c;…

el-menu 保持展开点击不收缩 默认选择第一个菜单

<el-menu:default-openeds"[/system]" 数组 默认展开第一个:collapse"isCollapse"close"handleClose" 点击关闭的时候 让菜单打开 就可以实现保持展开效果ref"menus":unique-opened"true":active-text-color"se…

JVM 类的加载器分类与测试

文章目录 1. 类加载器父类说明2. 子父类加载器关系3. 具体类的加载器介绍3.1 引导类加载器3.2 扩展类加载器3.3 系统类加载器 4. 用户自定义类加载器5. 测试不同的类加载器 1. 类加载器父类说明 JVM 支持两种类型的类加载器&#xff0c;分别为引导类加载器&#xff08;Bootstr…

docker(四):数据卷

数据卷 卷的设计目的就是数据的持久化&#xff0c;完全独立于容器的生存周期&#xff0c;因此Docker不会在容器删除时删除其挂载的数据卷。 1、docker run docker run -it --privilegedtrue -v /宿主机绝对路径目录:/容器内目录 镜像名2、挂载注意事项 --privilegedtru…