当前位置: 首页 > news >正文

【Linux网络】网络基础

目录

  • 网络的诞生
  • 网络协议
    • 协议分层
    • OSI七层模型
    • TCP/IP五层(或四层)模型
  • MAC地址
  • IP地址

网络的诞生

20世纪40年代,计算机诞生了,开始时用于军事,后逐步向科研机构、学校、个人开放。最开始的计算机每一台都是独立的,信息无法沟通。
在这里插入图片描述

于是乎,就有人想到了将几台计算机用先连接在一起,这就是计算机网络的雏形,
在这里插入图片描述

之后连接的设备越来越多,就将这些设备用交换机和路由器连接在一起,这就是局域网LAN
在这里插入图片描述
随着设备的增多,路由器将全世界各地都连接起来,这就是广域网。
在这里插入图片描述
所谓 “局域网” 和 “广域网” 只是一个相对的概念,两者的界限比较模糊,且中间还有城域网之类的概念,其实我们并不需要分的那么清楚。

1969年,阿帕网诞生,它被用于军事方面,是现代互联网的雏形,之后随着发展,由军用到科研机构,之后到学校,最后向个人逐渐普及。

网络协议

协议是一种约定。我们在日常生活中都要交流,交流靠的就是语言,语言也是一种约定,只有我们大家都约定好使用同一种语言,大家的交流才能通畅。对应到计算机网络,计算机之间的传输媒介是光信号和电信号. 通过 “频率” 和 “强弱” 来表示 0 和 1 这样的信息。要想传递各种不同的信息, 就需要约定好双方的数据格式。计算机生产厂商有很多,计算机操作系统也有很多,计算机网络硬件设备还是有很多,如何让这些不同厂商之间生产的计算机能够相互顺畅的通信?就需要有人站出来,约定一个共同的标准,大家都来遵守,这就是网络协议。

协议分层

网络传输的过程十分的庞大且复杂,对于这样复杂的东西,我们计算机科学一贯的处理哲学就是分治,即将一个庞大的、复杂的事物转换成众多细小简单的事物。
在这里插入图片描述
就像上面所举的例子,协议分成了语言层和通信设备层,语言层不需要关心怎么通信,只要说话就行,通信层也不管传输的是什么语言,直接传就行,这就完成了分治,层与层之间解耦,层内部内聚。我们要切换语言了,也不用管通信层,切换通信工具了,也不用管语言层,因为解耦了。如果说的语言不对,只要矫正语言层就行,不用管通信层,类似的,通信层出问题也不用管语言层,修通信设备就行。这就是协议分层的好处,兼容各类协议,功能实现方便,维护成本也低。无论是系统还是网络,它们都是分层的,这其实就是一种面向对象思想,可见面向对象是一种优秀的思想,是大势所趋,所以现代高级编程语言很多都是面向对象的。

OSI七层模型

OSI模型(开放系统互联模型,Open Systems Interconnection Model)是一个由国际标准化组织(ISO)提出的概念性框架。它用于将网络通信过程分解为更小、更简单的多个部分(即分层)。它的核心目的不是具体的实现,而是提供一个通用的思考、设计和讨论网络通信的方式,以确保不同厂商的产品和设备能够相互协作(互操作性)。它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整.。通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯。
在这里插入图片描述
OSI本身是十分优秀的,但是这份优秀中带有了一些不必要的复杂,最终我们现在所使用的其实是TCP/IP模型,它将OSI中的应用层表示层会话层合并成了应用层,简化了OSI模型,OSI的七层模型,尤其是会话层和表示层,功能定义过于复杂和模糊。在实际中,很少有应用程序需要如此严格和复杂的分层。这样一合并就降低了开发难度,最终被市场所认可。

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

TCP/IP模型是我们当今互联网所采取的模型,它还包括许多协议,组成了TCP/IP协议簇。TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。

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

