Linux网络 基础概念

目录

背景知识

互联网的发展

局域网和广域网

网络拓扑

网络协议栈

协议的概念

网络协议的分层

网络与操作系统的联系

网络传输的基本流程

IP地址和MAC地址

以太网通信

数据包的封装和分用

跨网段传输


背景知识

互联网的发展

计算机网络是计算机技术和通信技术相结合的产物,是信息化社会的主要技术设施。1946年,世界上第一台计算机ENIAC在美国诞生。随着微电子技术的不断发展,也使计算机网络经历了从简单到复杂、从低级到高级、从地区到全球的发展过程,计算机网络从为解决远程计算信息数据的搜集和处理而形成的联机系统开始,发展到以资源共享为目的而相互连接起来的计算机群,最终形成目前遍布全球各个角落的国际互联网,也就是因特网,一共经历了四个发展阶段:

  1. 面向终端的计算机网络。其系统基本由主机和系统构成,所有的数据处理和通信处理都由主机完成,从而导致了主机通信的开销较大,通信线路的利用率低下,对主机的系统依赖性较高。
  2. 多台计算机互连的计算机网络。这一阶段的标志性成果是提出了分组交换技术以及形成了TCP/IP协议的雏形。该阶段具有的特点是以分组交换网为中心、建立了计算机与计算机的互连与通信、实现了计算机资源的共享。但是也仍有不足的地方,比如没有形成统一的互连标准,使网络在规模与应用等方面受到了限制。
  3. 面向标准化的计算机网络。国际标准化组织ISO于1984年正式颁布了一个称为开放系统互连基本参考模型的国际标准,它是公认的计算机网络系统结构的基础,在这个阶段也形成了以TCP/IP为核心的因特网。
  4. 面向全球互连的计算机网络。这一阶段,在全球范围内极大地推动了计算机网络及其应用的发展,使计算机网络进入到一个新的发展阶段,各个国家建立了自己的信息高速公路,这些信息高速公路的互连就构成了全球互连的因特网。

简单来说就是,起初每个计算机相互独立,传输数据只能借助硬盘等外设。后来人们尝试着把几台电脑通过某种方式连接起来,逐渐发展为区域成熟的局域网(LAN)和广域网(WAN)。

互联网的发展带来的影响最明显的就是互联网公司的发展,但除了互联网公司之外,其背后的硬件设备也在发展,例如网线、光纤、路由器、交换机……

局域网和广域网

局域网,英文名字Local Area Network,缩写为LAN。是指在某一区域内由多台计算机互联成的计算机组。一般是方圆几千米以内。局域网是封闭型的,可以由办公室内的两台计算机组成,也可以由小范围内的上千台计算机组成。

广域网,英语名字为Wide Area Network,缩写为 WAN,又称广域网、外网、公网。指的是连接不同地区局域网或城域网计算机通信的远程网。通常跨接很大的物理范围,所覆盖的范围从几十公里到几千公里,它能连接多个地区、城市和国家,或横跨几个洲并能提供远距离通信,形成国际性的远程网络。一般所指的互联网是属于一种公共型的广域网。

局域网也叫内网,广域网也叫外网。外网ip可以被外界访问,内网ip不能直接被外界访问,也就是说要想上网就必须通过外网,内网是不能直接上网的,个人用户使用的都是内网ip。例如学校中个人电脑上网用的是学校申请的外网ip,家庭上网用的是运营商随机分配的外网ip。而一个外网ip下有多个内网ip,例如一个公司中用的是同一个外网ip。外网在世界范围内统一分配,外网ip是唯一的,内网在同一个外网ip下唯一,不同的外网ip下可以有相同的内网ip。

网络拓扑

网络拓扑(Network Topology)是指一个通信网络中各个设备(如计算机、服务器、路由器、交换机、打印机等)以及它们之间的连接方式在物理布局或逻辑结构上的排列和组织形式。它描述了网络元素(节点)以及它们之间的通信路径(链路或连线)的几何分布和相互关联。IP地址的分配就是基于网络拓朴的。

网络协议栈

协议的概念

计算机生产厂商有很多种,计算机操作系统也有很多种,计算机网络硬件设备也有很多种,所以就需要有一个东西让这些不同厂商之间生产的计算机能够相互顺畅的通信,这个东西就是网络协议。例如计算机之间的传输媒介是光信号和电信号,通过 "频率" 和 "强弱" 来表示 0 和 1 这样的信息,要想传递各种不同的信息,就需要约定好双方的数据格式。

