【Linux网络】网络基础(一)

news2024/11/14 21:41:33

Linux网络基础

  • 1 网络背景
    • 1.1 网络发展
    • 1.2 局域网和广域网
  • 2 认识“协议”
    • 2.1 网络协议分层(高内聚,低耦合思想)
      • 2.1.1 高内聚,低耦合简单理解
      • 2.1.2 协议分层的简单例子
  • 3 OSI七层模型
    • 3.1 TCP/IP五层(或四层)模型
    • 3.2 网络与系统不分家
  • 4 网络传输基本流程
    • 4.1 对封装的理解
    • 4.2 分用的理解
    • 4.3 同一局域网内两台主机进行文件传输
      • 4.3.1局域网通信原理
    • 4.4 同一网段两主机进行数据传输
  • 5 网络中的地址管理

1 网络背景


1.1 网络发展

Internet的最早起源于美国国防部高级研究计划署DARPA(Defence Advanced Research Projects Agency)的前身ARPAnet(阿帕网),该网于1969年投入使用。由此,ARPAnet成为现代计算机网络诞生的标志。
从六十年代起,由ARPA提供经费,联合计算机公司和大学共同研制而发展起来的ARPAnet网络。最初,ARPAnet主要是用于军事研究目的,它主要是基于这样的指导思想:网络必须经受得住故障的考验而维持正常的工作,一旦发生战争,当网络的某一部分因遭受攻击而失去工作能力时,网络的其他部分应能维持正常的通信工作。ARPAnet在技术上的另一个重大贡献是TCP/IP协议簇的开发和利用。作为Internet的早期骨干网,ARPAnet的试验并奠定了Internet存在和发展的基础,较好地解决了异种机网络互联的一系列理论和技术问题。
1983年,ARPAnet分裂为两部分,ARPAnet和纯军事用的MILNET。同时,局域网和广域网的产生和逢勃发展对Internet的进一步发展起了重要的作用。其中最引人注目的是美国国家科学基金会 NSF(National Science Foundation)建立的NSFnet。NSF在全美国建立了按地区划分的计算机广域网并将这些地区网络和超级计算机中心互联起来。

独立模式:早期,计算机之间是相互独立的。
在这里插入图片描述

网络互联:一开始是由于军事需要,将多台计算机连接在一起,完成数据共享。
在这里插入图片描述

1.2 局域网和广域网

局域网(Local Area Network),简称LAN,是指在某一区域内由多台计算机互联成的计算机组。
在这里插入图片描述

广域网(Wide Area Network),简称WAN,是一种跨越大的、地域性的计算机网络的集合。通常跨越省、市,甚至一个国家。广域网包括大大小小不同的子网,子网可以是局域网,也可以是小型的广域网。
在这里插入图片描述

局域网和广域网只是相对来说的。
比如:局域网是在某一区域内的,而广域网要跨越较大的地域,那么如何来界定这个区域呢?例如,一家大型公司的国内总公司位于北京,而分公司遍布全国各地,如果该公司将所有的分公司都通过网络联接在一起,那么一个分公司就是一个局域网,而整个总公司网络就是一个广域网。
如果这个公司在全球范围内每个国家都有相应的总公司,而真正的总公司在美国,前者的就是局域网,后者就是广域网。

2 认识“协议”


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

举个生活中的例子:
现在有一个场景下,只能说汉语。
A同学只会说汉语,B同学只会说英语,C同学也只会说汉语。
那么A同学和B同学之间就无法进行正常的沟通,A同学能和C同学进行沟通。如果一群人都说汉语,那么B同学在这个大环境下只能被迫遵守使用汉语这个约定,否则无法正常进行沟通。

同样地,在计算机网络中,如果有人不遵守相关的协议,那么就无法进行正常通信。

网络协议为计算机网络中进行数据交换而建立的规则、标准或约定的集合。

例如,网络中一个微机用户和一个大型主机的操作员进行通信,由于这两个数据终端所用字符集不同,因此操作员所输入的命令彼此不认识。为了能进行通信,规定每个终端都要将各自字符集中的字符先变换为标准字符集的字符后,才进入网络传送,到达目的终端之后,再变换为该终端字符集的字符。当然,对于不相容终端,除了需变换字符集字符外还需转换其他特性,如显示格式、行长、行数、屏幕滚动方式等也需作相应的变换。

2.1 网络协议分层(高内聚,低耦合思想)

2.1.1 高内聚,低耦合简单理解

