Linux网络基础1

news2024/11/28 14:43:40

目录

  • 计算机网络背景
  • 协议
  • 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指令可查看网卡情况
在这里插入图片描述

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

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

相关文章

x86汇编通用寄存器用途一览

文章目录 写在前面通用寄存器参考资料 写在前面 intel官方文档链接:Intel64和IA-32架构软件开发者手册 具体在Combined Volume Set of Intel 64 and IA-32 Architectures Software Developer’s Manuals这本手册 (五千页我的天。。。) 不想…

FastAI 之书(面向程序员的 FastAI)(二)

原文:www.bookstack.cn/read/th-fastai-book 译者:飞龙 协议:CC BY-NC-SA 4.0 第三章:数据伦理 原文:www.bookstack.cn/read/th-fastai-book/9bc6d15b4440b85d.md 译者:飞龙 协议:CC BY-NC-SA 4…

中小学信息学奥赛CSP-J认证 CCF非专业级别软件能力认证-入门组初赛模拟题第二套(选择题)

CSP-J入门组初赛模拟题二 1、在计算机内部用来传送、存贮、加工处理的数册或指令都是以()形式进行的 A、二进制 B、八进制 C、十进制 D、智能拼音 答案:A 考点分析:主要考查小朋友们计算机相关知识,在计算机中都是采用二进制运算&#…

初识webpack(二)解析resolve、插件plugins、dev-server