所谓协议,就是一种约定,例如英语的语法就是协议的一种体现。而网络协议指的是计算机网络中通信实体之间交换信息时所必须遵守的规则。

网络协议的分层

网络使得我们可以低成本地实现远距离数据传输,相较于本地间进程间通信,网络通信的特点就在于物理距离变长了。但距离变长的同时,也带来了一些问题:

  1. 如何保证让数据能准确到达下一个设备。
  2. 如何进行路径选择,定位目标主机。
  3. 如何解决长距离传输种可能出现的数据丢失问题。
  4. 送达的数据如何使用的问题。

如上所述,网络传输过程中会存在各种各样的问题,而且在定义协议的时候问题也错综复杂,所以问题要一个个解决,于是我们把网络协议整体是分层的。所以我们把网络协议又叫做网络协议簇。层状协议的一个优点在于,各层之间的解耦合。当我们维护某一层时,就只需要对这一层做更新维护,无需对整个协议做更新。

对于网络协议,我们先来了解OSI网络协议,OSI网络协议共有七层:应用层表示层、会话层、传输层、网络层、数据链路层、物理层。具体介绍如下:

  1. OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范。
  2. OSI协议把网络从逻辑上分为了7层,每一层都有相对应的设备,比如路由器、交换机、防火墙等。
  3. OSI七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输。
  4. OSI协议的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整,通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯。

但是由于OSI模型出现的比TCP/IP出现的时间晚,在OSI开始使用前,TCP/IP已经被广泛的应用了。如果要换成OSI模型也不太现实。其次是OSI只有协议的定义还没有具体的实践,该协议实现起来很复杂,很多公司不愿意用OSI。与之相比的TCP/IP协议更加简单,实现起来也相对容易,更符合市场的要求。总之由于各种原因,最终OSI模型没有被广泛的应用。所以现在广泛使用的就是TCP/IP协议

图片参考: OSI七层模型 - 掘金 (juejin.cn)