先了解一下 什么是高内聚,什么是低耦合。
从字面来看,内聚,是一个模块内部各成分之间相关联程度的度量
耦合,两个或多个事物之间相互影响的程度。
那么高内聚,低耦合简单理解来说就是:
一个模块内部各成分之间相关联程度非常高,而模块与模块之间的影响程度是非常低的。

2.1.2 协议分层的简单例子

来看一个打电话的简单例子
在这里插入图片描述
这里有两个协议,一个是汉语协议,一个是电话机协议。
如果用“高内聚,低耦合思想”去设计的话,就要把它们分为两个模块,一个模块是“语言层”,一个模块是“通信设备层”。
分层的好处是便于封装,封装了语言层,那么只需要提供相应的接口给用户使用即可。封装了通信设备层,也同理。
每一层都只关注自己同层的功能,只使用下层的接口,任何一层出现问题,都不会直接影响另一层,减少后期开发者的维护成本。
从逻辑上来讲每层之间是直接在和同层之间进行通信的。
但是从物理上来讲,需要用到一方需要从上层传到底层,再由底层传到另一方的底层,另一方的底层再从下往上接收信息。

下图展示了当一层协议发生变化时,不会影响到下一层
在这里插入图片描述

3 OSI七层模型


OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,
是一个逻辑上的定义和规范;

把网络从逻辑上分为了7层. 每一层都有相关、相对应的物理设备,比如路由器,交换机;
OSI七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输;

它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整. 通过七 个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯;

但是, 它既复杂又不实用; 所以我们按照TCP/IP四层模型来讲解.

在这里插入图片描述
在这里插入图片描述

3.1 TCP/IP五层(或四层)模型

TCP/IP全称是“Transmission Control Protocol/Internet Protocol”,中文意思为“传输控制协议/网际协议”。TCP/IP协议不仅仅指的是TCP和IP两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议簇,只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议。

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