目录 (一)webpack的解析(resolve) 1.resovle.alias 2.resolve.extensions 3.resolve.mainFiles (二) plugin插件 1.CleanWebpackPlugin 2.HtmlWebpackPlugin 3.DefinePlugin (三)webpack-dev-server 1.开启本地服务器 2.HMR模块热替换 3.devServer的更多配置项 (…

面试经典150题——串联所有单词的子串(困难)

"Opportunities dont happen, you create them." ​ - Chris Grosser 1. 题目描述 2. 题目分析与解析 2.1 思路一——暴力求解 遇见这种可能刚开始没什么思路的问题,先试着按照人的思维来求解该题目。对于一个人来讲,我想要找到 s 字符串中…

Java的Cloneable接口和深拷贝

Java 中内置了一些很有用的接口, Clonable 就是其中之一。 Object 类中存在一个 clone 方法, 调用这个方法可以创建一个对象的 "拷贝"。 但是要想合法调用 clone 方法, 必须要先实现 Clonable 接口, 否则就会抛出 CloneNotSupportedException 异常。 浅拷贝&#xff…

数据结构-并查集

并查集原理 在一些应用问题中,需要将n个不同的元素划分成一些不相交的集合。开始时,每个元素自成一个 单元素集合,然后按一定的规律将归于同一组元素的集合合并。在此过程中要反复用到查询一 个元素归属于那个集合的运算。适合于描述这类…

cool Nodejs后端框架 如何快速入门 写一个接口

1.cool 框架 js前端开发者 想自己写后端接口 快速入门的就是node.js 了 可以用这个框架自己做一些东西 或者实现前后端的开发 2.目录结构 这个基本上 就是cool 框架的项目结构 主要是 这个src 中的modules 文件夹 这个文件夹 主要是一些接口模块 比如 business 中 相当于…

leetcode 448. 找到所有数组中消失的数字

用的最土的办法&#xff0c;将数组nums中出现过的数字用map记录下来&#xff0c;再遍历1~n中的所有数字&#xff0c;凡是未在map中出现过的即为我们要找的数字。 Java代码如下&#xff1a; class Solution {public List<Integer> findDisappearedNumbers(int[] nums) {i…

品牌之门:概率与潜力的无限延伸

在品牌的世界里&#xff0c;每一个成功的推广都像是打开一扇门&#xff0c;从未知走向已知&#xff0c;从潜在走向显现。这扇门&#xff0c;既是品牌的起点&#xff0c;也是品牌发展的无限可能。 品牌&#xff0c;就像一扇紧闭的门&#xff0c;它静静地矗立在那里&#xff0c;…

优先级队列(堆)_PriorityQueue

前言 想要看如何使用可以通过目录跳转到 PriorityQueue的使用 优先级队列 概念 队列是一种先进先出(FIFO)的数据结构&#xff0c;但有些情况下&#xff0c;操作的数据可能带有优先级&#xff0c;一般出队 列时&#xff0c;可能需要优先级高的元素先出队列&#xff0c;该中场…

linuxqq关闭主面板后无法再次打开的问题

文章目录 前言解决方案强调一点 前言 听说QQ出了linux版&#xff0c;所以来试试。结果试试就逝世。这次记录一个关闭后没办法打开的解决办法。 解决方案 刚安装好后如果点了关闭&#xff0c;系统托盘里也没有&#xff0c;点击图标又是重新登录。当然&#xff0c;我们最简单、…

反序列化漏洞(一)Shiro漏洞CVE-2016-4437复现

★★免责声明★★ 文章中涉及的程序(方法)可能带有攻击性&#xff0c;仅供安全研究与学习之用&#xff0c;读者将信息做其他用途&#xff0c;由Ta承担全部法律及连带责任&#xff0c;文章作者不承担任何法律及连带责任。 1、前言 春节后第一篇&#xff0c;祝大家龙年一切顺利&…

书生浦语大模型实战营-课程笔记(1)

模型应用过程&#xff0c;大致还是了解的。和之前实习做CV项目的时候比起来&#xff0c;多了智能体这个环节。智能体是个啥&#xff1f; 类似上张图&#xff0c;智能体不太清楚。感觉是偏应用而不是模型的东西&#xff1f; 数据集类型很多&#xff0c;有文本/图片/视频。所以…

仰暮计划|“​他们艰苦半生,但真的希望祖国安祥,山河无恙”

自述&#xff0c;自赎 我没有在那个年代生活过&#xff0c;我一出生就是盛世中国&#xff0c;看遍了祖国的大好河山。但我没想到&#xff0c;走了这么远的路&#xff0c;吃了这么多的苦的爷爷会一直跟我说“不是国家不好&#xff0c;只是中国的钱拿去还债了&#xff0c;过了那…

什么是 Docker 容器?以及操作 Docker 容器相关的命令汇总

镜像仓库常用指令&#xff1a;Docker 镜像仓库是什么&#xff1f;有哪些镜像仓库命令&#xff1f; 镜像常用指令&#xff1a;操作 Docker 镜像的常用命令 1. 什么是容器&#xff1f; 容器是镜像的运行实体。容器是基于镜像创建的可运行实例&#xff0c;并且单独存在&#xff0…

FastAI 之书(面向程序员的 FastAI)(八)

原文&#xff1a;www.bookstack.cn/read/th-fastai-book 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 第二十章&#xff1a;总结思考 原文&#xff1a;www.bookstack.cn/read/th-fastai-book/cedc7ab42349d210.md 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA…

Github 2024-02-14 开源项目日报 Top9

根据Github Trendings的统计&#xff0c;今日(2024-02-14统计)共有9个项目上榜。根据开发语言中项目的数量&#xff0c;汇总情况如下&#xff1a; 开发语言项目数量Rust项目4TypeScript项目1PowerShell项目1Java项目1JavaScript项目1Jupyter Notebook项目1非开发语言项目1Pyth…

每日五道java面试题之java基础篇(八)

第一题.CopyOnWriteArrayList的底层原理是怎样的 ⾸先CopyOnWriteArrayList内部也是⽤过数组来实现的&#xff0c;在向CopyOnWriteArrayList添加元素时&#xff0c;会复制⼀个新的数组&#xff0c;写操作在新数组上进⾏&#xff0c;读操作在原数组上进⾏并且&#xff0c;写操作…

Hive调优——合并小文件

目录 一、小文件产生的原因 二、小文件的危害 三、小文件的解决方案 3.1 小文件的预防 3.1.1 减少Map数量 3.1.2 减少Reduce的数量 3.2 已存在的小文件合并 3.2.1 方式一&#xff1a;insert overwrite (推荐) 3.2.2 方式二&#xff1a;concatenate 3.2.3 方式三&#xff…