TCP/IP 是一组协议的代名词,它还包括许多协议,组成了 TCP/IP 协议簇。TCP/IP 通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。

  1. 物理层:物理层负责物理光电信号的传输。比如现在以太网通用的网线(双绞线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤,现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等。集线器(Hub)工作在物理层。
  2. 数据链路层:负责相邻设备之间数据帧传输,完成帧同步,差错控制,流量管理,链路管理等。例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作。有以太网、令牌环网、无线LAN等标准。交换机(Switch)工作在数据链路层。
  3. 网络层:负责地址管理与路由选择。例如在IP协议中,通过IP地址来标识一台主机,并通过路由表的方式规划出两台主机之间的数据传输的线路(路由)。路由器(Router)工作在网路层。
  4. 传输层:负责两台主机之间的数据传输。如传输控制协议 (TCP),能够确保数据可靠的从源主机发送到目标主机。
  5. 应用层:负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等,我们的网络编程主要就是针对应用层。

我们将上面的五层一般称为网络协议栈,由于网络层和传输层在整个网络协议栈中是最关键的,所以我们将这个网络协议栈称为 TCP/IP 协议栈。

网络与操作系统的联系

两台计算机之间的数据传输并不是直接从一台计算机的应用层直接到另一台计算机的应用层的,大致过程为:数据从一台计算机从应用层自顶向下到物理层,然后经过路由器、交换机等设备到达目标计算机的物理层,然后再从物理层到应用层,这样就完成了一次数据发送。所以一台计算机中是体现了TCP/IP5层协议的对应模型的。

我们平时获取一个信息,本质上就是用户通过网卡这样的外设,将数据请求,把远端发来的数据信息拉取到本地,本质就是用户在访问硬件。所以网络通信本质上也是在访问硬件。但是我们用户不能直接访问硬件,因为操作系统是硬件的管理者。所以对于用户来说,想要访问网卡,必须要贯穿操作系统,所以操作系统需要为我们提供系统调用。

更重要的是,不仅仅只有一个操作系统是这样子的。不同的操作系统内部实现由它们自己决定,但是不管是什么操作系统,往后实现网络部分的功能时,必须遵守上面的标准。要不然这个操作系统就没办法入网。所以不同的操作系统它的系统内部大部分都不一样,但是网络协议栈必须都是一样的。

网络传输的基本流程

IP地址和MAC地址

IP地址

IP地址(Internet Protocol Address)的全称叫作互联网协议地址,它的本义是为互联网上的每一个网络和每一台主机配置一个唯一的逻辑地址,用来与物理地址作区分。

IP地址协议有两个版本,IPv4和IPv6,我们整个的课程,一般提到IP协议,如果没有特殊说明的,默认都是指IPv4。IPv4的IP地址是一个4字节,32位的整数。而IPv6的IP地址是一个16字节,地址长度是128位的整数。我们通常使用 "点分十进制" 的字符串表示IP地址, 例如 192.168.0.1,用点分割的每一个数字表示一个字节,每一个字节的范围是 0 - 255;

MAC地址

MAC地址(Media Access Control Address)的全称叫做媒体访问控制地址,也称作局域网地址,以太网地址或者物理地址。MAC地址用于在网络中唯一标示一个网卡,一台设备若有一或多个网卡,则每个网卡都需要并会有一个唯一的MAC地址。MAC地址共48位(6个字节)。前24位由IEEE(电气和电子工程师协会)决定如何分配,后24位由实际生产该网络设备的厂商自行制定。如下是一个MAC地址样例 08:00:27:03:fb:19。

IP地址和MAC地址的区别

  1. 明显的区别就是长度不同。IP地址的长度为32位(IPv4)或128(IPv6)位,而MAC地址为48位。
  2. 只要在不重复IP地址的情况下,IP地址是可以随意更改的。而MAC地址一般是由生产厂商烧录好的,一般不能改动。当一台计算机的网卡坏了之后,更换了网卡则MAC地址也就会变了。
  3. 所处协议层不同。IP地址应用于网络协议栈的网络层,而MAC地址应用于网络协议栈的数据链路层。
  4. 最重要的区别在于,IP地址划分时是基于地理区域的,换了不同地方,即便是同一台硬件设备,IP地址一定不一样,可以理解为和地理位置有关。而MAC地址不依赖于地理区域,换了不同地方,只要还是同一台硬件设备,MAC地址就不会变,它只和硬件设备有关。

以太网通信

在一个局域网中,如果我们想和某一台主机进行通信,在该局域网中的所有主机都会接收到我们所发的报文,并且对该报文进行解包分用,发现当报头信息不是自己主机时,就会将数据摒弃,只有我们想要通信的那台主机得到数据,进而和我们进行通信。这种通信方式叫做“广播”,是以太网通信的方式。以太网是局域网通信中最常用的一种,除此之外还有令牌网等。

广播的大致过程为:在我们局域网进行实际通信的时候,当我们发送信息的时候,数据链路层的报头中一定要包含原 MAC地址和目标MAC地址,这个报文信息我们称为数据帧,整个局域网都会收到这个数据帧,每个主机会对该数据帧进行分离,如果发现报头中的目标Mac地址不是自己当前主机的Mac地址,就会直接丢弃,一旦丢弃了,上层就不会知道曾经收到过这个报文。而如果发现该数据帧的目标 Mac地址 是自己当前主机的地址时,就会将整个报文解析之后,继续交给上一层进行数据处理。

在一个局域网中,如果一台主机正在发消息,周围也有主机正在发消息,就有可能发送数据碰撞,一旦发生数据碰撞,所有人的消息也就全部都失效了。所以一旦发生数据碰撞,参与发送数据的主机,就要执行它所对应的碰撞避免的算法。

既然知道要发给谁,按如何获取对方的 MAC 地址呢?此时就需要 ARP 协议帮我们找到路由器的 MAC 地址。如果对方和自己处于同一个子网中,那么通过上面的操作就可以得到对方的 MAC 地址。然后,我们将这个 MAC 地址写入 MAC 头部,MAC 头部就完成了。

图例出处: 键入网址到网页显示,期间发生了什么? | 小林coding (xiaolincoding.com)

而在后续操作系统会把本次查询结果放到一块叫做 ARP 缓存的内存空间中,不过缓存的时间就几分钟。也就是说,在发包时会先查询 ARP 缓存,如果其中已经保存了对方的 MAC 地址,就不需要发送 ARP 查询,直接使用 ARP 缓存中的地址。而当 ARP 缓存中不存在对方 MAC 地址时,则发送 ARP 广播查询。

数据包的封装和分用

不同的协议层对数据包有不同的称谓,在传输层叫做,在网络层叫做数据报,在链路层叫做
应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(协议头),这个过程成文封装。首部信息中包含了一些类似于首部有多长、载荷有多长(载荷就是去除协议头的部分),上层协议是什么等信息。数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的协议头,根据首部中的 “上层协议字段” 将数据交给对应的上层协议处理。所以任何协议都必须具有添加协议头和分离协议头的能力,也就是封装与解包的能力。

跨网段传输

数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器。如果数据从A主机跨网络送到B主机,那么A主机和 B主机中间必须得有路由器这样的设备。

图例出处: 2.2 键入网址到网页显示,期间发生了什么? | 小林coding (xiaolincoding.com)

数据帧中有网络层协议头,其中就包含了当前设备的IP地址以及目标设备的IP地址。数据在跨网段传输的时候,需要经过路由器、交换机等设备对数据进行转发,而要经过路由器就必须要知道当前数据包要发往哪个路由器。所以数据帧中的链路层协议头中就需要包含当前设备的MAC地址以及目标路由器的MAC地址(这个工作是由交换机做的)。

当路由器收到了一条数据帧后,就会查询对应的转发信息库,找到找到“最适合”的路由条目后,将数据包根据路由条目所指示的出接口或下一跳转发出去。同时会修改数据帧中相关MAC地址的信息。

经过一系列的路由器以及交换机之后,数据最终会到达指定公网IP下的局域网中,最后再由局域网通信转发到目标设备上。最后目标设备将数据从网卡发送到网卡驱动,进而完成从链路层到应用层的数据解包。

在这期间,数据帧的目标MAC地址一直在变,而目标IP地址一直不变。而且IP协议屏蔽了底层网络(链路层和物理层)的差异化,通过路由器,将不同局域网的数据帧解包为相同格式的IP数据报。

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

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

相关文章

【Android Studio报错】:* What went wrong:Out of memory. Java heap space

项目场景: 今天,刚打开自己的安卓项目发现报错: 报错: * What went wrong: Out of memory. Java heap space Possible solution: - Check the JVM memory arguments defined for the gradle process in: gradle.properties in…

路由器端口映射是什么意思?

路由器端口映射是一种网络配置技术,在私有网络中允许外部网络访问特定的服务或应用程序。通过将路由器的端口映射到内部客户端设备,可以实现从公共网络访问内部网络资源的目的。 天联组网介绍 天联是一款异地组网内网穿透产品,由北京金万维科…

网工基础协议——IP地址

IP地址的概念: IP 地址是我们进行TCP/IP通讯的基础,每个连接到网络上的计算机都必须有一个!P地址。我们目前使用的IP地址是32位的,通常以点分十进制表示。例如:192.168.0.181。IP地址的格式为: IP地址 网络地址 主机地址 或者 |P地址主机地…

windows ffmpeg7 通过rtsp拉取h265裸流

点击下边那个链接会转到github 下载完成后,添加include、lib到工程。 添加头文件: extern "C" { #include "libavcodec/avcodec.h" #include "libavformat/avformat.h" #include "libavformat/avio.h" #inclu…

【opencv】示例-detect_blob.cpp

// 导入所需的OpenCV头文件 #include <opencv2/core.hpp> #include <opencv2/imgproc.hpp> #include <opencv2/highgui.hpp> #include <opencv2/features2d.hpp> // 导入向量和映射容器 #include <vector> #include <map> // 导入输入输出…

微软卡内基梅隆大学:无外部干预,GPT4等大语言模型难以自主探索

目录 引言&#xff1a;LLMs在强化学习中的探索能力探究 研究背景&#xff1a;LLMs的在情境中学习能力及其重要性 实验设计&#xff1a;多臂老虎机环境中的LLMs探索行为 实验结果概览&#xff1a;LLMs在探索任务中的普遍失败 成功案例分析&#xff1a;Gpt-4在特定配置下的探…

【QT入门】Qt自定义控件与样式设计之qss的加载方式

往期回顾 【QT入门】 Qt自定义控件与样式设计之QPushButton点击按钮弹出菜单-CSDN博客 【QT入门】Qt自定义控件与样式设计之QProgressBar用法及qss-CSDN博客 【QT入门】 Qt自定义控件与样式设计之QSlider用法及qss-CSDN博客 【QT入门】Qt自定义控件与样式设计之qss的加载方式 …

JDBC看这一篇就够了

JDBC核心技术 第1章&#xff1a;JDBC概述 1.1 数据的持久化 持久化(persistence)&#xff1a;把数据保存到可掉电式存储设备中以供之后使用。大多数情况下&#xff0c;特别是企业级应用&#xff0c;数据持久化意味着将内存中的数据保存到硬盘上加以”固化”&#xff0c;而持久…

centos7上docker搭建vulhub靶场

1 vulhub靶场概述 VulHub是一个在线靶场平台&#xff0c;提供了丰富的漏洞环境供安全爱好者学习和实践。 该平台主要面向网络安全初学者和进阶者&#xff0c;通过模拟真实的漏洞环境&#xff0c;帮助用户深入了解漏洞的成因、利用方式以及防范措施。 此外&#xff0c;VulHub还…

Kubernetes学习笔记7

使用kubeadm部署Kubernetes集群方法 使用kubernetes部署单节点Master节点K8s集群。 在实际生产环境中&#xff0c;是不允许单master节点的&#xff0c;如果单master节点不可用的话&#xff0c;当导致我们的K8s集群无法访问。 可以使用kubeadm将单master节点升级为多master节点…

智能制造六大核心发展方向,驱动企业数字化转型

在制造过程中&#xff0c;智能制造展现出非凡的活力&#xff0c;它使人与智能机器的协同工作成为可能。这不仅将制造自动化的概念提升至一个新的层次&#xff0c;更将其扩展至柔性化、智能化和高度集成化的领域。通过这样的革新&#xff0c;我们得以实现数字化智能工厂的落地生…

Linux的学习之路:5、粘滞位与vim

摘要 这里主要是把上章没说完的权限的粘滞位说一下&#xff0c;然后就是vim的一些操作。 目录 摘要 一、粘滞位 二、权限总结 三、vim的基本概念 四、vim的基本操作 五、vim正常模式命令集 1、插入模式 2、从插入模式切换为命令模式 3、移动光标 4、删除文字 5、复…

Spring MVC体系结构和处理请求控制器(一)

一、MVC模式 MVC模式是指Model-View-Controller&#xff08;模型-视图-控制器&#xff09;模式&#xff0c;是开发Web应用程序时常用的一种代码分层模式MVC模式是软件工程中的一种架构模式&#xff0c;会强制行的把系统的输入、处理和输出分开&#xff0c;是系统从功能上形成M…

我的小程序接口被刷爆了

自然流量的惊喜 书接上文&#xff0c;凭着短视频的好奇&#xff0c;搭了个小程序&#xff0c;做了文案提取&#xff0c;配音等功能&#xff0c;也顺带写了两篇口水文章&#xff0c;不曾想居然收获历史最高的点赞与收藏。有兴趣的朋友可以点这里一看究尽&#xff1a;《短视频配音…

B02、GC日志分析-案例演示-6.4

1、案例一&#xff1a;堆溢出演示 1.1、简单springboot项目创建 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:s…

环形队列的简单理解

多次遇到环形队列的情况&#xff0c;记不住什么情况是队列满&#xff0c;什么情况是队列空。一直也没有理解透彻。 仔细研究了一下&#xff0c;掌握了一些原理&#xff0c;记录一下。 1. 环形队列有一个头指针head&#xff0c;一个为指针tail。有一个疑问&#xff1a;head和ta…

更换淘宝镜像地址,旧的已经失效(https://registry.npm.taobao.org )

旧的镜像地址&#xff1a;npm install --registryhttps://registry.npm.taobao.org 新的镜像地址&#xff1a;npm install --registryhttps://registry.npmmirror.com

【2024最新博客美化教程重置版】今天教你如何使用SimpleMemory美化你的博客,体会一下大神是如何装逼的!

&#x1f680; 个人主页 极客小俊 ✍&#x1f3fb; 作者简介&#xff1a;程序猿、设计师、技术分享 &#x1f40b; 希望大家多多支持, 我们一起学习和进步&#xff01; &#x1f3c5; 欢迎评论 ❤️点赞&#x1f4ac;评论 &#x1f4c2;收藏 &#x1f4c2;加关注 SimpleMemory …

【算法基础】插入排序与二分查找、升级二分查找

文章目录 1. 插入排序1.1 插入排序的思想1.2 插入排序的实现 2. 普通二分查找2.1 普通二分查找的思想2.2 普通二分查找的实现 3. 升级二分查找3.1 升级二分查找思想3.2 升级二分查找实现 1. 插入排序 1.1 插入排序的思想 插入排序很类似于已有一副有序的扑克牌&#xff0c;不断…

【话题】AI技术创业有那些机会,简单探讨下

大家好&#xff0c;我是全栈小5&#xff0c;欢迎阅读小5的系列文章&#xff0c;这是《话题》系列文章 目录 背景机会一、引言二、AI技术的创业机遇1.智能服务行业的兴起2.数据驱动的业务模式创新3.AI与产业融合的创新发展 三、AI技术创业的挑战1.技术门槛高2.法规政策的不确定性…