Linux网络基础1

目录

  • 计算机网络背景
  • 协议
  • OSI七层模型
  • TCP/IP五层(四层)模型
  • 网络传输基本流程
  • 以太网通信原理
  • IP地址理解

计算机网络背景

到目前为止,我们之前所有的编程都是单机的,不是多机互联。以前计算机被发明的时候是为了军事用途,计算导弹轨迹等等。在实验室里电脑有很多电脑,一个任务的完成肯定是多人协作完成的,所以每个人处理的数据必然是不同的,而且这些电脑是相互独立的,多台电脑联系起来十分的麻烦,所以网络的产生是必然的事,早期他们用的事软盘进行互联,即a拿到了数据并处理后,将这些数据拷贝到软盘,在将这个软盘交给b,b处理完后又将软盘交给c,这样的效率太慢了
在这里插入图片描述
后来,小松他们三人又添加了一台格外的计算机,专门用来服务的,并将他们所有的电脑用线连接起来,小松处理完数据了交给服务器,然后只用给小松说一声该你了,小松就可以直接操作。此时就已经有了一个网络计算机互联的雏形了。后来随着人类的发展,慢慢的向上面这种小型局域网就越来越多了。后面,什么贝尔实验室,清华大学实验室等也有可能需要展开协作,所以有了这个需求,就逐渐产生了一个区域的子网和另一个区域的子网能够互联接触。
在这里插入图片描述
在一个局域网内一台主机将数据交给交换机,交换机交给另一台主机,如果该数据的目的不再该局域网内,交换机则会交给路由器,让路由器去找。
后来,长距离传输则会产生一个问题,传输的信号是会衰减下来的,所以数据需要经过各种路由器,这样又会产生一个问题,如果正确的导向数据发送到哪个位置,又如何知道这个数据是从哪里来的。所以长距离传输会有各种各样的问题出现。
局域网和广域网的概念没有标准化,所以看情况去理解,比如你家的wifi可以看作局域网,比如你们村的所有网络也是由一个路由器而来的,所以也能看作一个局域网,我们整个中国也可以看作一个局域网,因为访问外网也需要经过路由器

我国的计算机技术还是可以的,有很多自主研发的科技。虽然上世纪我国用算盘打出了原子弹,确实上一代人非常的励志。两弹一星,还有氢弹,卫星呢?这些东西拿算盘打出来吗?这些再用算盘打的话难度太大了。美国人大概在八十年代末把阿帕网的网络技术公开,然后我国九二年就如公网了。不要觉得九二年怎么样,当时马云等你所知道的大部分人都没听过互联网,说明我国看待网络技术比大部分人要早,九二年之后我国就入公网了,当时是拉了一根网线,这网的宽带并不大,主要用户发送邮件,用于学术交流。到了九六年的时候,马云才去了国外在美国见到的互联网,像什么马化腾,网易的老板丁磊,还有搜狐老板张朝阳,现在不是在将张朝阳物理课,还有李彦宏,他们都算是早期听过互联网这个概念的,基本都是九六年到九九年之间,然后陆陆续续开始做互联网公司了。当时国家入网后,有人也开始搞网吧,最早九十年代在咖啡厅里的网吧,一个小时大概是10块、20块,现在这网费放到现在对于普通人来说都算偏贵的,何况九十年代的十块。这就是我们国家入网后,有了很多关于互联网的故事。所以其实我们国家在互联网发展这一块,其实并不比美国人晚,计算机技术虽然比美国人晚了十三年,但网络技术我们一点都没晚,更重要的是我们的网络技术,在互联网应用方面,我国做的是最好的,我们有支付宝,嘀嘀打车,美团,虽然这些互联网公司也被大家吐槽,市面上有人骂,但是不得不承认在互联网应用领域我国一点都不差,并且我国的网络技术上,还有部分内容是遥遥领先的,比如5G,比如无线通信技术,还有ipv6技术。