网络协议栈的层状结构中每一层都有协议。网络通信的本质是贯穿协议栈的过程,我们的主机想要进行网络通信,首先有想要发送的数据,这叫做有效载荷,每经过一层协议就要加上一个报头,报头中存储了维持协议的相关信息,报文=报头+有效载荷,而这个组合体会成为下一层协议的有效载荷,如此反复。
在这里插入图片描述
网络通信的本质是贯穿协议栈的过程,而贯穿协议栈,本质就是不断地封装解包。所以几乎任何层的协议都要提供将报头和有效载荷分离的能力,也要在封装的报头中提供将自己的有效载荷交给上层哪一个协议的能力。观察图片我们就会发现封装时发给下一层的报文和解包时下一层传上来的报文是一样的这就好像层与层之间直接通信一样,

MAC地址

MAC地址是设备网卡(网络接口卡)的全球唯一的、物理的”身份证号码”。理论上,全世界每一个网络设备的MAC地址都是独一无二的。这个地址是“烧录”在网卡的硬件里的,因此也叫物理地址或硬件地址。通常它是在生产时就固化好的,一般用户无法更改(除非使用特殊软件“伪造”MAC地址,但那属于例外情况)。MAC地址是一个 48 位(6 字节)的二进制数。为了便于阅读,通常表示为 12 个十六进制数,每两个一组,用冒号或连字符分隔。

MAC地址应用于局域网通信,进行设备到设备的直接寻址。

早期一个局域网的主机使用集线器进行连接,共享一条通信通道,数据的接受和发出采用总线广播的方式,每一台主机的网卡设备都会收到数据,然后将报头中的MAC地址和自己的MAC地址进行比对,不符合的直接丢弃。为什么报头中会有MAC地址呢?这就是数据链路层的协议在起作用了,数据链路层有很多协议,现在最主流常用的就是以太网协议,除此之外还有令牌环网之类的协议,这些协议绝大部分都会在对有效载荷进行封装的时候在报头中加入MAC地址(源MAC和目标MAC,即从哪来,到哪去),MAC地址由网络层协议进行决策,依赖ARP协议,其作为网络层与数据链路层之间的桥梁,实现IP地址到MAC地址的映射​​,是个十分重要的协议。但是集线器这样的设备共用通信总线的方式缺点是比较明显的,地址总线同时只能进行一个数据的广播,多个设备想要广播时会引发以太网数据碰撞,这就需要主机的网卡设备有对应的碰撞避免算法,集线器本身不会做什么措施,因为集线器本质就是一个信号放大器,进行数据的广播工作,集线器工作在物理层

我们将一根通信总线内的设备称为在一个碰撞域内。当接入碰撞域的设备越多,碰撞的频率就越大,传输效率就会降低,所以我们有必要将碰撞域进行划分,早期会用网桥将一个碰撞域一分为二,这样就有两个端口,一个端口对应多个设备,这样能减缓数据碰撞的频率,但不能彻底解决数据碰撞的问题。而现在我们则直接使用交换机,它是有很多个端口,一个端口只接入一台主机,一个端口对应一个碰撞域对应一台主机,这样就解决了传输数据时的碰撞问题。交换机和集线器不同,它是数据链路层的设备,因为它可以识别报头的MAC地址,从而根据其内部维护的MAC表决定朝哪个端口转发数据。MAC表的生成同样与ARP协议息息相关。当然,虽然解决了数据传输时的碰撞问题,但是设备过多时ARP的广播请求同样会影响网络速率,这时可以使用VLAN将局域网进行划分,一个VLAN内的ARP广播只会在这个VLAN内进行,VLAN间相互独立,想要通信得依靠路由器或者三层交换机(普通交换机因为工作在第二层数据链路层所以也叫二层交换机,三层交换机可以工作在网络层,所以叫三层交换机)。一般来说VLAN只有企业级的主机群会用到,一般家庭的小局域网用不到的。

IP地址

IP地址是分配给网络设备的​​数字标签​​,用于在基于IP协议的网络中唯一标识设备,类似于“电话号码”或“门牌号”。它屏蔽了底层物理地址(如MAC地址)的差异,实现跨网络通信。IP地址有IPv4和IPv6之分,IPv4的地址大小为4字节,也就是32比特位。IPv6的地址大小为16字节,也就是128比特位。因为现在的入网设备越来越多,IPv4的地址在将来可能会用完,IPv6是为了解决这样的问题而诞生的,而因为IPv4诞生的早,现在的主流还是IPv4,但是随着发展,物联网的普及,入网设备越来越多,最终会逐渐推动IPv6的普及。