物理层: 负责光/电信号的传递方式. 比如现在以太网通用的网线(双绞 线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤, 现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等,集线器(Hub)工作在物理层.

数据链路层(网卡层): 负责设备之间的数据帧的传送和识别. 例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作. 有以太 网、令牌环网, 无线LAN等标准,网卡层的标准可以不一样。交换机(Switch)工作在数据链路层.

网络层: 负责地址管理和路由选择. 例如在IP协议中, 通过IP地址来标识一台主机, 并通过路由表的方式规划出两台主机之间的数据传输的线路(路由). 路由器(Router)工作在网路层.

传输层: 负责两台主机之间的数据传输. 如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标主机.

应用层: 负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等.
网络编程主要就是针对应用层.

如下图所示:由OSI七层模型简化的TCP/IP五层模型
因为物理层用的比较少,也称为TCP/IP四层模型
在这里插入图片描述

对于一台主机, 它的操作系统内核实现了从传输层到物理层的内容;

对于一台路由器, 它实现了从网络层到物理层;

对于一台交换机, 它实现了从数据链路层到物理层;

对于集线器, 它只实现了物理层;
但是并不绝对. 很多交换机也实现了网络层的转发; 很多路由器也实现了部分传输层的内容(比如端口转发);

3.2 网络与系统不分家

操作系统包含了进程管理,文件系统,内存管理,驱动管理。教科书或者教学过程中,把网络和系统分开了。其实不应该分开,因为整个网络协议栈中最核心的部分(传输层和网络层)是属于操作系统层面的,由于Linux下一切皆文件,网络协议是隶属于的文件系统中的,所以网络与系统是不分家的。
但是操作系统可以有很多类型,处理文件系统的方案不同,而操作系统中的网络协议只能有一种,这也就是要分开教学的原因。

TCP/IP这个名称的由来也是因为网络协议栈中最核心的部分(传输层和网络层)最具有代表性的协议是TCP和IP。

4 网络传输基本流程


在整个TCP/IP模型中,每一层发送的数据包由数据和协议组成。
协议叫做报头,数据叫做有效载荷。
数据包=报头+有效载荷

发送数据,每一层都要对接收到的数据进行添加报头,这一行为叫做封装。
接收数据,每一层需要对接收到的数据进行报头和数据的分离,这一行为叫做分用。

不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链 路层叫做帧(frame).

应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装 (Encapsulation).

首部信息中包含了一些类似于首部有多长, 载荷(payload)有多长, 上层协议是什么等信息.

数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部, 根据首部中的 “上层协议 字段” 将数据交给对应的上层协议处理.

4.1 对封装的理解

下图是数据封装过程:
在这里插入图片描述

封装:从应用层到物理层,每一层都要在上数据加上数据报头
数据报头中包含了报头多长,载荷有多长,上层协议是什么等信息,方便接收方解包。

4.2 分用的理解

下图是分用的过程:
在这里插入图片描述

分用:封装的逆过程,从物理层到应用层,按照协议解包后,再发给上层对应的协议。上层协议很多,要用对应的协议进行解包。

4.3 同一局域网内两台主机进行文件传输

4.3.1局域网通信原理

局域网中所有主机都可以通讯,一个主机发数据,所有主机都能收到。在链路层,有一个mac地址,用来唯一标识一个网卡。

怎么实现定位?

在链路层会将目标主机的mac地址添加在报头中。
发送的数据每一台主机都能收到,当主机收到数据,会进行解包,在链路层会分析报头的mac地址,是否与当前主机的mac地址匹配。不匹配的主机将数据丢弃,匹配的主机会继续往上解包数据。

局域网通讯原理

经过一层,都会要给数据加上报头,最终发送出数据。在局域网中的数据都能收到数据,收到数据的主机会在链路层分析报头是否与当前主机mac地址匹配,不匹配将数据丢弃,匹配继续向上解包,每次向上发送数据要确定是发送给哪个协议。最终会在应用层收到最终的数据。

如果多台主机同时往局域网中发送数据时,会发生数据碰撞,会导致数据变成垃圾数据,导致没法进行通信。在链路层会检测数据碰撞的垃圾数据,然后会让源主机重发数据。在计算机中有一种算法可以避免冲突。
广播:mac地址设为全1,所有主机都匹配。

在这里插入图片描述

在这里插入图片描述

4.4 同一网段两主机进行数据传输

跨网段的主机的文件传输. 数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器。
在这里插入图片描述
路由器横跨两个局域网,是两个局域网的主机。 于是路由器可以收到一个局域网的数据,再向另外一个局域网发送数据。
在这里插入图片描述

5 网络中的地址管理

认识IP地址

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命令来查看
在这里插入图片描述

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

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

相关文章

前端LayUI框架快速上手实现登入注册

目录 一、Layui简介 1. 什么是LayUI 2. LayUI的特点 二、LayUI入门 1. LayUI下载 2. LayUI入门使用 1. 在web项目中导入LayUI文件中的layui文件 2. 在JSP页面引入css、js文件 3. 制作一个简单的猜字游戏 4.效果展示 三、Layui实现简单登入功能 环境搭建 一、Layui简…

spring boot+MySQL实现班级综合测评管理系统

随着电子技术的普及和快速发展,线上管理系统被广泛的使用,有很多事业单位和商业机构都在实现电子信息化管理,班级综合测评管理也不例外,由比较传统的人工管理转向了电子化、信息化、系统化的管理。 传统的班级综合测评管理系统&am…

运维工具的学习(1)--Curl

1.1 curl简介 ​Curl是一个非常实用的、用来与服务器之间传输数据的工具;支持的协议包括 (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET and TFTP),curl设计为无用…

Kafka入门,offset的默认维护位置(二十一)

offset的默认维护位置 0.9版本之前:consumer默认将offset保持在zookeeper中 从0.9版本开始,consumer默认将offset保存在kafka一个内置的topic中,该topic为__consumer_offsets __consumer_offsets 主题里面采用key和value方式存储数据&#x…

【谷粒学院】NUXT框架

一、服务端渲染技术NUXT 1、什么是服务端渲染 服务端渲染又称SSR (Server Side Render)是在服务端完成页面的内容,而不是在客户端通过AJAX获取数据。 服务器端渲染(SSR)的优势主要在于:更好的 SEO,由于搜索引擎爬虫抓取工具可以直接查看完全…

【分布式应用】ELK 企业级日志分析系统

目录 一、ELK概述1.1、ELK 简介1.2 为什么要使用 ELK1.3完整日志系统基本特征1.4 ELK 的工作原理 二、ELK Elasticsearch 集群部署2.1环境准备2.2.部署 Elasticsearch 软件2.3安装 Elasticsearch-head 插件(1)编译安装 node(2&…

任务六:LTE-Advanced 关键技术

LTE-Advanced 关键技术 一、载波聚合(Carrier aggregation,CA)二、多天线增强(Enhanced Multiple Antenna Transmission)1、上行多天线增强2、下行多天线增强。 三、协作多点传输(Coordinated Multiple Poi…

buu刷题Reverse总结

[FlareOn1]Bob Doge 是一个C#编写的程序,在dnspy中打开,找到主函数,可以看到大致逻辑 不知道dat_secret的值,动态调试看看 DnSpy动态调试: 在主函数中添加断点,调试,因为本题的fag形式为&…

spring 自带的校验框架使用

引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId></dependency>编写规则 开启校验

springboot+mysql财务管理系统

财务管理系统的开发运用java技术、springboot框架&#xff0c;MIS的总体思想&#xff0c;以及Mysql等技术的支持下共同完成了该系统的开发&#xff0c;实现了财务管理的信息化&#xff0c;使员工体验到更优秀的财务管理&#xff0c;管理员管理操作将更加方便&#xff0c;实现目…

消息队列篇面试题

一、MQ基础 1.1、为什么使用MQ&#xff1f;MQ的优点 简答 异步处理 - 相比于传统的串行、并行方式&#xff0c;提高了系统吞吐量。 应用解耦 - 系统间通过消息通信&#xff0c;不用关心其他系统的处理。 流量削锋 - 可以通过消息队列长度控制请求量&#xff1b;可以缓解短时间…

(vue)vue项目实现语音播报

(vue)vue项目实现语音播报 解决参考1&#xff1a; 在 Vue 项目中&#xff0c;你可以使用 Web Speech API 中的 SpeechSynthesis 接口来实现文本内容的自动朗读。下面是一个示例&#xff1a; 1.在 Vue 组件的模板中添加一个按钮&#xff0c;用于触发朗读&#xff1a; <templa…

Appium+python自动化(二)- 环境搭建—下(超详解)

简介 上一篇android测试开发环境已经准备好&#xff0c; 那么接下来就是appium的环境安装和搭建了。 环境装好后&#xff0c;可以用真机连电脑&#xff0c;也可以用android-sdk里面的模拟器&#xff08;当然这个模拟器不是很好用&#xff09;&#xff0c;我一般喜欢真机&#…

【QT】——布局

目录 1.在UI窗口中布局 2.API设置布局 2.1 QLayout 2.2 QHBoxLayout 2.3 QVBoxLayout 2.4 QGirdLayout 注意 示例 Qt 窗口布局是指将多个子窗口按照某种排列方式将其全部展示到对应的父窗口中的一种处理方式。在 Qt 中常用的布局样式有三种&#xff0c;分别是&#xff1…

CRM 软件如何帮助企业改善营销活动?

一场富有成效的营销活动&#xff0c;是在正确的时间将正确的信息传递到正确的受众面前。为此&#xff0c;你必须充分了解对潜在客户和现有客户的需求&#xff0c;然后创建满足这些需求的营销活动。 CRM 软件和工具可以帮助营销团队收集和分析受众数据&#xff0c;以建立更有效的…

如何在Windows的优化驱动器工具中优化驱动器

​优化硬盘是提高电脑性能的最佳方法之一。Windows 包括一些功能,可以帮助优化电脑目前使用的不同类型的驱动器。无论你的电脑使用哪种类型的驱动器,Windows 都会自动选择适合你的驱动器的优化。 默认情况下,优化驱动器(以前称为磁盘碎片整理程序)会在自动维护中设置的时…

6.2.3 网络基本服务---文件传输协议(FTP)

6.2.3 网络基本服务—文件传输协议&#xff08;FTP&#xff09; FTP&#xff08;File Transfer Protocol&#xff09;是Internet上使用最为广泛的文件传送协议&#xff0c;FTP提供交互式的访问&#xff0c;允许客户上传文件到服务器或者从服务器下载文件&#xff0c;FTP屏蔽了…

Hive(19):DML之Insert插入数据

1 背景:RDBMS中insert使用(insert+values) 在MySQL这样的RDBMS中,通常是insert+values的方式来向表插入数据,并且速度很快。这也是RDBMS中插入数据的核心方式。 INSERT INTO table_name ( field1, field2,...fieldN ) VALUES ( value1, value2,...valueN ); 假如说对Hiv…

朝花夕拾 - 编程马拉松!Coding 40h,着手 AI 展望未来

眼看时间已过半&#xff0c;回忆唏嘘难忘怀。 Hello 大家好&#xff0c;我是爱折腾的前端工程师 jsliang~ 2023 过得很快&#xff0c;眼瞅着加加班已去大半年&#xff0c;一边恨自己没赶上今年大热门&#xff0c;一边蒙头睡觉恢复体力并感叹精神不如初。 在我以为潮流箭步离我而…

连通域与相距变换

1、连通域 //连通域 int test1() {//对图像进行距离变换Mat img imread("F:/testMap/rice.png");if (img.empty()){cout << "请确认图像文件名称是否正确" << endl;return -1;}Mat rice, riceBW;//将图像转成二值图像&#xff0c;用于统计连通…