互联网发展这么快,你总得拉网线、建光纤吧,建服务器、得建机房吧,还要建各种信号塔,这玩意儿在国家层面就必须要有地去建,拉网线搞个路由器交换机,怎样架设个网络,这些都是谁的工作啊?我想告诉大家每个国家都有他自己的叫做电信运营商。像我们中国典型的就是中国联通、中国电信、中国移动,现在包括华为也算是了,现在的华为业务是否广泛了。美国人有高通,欧洲有诺基亚。互联网发展一定是由国家支持的,如果自己这能够赚到钱,这一定有私人企业去弄,他们会花钱去盖基站,但是因为这是亏钱的事,所以最开始的时候运营商不愿意做些事,都是国家政策上的扶持才搞起来的
所以互联网能够快速的发展,是因为大部分稍微靠前点的国家呢。都会有自己的电信业务提供商,都会给自己的内部去建基站,拉网线,做光纤去做这个事情。所以非洲没有,非洲的互联网就是不行吧。中东地区的互联网也不行吧,为什么呢?就是因为他们当地的运营商。可能是因为特殊原因,最后没有办法把这些基站什么东西建起来,所以他们不可能有互联网公司。

那么后面呢关于网络的部分的故事呢还是非常多的。那么后面呢我给大家再慢慢展开。

协议

一台计算机内部本质也是一个小型网络,计算机体系结构中有网络,网络中也有体系结构。长距离传输必然会有很多成本,为了降低成本,所以有了协议的产生,什么叫做协议?协议就是一种约定,下面我来给大家讲个故事,来帮助大家理解什么是协议
在以前,电话费对贫困的家庭来说也算是一笔不小的消费,所以你和你爸约定,电话响一声:代表你平安,电话响两声:表示我没钱了,电话响三声:表示有事情需要和你讲话。
这声响,每一声都有不同的含义,而这个含义不用解释,双方早就已经有了共识。目的:尽可能减少通信成本。
长距离通信会产生以下问题,所以以下每一层都有该层的协议:
1.如何定位主机? -------ip协议
2.你怎么保证数据能准确的到达下一个设备?--------数据链路层
3.如果设备故障数据丢失了怎么办? ------------tcp协议
4.传送数据不是目的,能应用数据才是目的,你怎么处理发来的数据?---------http、https、ftp、smtp协议…
这些问题,不仅发送方有,接收方也同样有

如何具体理解协议是个什么东西呢?在我们收快递的时候,不仅有你要收的东西还会有一个东西—快递单。
在这里插入图片描述在快递员路由快递的时候,和你收快递的时候你都能根据这个快递单判断出这个快递是不是自己的。所以一个物品要被发出去,必须有快递单被包裹起来。这个快递单也叫做协议报头,
那具体用C语言是怎么实现的呢?是用结构体实现的,发送的信息属性填进去,再将你要发的内容给拷贝进来就成为了协议报文

网络是分层的,为什么是分层的?因为能分层,耦合度低,维护成本就会低,每层之间不会相互影响,我坏了不会影响你的操作。如何理解分层呢?给大家举个例子:
我和你打电话的时候,我和你是通过中国话(协议)来交流的,在通讯设备层在用光电信号进行交流,如果是两个外国人用英语(另一种协议)来交流,在通讯设备层并不需要改变该层的协议
在这里插入图片描述

OSI七层模型

具体是如何分层的呢?
因为是协议,需要人制定,所以就有组织站出来定制网络分层,组织叫做OSI,在定制的时候需要考虑诸多问题,而OSI就制定的很好,把网络分为了7层,每一层都有相关、相对应的物理设备,比如路由器、交换机;OSI七层模型是一种框架性的设计方法,其主要功能就是帮助不同类型的主机实现数据传输。它最大的优点是将服务、接口和协议这三个概念明确地区分开来,通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯。
在这里插入图片描述

但是呢,有几层工程实践的时候发现写不到操作系统里面,有两层在操作系统中设计不合适,将三层表示为一层在应用层比较合适,所以就有了TCP/IP五层模型,但我们只讲四层,物理层主要是硬件知识不讲,所以也可以叫TCP/IP四层模型

TCP/IP五层(四层)模型

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