既然有了MAC地址了,为什么还要有IP地址呢?IP协议是网络层的协议,IP地址属于IP协议,是一种虚拟地址,MAC地址是物理地址,被用于数据链路层。当我们想要发送数据时,MAC地址是由IP地址决定的。打个比方,如果我们要去旅游,IP地址就是我们的整个旅途的起点和终点,而MAC地址则是我们当下的起点和终点。比如我想从上海到北京,IP地址就记录了起点是上海,终点是北京,而MAC地址则是根据IP地址,分析出要想去北京,我们先得去地铁站,到了地铁站了,在分析从地铁站到机场,然后一步步分析,更改源MAC和目的MAC。当我们想要传输一个数据时,我们在应用层和传输层就确定了IP地址,到网络层时,我们就会根据目标IP进行分析,在内网还是外网,内网的话直接ARP广播询问谁的IP是目标IP,然后对应的主机回应MAC地址,外网的话就ARP广播谁是默认网关也就是问路由器的LAN口的MAC地址,获取到MAC地址后将它传给数据链路层,这样就获得了MAC地址,就能将其发送给交换机进行转发了。如果是内网通信,直接就将数据转发了,如果是外网,则是发给路由器。

路由器有两个端口,LAN口和WAN口。LAN用来对内网进行接收发送,WAN用来对外网进行接收发送,两个口各有一个MAC地址。当内网的数据通过LAN接收到了,会对其进行解包,解掉数据链路层的报头,因为已经送达了目标MAC了,之后会将数据传到网络层,没错,路由器有网络层,他是一个工作在网络层的设备,路由器根据报头的IP地址再次抉择下一跳,之后将下一跳的MAC地址再次传给数据链路层进行报文封装,之后就会发送数据。路由器这种解包再封装的方式消除了底层协议的差异,使数据链路层的协议可以兼容,当然这也要求路由器可以识别各类数据链路层协议。
在这里插入图片描述
在这里插入图片描述

http://www.dtcms.com/a/353371.html

相关文章:

  • 如何高效地学习:从“死记硬背”到“内化创新”
  • 第二章从事件驱动到信号
  • ESP32使用场景及大规模物联网IoT
  • 【高级机器学习】3. Convex Optimisation
  • 海康相机的 HB 模式功能详解
  • 深入解析 OpenGL 着色器:顶点着色器与片段着色器
  • 无人驾驶叉车的核心作用:技术赋能下如何重塑工业物流的运作逻辑
  • Chrome插件学习笔记(四)
  • 豆包分析linux top
  • 李飞飞谈 AI 世界模型:技术内涵与应用前景
  • 深度学习——卷积神经网络CNN(原理:基本结构流程、卷积层、池化层、全连接层等)
  • 编程算法实例-算法学习网站
  • [Mysql数据库] 知识点总结4
  • LeetCode热题 100——48. 旋转图像
  • CB1-3-面向对象
  • 琼脂糖凝胶核酸电泳条带异常问题及解决方案汇总
  • Day29 基于fork+exec的minishell实现与pthread多线程
  • 【Linux】基本指令学习3
  • IBMS集成管理系统与3D数字孪生智能服务系统的应用
  • Linux驱动 — 导出proc虚拟文件系统属性信息
  • LabVIEW 音频信号处理
  • 【ElasticSearch】原理分析
  • opencv+yolov8n图像模型训练和推断完整代码
  • django注册app时两种方式比较
  • PyTorch图像预处理完全指南:从基础操作到GPU加速实战
  • jQuery版EasyUI的ComboBox(下拉列表框)问题
  • 通义万相音频驱动视频模型Wan2.2-S2V重磅开源
  • 聊一聊 单体分布式 和 微服务分布式
  • Package.xml的字段说明
  • 前端架构知识体系:css架构模式和代码规范