网络协议栈和我们之前学的操作系统有什么关系?
在这里插入图片描述
和操作系统的分层结构一样,用户不能够直接访问底层,必须从上到下的贯穿访问
在这里插入图片描述
所以网络通信的本质就是贯穿协议栈的过程
在这里插入图片描述

网络传输基本流程

两台主机通过TCP/IP协议通讯的过程如下
在这里插入图片描述
两态主机底层通过以太网进行通信。
为什么叫做以太网?这名字是怎么由来的?声音传播是要介质的,科学家假说出光的传播也要介质,宇宙中一定存在我们看不到的介质,取名为以太,所以科学家们信心满满去证明,却证明出宇宙大部分是真空的,没有这种介质,为了纪念人类这次实验,在计算机中实现了将光电信号从这台主机传到另一台主机,刚好网络的初衷也是传播,就将这种网络称为了以太网

我们之前提到了网络协议栈结构中,每一层都有协议,数据包是如何封装和分用的呢?
如何理解我们以发送微信消息为例:
在这里插入图片描述
在网络协议栈中,有两种不同的认知,我们可以认为同层协议在直接通信,也可以理解成为向下交付。这就像在生活中我们使用微信一样,认为直接在和对方沟通,实际上通信的过程是不断的解包和分用
基于以上过程,我们能够推断出:
1.几乎任何层的协议,都要提供一种能力,将报头和有效载荷分离的能力
2.几乎任何层的协议,都要在报头中提供,决定将自己的有效载荷交付给上层的哪一个协议能力–分用
这是大部分协议的共性,为了我们学习具体协议的时候,都会有这两个问题,这样我们面对封装和解包,才不会困惑

以太网通信原理

以太网通信:每台主机上都要有唯一一个自己的标识符
给大家举个例子帮助大家理解
在这里插入图片描述
老师叫张三,是只有张三自己听到了这句话吗?所有人都会听到(收到),会在大脑里判断老师是不是叫的自己,不是自己就不用执行老师的指令,会抛弃掉这条信息。张三发现是自己,就会和老师搭上话(建立了连接)

以太网同一原理:
Mac地址:每一张网卡都有自己的地址,Mac地址(全球唯一)能在局域网中标明自己的唯一性
在这里插入图片描述
每个主机收到后,在数据链路层进行判断,发现不是发给自己的就会丢弃,而我们用户只在乎用户层,所以我们用户感觉不到。
站在系统的角度看待,这网络资源也是共享资源,如果有两台机器同时向以太网中发数据则会发送数据碰撞,会发送的碰撞的区域也被叫做碰撞域。那需要我们互斥访问,以太网互斥访问的方式并不是加锁,而是有一套自己的避免碰撞的算法,如果我发送消息发现了会碰撞,则会重新发送
那这样会产生一个问题:主机越多,碰撞的概率越大,这也就解释了一个现象,你家里的wifi有很多人连接后会很卡,在学校的运动会大型会议的时候,数据网络也很卡。
如何解决这个问题呢?交换机能划分碰撞域
在这里插入图片描述
交换机发现消息目的地不在左边的区域,则会将消息发送到右边区域。这样一定程度上缓解了数据碰撞问题。

IP地址理解

上面讲的是在一个局域网内的通信原理。现在有多个局域网,如果我们想将信息传到另一个局域网,那些设备是怎么知道信息要传到另一个局域网呢?
他们通过IP地址来判断,IP地址能标识在全网中的唯一性。那IP地址和Mac地址有什么区别呢?
给大家举个例子:假如说你要从吉林长春到四川成都旅游
在这里插入图片描述
其中你第一步可以先从长春到北京,第二步从北京到西安,第三步从西安到成都。
源IP地址->目的IP地址就是从长春到成都,源Mac地址->目的Mac地址就是第一、二、三步。
IP地址:为我们未来每一个阶段,提供方向目标,方便进行路径选择
Mac地址:上一站从哪里来,下一站到哪里去。该类地址,一直在变化

一个信息具体是如何从一个局域网传到另一个局域网的呢?
在这里插入图片描述
局域网的通信方式有:以太网,令牌环网(加锁的思想防止的数据碰撞),无线LAN(手机)
我们也能从上图看到,尽管IP层以下局域网的通信方式不同,IP层协议屏蔽了底层网络的差异化,靠的就是工作在IP层的路由器。IP协议实现了全球主机的软件虚拟层,一切皆是IP报文,这也就是为什么网络能很快席卷全球,能够让手机、电脑等通用起来

网络通信的基本脉络图
在这里插入图片描述
在传输层协议报文我们把它叫做:数据段或数据报。在网络层协议报文我们把它叫做:数据段。在链路层协议报文叫做:数据帧
ifconfig指令可查看网卡情况
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【C语言】常见字符串函数的功能与模拟实现

目录 1.strlen() 模拟实现strlen() 2.strcpy() 模拟实现strcpy() 3.strcat() 模拟实现strcat() 4.strcmp() 模拟实现strcmp() 5.strncpy() 模拟实现strncpy() 6.strncat() 模拟实现strncat() 7.strncmp() 模拟实现strncmp() 8.strstr() 模拟实现strstr() 9.str…

Midjourney绘图欣赏系列(一)

Midjourney介绍 Midjourney 是生成式人工智能的一个很好的例子,它根据文本提示创建图像。它与 Dall-E 和 Stable Diffusion 一起成为最流行的 AI 艺术创作工具之一。与竞争对手不同,Midjourney 是自筹资金且闭源的,因此确切了解其幕后内容尚不…

Vulhub kali 环境安装教程

进入 root 权限 sudo su 更新软件 apt-get update 安装 HTTPS 协议和 CA 证书 apt-get install -y apt-transport-https ca-certificates 安装 docker apt install docker.io 查看 docker 是否安装完成 docker -v 安装 pip apt-get install python3-pip 安装 docker-compose do…

【python之美】减少人工成本之批量去除首行_3

批量去除首行内容 怎么创建多个文本并写入多行数据呢 上特产: import ospath "C:\\Users\\Administrator\\Desktop\\text_1\\" numb int(input("需要创建几个文件:")) a 1 for i in range(numb):f open(path text _ str(a)…

jmeter-问题四:json断言时,预期结果那里如何不写成固定值?

文章目录 json断言时,预期结果那里如何不写成固定值?定义用户参数,然后在json断言的expected value处引用使用csv数据,然后在json断言的expected value处引用 json断言时,预期结果那里如何不写成固定值? 定…

测试开发-2-概念篇

文章目录 衡量软件测试结果的依据—需求1.需求的概念2.从软件测试人员角度看需求3.为什么需求对软件测试人员如此重要4.如何才可以深入理解被测试软件的需求5.测试用例的概念6.软件错误(BUG)的概念7.开发模型和测试模型8.软件的生命周期9.瀑布模型&#…

Spring 用法学习总结(三)之 AOP

Spring学习 7 bean的生命周期8 AOP面向切面编程8.1 AOP相关术语8.2 AOP使用 7 bean的生命周期 bean的生命周期主要为bean实例化、bean属性赋值、bean初始化、销毁bean,其中在实例化和初始化前后都使用后置处理器方法,而InstantiationAwareBeanPostProce…

Linux之多线程

目录 一、进程与线程 1.1 进程的概念 1.2 线程的概念 1.3 线程的优点 1.4 线程的缺点 1.5 线程异常 1.6 线程用途 二、线程控制 2.1 POSIX线程库 2.2 创建一个新的线程 2.3 线程ID及进程地址空间布局 2.4 线程终止 2.5 线程等待 2.6 线程分离 一、进程与线程 在…

HDFS的超级用户

一. 解释原因 HDFS(Hadoop Distributed File System)和linux文件系统管理一样,也是存在权限控制的。 但是很不一样的是, 在Linux文件系统中,超级用户Superuser是root而在HDFS中,超级用户Superuser是启动了namenode的用户&#x…

4核16g配置咋样?还不错,阿里云4核16G服务器26元1个月

4核16g配置咋样?还不错,阿里云4核16G服务器26元1个月,阿里云4核16G服务器配置优惠价格ECS云服务器经济型e实例26元1个月、149元半年、79元3个月,4核16G通用算力u1服务器、通用型g7、通用型g8i、AMD通用型g8a、性能增强通用型g8ae、…

html从零开始6:关系选择器、css盒子模型、弹性盒子模型【搬代码】

关系选择器 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-width,…

Linux日志管理服务 rsyslogd

文章目录 1. 基本介绍2. 系统常用的日志3. 日志管理服务 rsyslogd 1. 基本介绍 日志文件是重要的系统信息文件&#xff0c;其中记录了许多重要的系统事件&#xff0c;包括用户的登录信息、系统的启动信息、系统的安全信息、邮件相关信息、各种服务相关信息等。日志对于安全来说…

QQ群微信群强制加群/随机小姐姐视频分享打赏裂变PHP源码

很多人再找qq群或者微信分享小姐姐视频打赏的裂变源码&#xff0c;这次就分享出来&#xff01; 下载地址QQ群微信群强制加群.zip官方版下载丨最新版下载丨绿色版下载丨APP下载-123云盘

中国电子学会2023年12月份青少年软件编程Scratch图形化等级考试试卷二级真题(含答案)

2023-12 Scratch二级真题 分数&#xff1a;100 题数&#xff1a;37 测试时长&#xff1a;60min 一、单选题(共25题&#xff0c;共50分) 1.在制作推箱子游戏时&#xff0c;地图是用数字形式储存在电脑里的&#xff0c;下图是一个推箱子地图&#xff0c;地图表示如下&#x…

QGIS教程 加载shape数据 矢量数据(批量)

一. 前言 本篇文章主要介绍QGIS的使用&#xff0c;包括如何加载矢量shape数据、查看数据属性、如何加载txt属性数据、怎么用脚本批量加载矢量数据等内容。 如果想了解QGIS&#xff0c;可以参考博文&#xff1a; QGIS基本介绍 如果想了解shape数据格式详情&#xff0c;可以参考…

bpmn-js 事件总线处理

bpmn-js中使用EventBus作为事件的处理句柄&#xff0c;EventBus的使用和我们常规使用的事件总线没啥大的区别&#xff0c;其源码位于&#xff1a;/diagram-js/lib/core/EventBus.js &#xff08;bpmn-js使用diagram-js实现流程图的web端绘制呈现工具&#xff09;。 EventBus使用…

权限提升:利用Linux错配提权

目录 Linux权限基础 Linux用户权限 Linux文件权限 特殊的Linux文件权限 Linux本机信息收集 Linux错配提权 crontab计划任务提权 SUID提权 Linux权限基础 Linux用户权限 在Linux中&#xff0c;根据权限的不同&#xff0c;大致可以分为三种&#xff1a;超级用户&#x…

steam游戏搬砖项目靠谱吗?有没有风险?

作为一款fps射击游戏&#xff0c;csgo在近几年可谓是火出圈&#xff0c;作为一款全球竞技游戏&#xff0c;深受玩家喜爱追捧&#xff0c;玩家追求的就是公平公正&#xff0c;各凭本事&#xff0c;像其他游戏可能还会有皮肤等装备属性加成&#xff0c;在csgo里面是不存在的。 纯…

【Java程序设计】【C00257】基于Springboot的校园二手书交易平台(有论文)

基于Springboot的校园二手书交易平台&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的乐校园二手书交易管理系统 本系统分为系统功能模块、管理员功能模块、卖家用户功能模块以及用户功能模块。 系统功能模块&…

semantic-kernel 国内代理的配置(详细教程)

1. semantic-kernel概述 Semantic Kernel 是微软提供的一个工具,旨在帮助开发者快速、轻松地将最新的大型语言模型(LLM)技术集成到应用程序中。这意味着通过使用Semantic Kernel,开发者可以在他们的应用中加入先进的人工智能和自然语言理解能力,从而增强应用的功能性。 …