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

【Linux 24】网络基础概念

文章目录

  • 🌈 一、计算机网络的发展
    • ⭐ 1. 独立模式
    • ⭐ 2. 网络互联
    • ⭐ 3. 局域网 LAN
    • ⭐ 4. 广域网 WAN
  • 🌈 二、计算机网络的协议
    • ⭐ 1. 协议的概念
    • ⭐ 2. 协议分层
    • ⭐ 3. OSI 七层参考模型
    • ⭐ 4. TCP / IP 五层模型
  • 🌈 三、网络传输基本流程
    • ⭐ 1. 同局域网的网络传输
      • 🌙 1.1 局域网的通信原理
      • 🌙 1.2 数据包封装和分用
      • 🌙 1.3 报头与有效载荷
      • 🌙 1.4 碰撞的概念
    • ⭐ 2. 跨局域网的网络传输
      • 🌙 2.1 路由器如何知道数据应该转发到哪一个局域网
  • 🌈 四、网络中的地址管理
    • ⭐ 1. 认识 IP 地址
    • ⭐ 2. 认识 MAC 地址

🌈 一、计算机网络的发展

⭐ 1. 独立模式

  • 在计算机发展的早期,计算机之间相互独立,这种情况的通信效率非常低下。
  • 计算机之间如果想要进行业务协同,就需要将数据从一台计算机种拷贝到硬盘上,然后将硬盘中的数据再拷贝到另一台计算机。

image-20240925112948417

⭐ 2. 网络互联

  • 多台计算机通过服务器连接在一起,从而实现数据共享。
  • 当某个业务需要多台计算机协同完成时,可以将共享的数据放到服务器中集中管理,各个计算机就能通过服务器获取这些共享的数据。

image-20240925105417973

⭐ 3. 局域网 LAN

  • 需要通信的计算机数量变的更多,这些计算机通过交换机和路由器连接在一起,形成局域网
  • 交换机:局域网中有一种叫做交换机的设备,其主要用于完成局域网内的数据转发工作。
    • 数据转发:在局域网内将数据从一台主机转发给另一台主机。
  • 路由器:各局域网之间通过路由器连接起来,其主要用于完成数据的路由转发工作。
    • 路由转发:在局域网之间路由器根据路由信息,将数据包从一个局域网转发到另一个局域网。

image-20240925111103558

⭐ 4. 广域网 WAN

  • 广域网的作用是,将远隔千里的计算机都连接在一起
  • N 个局域网之间通过路由器相互连接在一起,就形成了一个更大的网络结构,这个网络结构被称为广域网。
  • 局域网和广域网是一种相对的概念,因为某些懂得都懂的原因,也可以将国内的广域网看成一个比较大的局域网。

image-20240925112832399

🌈 二、计算机网络的协议

⭐ 1. 协议的概念

  • 协议本身是一种约定,通信双方只有通过同一种协议才能进行通信。
  • 从语言的角度看,协议是通信双方都认识的一种结构化的数据类型,双方的 OS 能通过同一种协议 (结构体) 进行通信。
struct protocol
{int a;int b;int c;
};
  • 假设当前有如上这么一个协议 (结构体),因为主机 A、B 的操作系统都是用 C/C++ 写的,并且都有相同的 struct protocol 结构体类型。
  • 也就是说 A、B 使用了同样的代码来实现协议,这两台主机天然就具备着共识,能够识别出这个协议中的信息。

⭐ 2. 协议分层

  • 协议栈是分层的,每层通信双方都有协议,同层之间互相可以认识对方的协议。
  • 将协议栈设计成层状结构,其目的是为了将层与层之间进行解耦,保证代码的可维护性和可扩展性。
  • 分层最大的好处在于 “封装”,在分层的情况下,将某层的协议进行替换后,通信双方之间并不会受到影响。
  • 纯软件的网络协议分为四层,每一层都能解决一种因为网络通信距离变长时所产生的问题。

每一层都能解决一种因为网络通信距离变长时所产生的问题

  • 应用层:解决如何使用送达的数据的问题。
  • 传输层:解决报文在传输过程中出现错误,或者丢失的问题。
  • 网络层:解决在转发中,如何进行路径选择、目标主机定位的问题。
  • 数据链路层:解决如何保证将数据交给下一跳主机的问题。

image-20240925153805863

⭐ 3. OSI 七层参考模型

  • OSI 七层网络模型被称为开放式系统互联参考模型,是一个逻辑上的定义和规范。
层级层名功能常用协议
7应用层针对特定应用的协议HTTP、FTP、SMTP、POP3
6表示层设备固有数据格式和网络标准数据格式的转换LPP、NBSSP
5会话层通信管理、负责建立和断开通信连接,管理传输层以下的分层SSL、TLS、DAP、LDAP
4传输层管理两个结点之间的数据传输,负责可靠性传输TCP、UDP
3网络层地址管理与路由选择IP、ICMP、RIP、IGMP、OSPF
2数据链路层互联设备之间传送和识别数据帧以太网、网卡、交换机、PPTP
1物理层以 0 / 1 代表电压的高低和灯光的闪灭,界定连接器和网线的规格物理线路、光纤、中继器、集线器、双绞线

⭐ 4. TCP / IP 五层模型

  • OSI 参考模型和它的名字一样,仅供参考。

  • 因为 OSI 七层网络模型实现起来难度很高,对其具体实现进行了调整,将 OSI 的上三层合并成一个应用层,就成了常见的 TCP / IP 模型。

image-20240925175029142

1. TCP / IP 中各层负责的功能

  1. 物理层:负责 光 / 电 信号的传递方式,物理层的能力决定了最大的传输速率、传输距离、抗干扰性等,集线器 hub 工作在物理层。
  2. 数据链路层:负责设备之间的数据帧的传送和识别,例:帧同步、冲突检测、差错校验等,交换机 switch 工作在数据链路层。
  3. 网络层:负责地址管理和路由选择,路由器 router 工作在网络层。
  4. 传输层:负责两台主机之间的数据传输,如传输控制协议 TCP,该协议能够确保数据可靠的从源主机发送到目标主机。
  5. 应用层:负责应用程序间的沟通,平时的网络变成主要就是针对应用层进行。

2. TCP / IP 模型名字的由来

  • 网络层最典型的协议是 IP 协议,传输层最典型的协议是 TCP / UDP 协议。
  • 传输和网络这两层本质上,位于操作系统的内核中,用户想使用协议栈,本质就是要使用操作系统,因此这个模型才被叫做 TCP / IP 协议。

🌈 三、网络传输基本流程

  • 以两台主机之间的文件传输为例,在纯软件方面,TCP / IP 模型各层对应的协议如下:
层级纯软件的 TCP / IP 层级名常见协议
5应用层HTTP、FTP、DNS
4传输层TCP、UDP
3网络层IP、ICMP、IGMP
2链路层设备驱动程序及接口卡 (网卡)

⭐ 1. 同局域网的网络传输

  • 在最初设计局域网时,就是为了能够让局域网内的主机能够进行通信,因此同局域网内的主机可以直接进行通信。

image-20240925192120877

🌙 1.1 局域网的通信原理

  • 局域网中的每台主机都有一张网卡,每张网卡都有一个唯一 的 MAC 地址,局域网中的主机就是通过 MAC 地址进行通信的。
  • 局域网中,A 主机向 B 主机通信采用的是 MAC 地址 + 广播的方式,该局域网中的其他主机都能听到 A 的消息,但因为 A 所指定的 MAC 地址是 B 主机的的,因此其他主机会丢弃 A 的通信消息,只有 B 会接收这段消息。

🌙 1.2 数据包封装和分用

  • 用户 A 想和用户 B 进行通信时,用户 A 的消息并不是直接通过主机 A 的应用层直接交给主机 B 的应用层。
  • A 的数据要依次通过应用层、传输层、网络层、链路层,在每一次对数据进行封装之后,才能将数据通过主机 A 的链路层发给主机 B 的链路层。
  • 用户 B 想收到消息,主机 B 的链路层需要将收到的数据包依次通过链路层、网络层、传输层、应用层,在每一次对数据进行解包分用之后,用户 B 才能看到用户 A 的消息。

1. 数据包封装

  • 当应用层想将一段数据交给另一个主机时,TCP / IP 软件方面的 4 层协议从上至下要分别对该数据包进行封装。
  1. 将数据交给应用层,应用层会为该数据添加上对应的应用层协议的报头信息,然后将数据交给传输层。
  2. 传输层收到数据后,传输层会为该数据添加上对应的传输层协议的报头信息,然后将数据交给网路层。
  3. 网络层收到数据后,网络层会为该数据添加上对应的网络层协议的报头信息,然后将数据交给链路层。
  4. 链路层收到数据后,链路层会为该数据添加上对应的链路层协议的报头信息,到此数据彻底封装完毕。
  • 最后就可以通过局域网将封装好的数据发送给对端主机。

2. 数据包分用

  • 当对端主机的链路层收到一段数据包后,需要由下至上经过 TCP / IP 的 4 层,对该收到的数据机型解包和分用。
  1. 链路层收到数据后,将数据包中关于链路层协议的报头信息分离出来,然后将剩下的数据交给网络层。
  2. 网络层收到数据后,将数据包中关于网络层协议的报头信息分离出来,然后将剩下的数据交给传输层。
  3. 传输层收到数据后,将数据包中关于传输层协议的报头信息分离出来,然后将剩下的数据交给应用层。
  4. 应用层收到数据后,将数据包中关于应用层协议的报头信息分离出来,到此数据的解包分用彻底完成。

image-20240925204812041

🌙 1.3 报头与有效载荷

  • 报头:本质也是一种数据,报头一般是通过位段实现的,协议栈的每一层都有一个对应的位段来表示当前层的报头。

  • 有效载荷:数据包中,除了当前曾的报头以外的数据就叫做有效载荷。

如何分离报头与有效载荷

  • 要将数据中的报头取出来,就得知道报头与有效载荷之间的界限在哪。
  • 又因为报头往往都在数据包的最前端,只要知道报头的大小,就可以确定报头与有效载荷的界限了。
  • 有两种获取报头大小的方式
    1. 定长报头:报头的大小是固定的,发送方和接收方都能够知道报头的大小,这就是一种约定。
    2. 自描述字段:报头当中提供一个用来表示报头长度的字段。

🌙 1.4 碰撞的概念

  • 局域网中,同时有多台主机在发送数据,如果某个主机发送的数据与其他主机发送的数据之间互相干扰,这种情况被称为数据碰撞

1. 如何判断发送的数据是否发生了碰撞

  • 因为是采用广播的形式将数据发送到局域网中,当 A 主机发送数据后,A 主机自己也能收到这个数据。
  • 当 A 主机收到数据后,可将其与之前发送出去的数据进行对比,如果此时收到的数据和之前发送的不一致,就说明发生了数据碰撞。

2. 发生了碰撞后该如何处理

  • 当 A 主机发现自己发送的数据产生了数据碰撞后,A 主机可以选择等待一段时间,过一阵子在重新发送该数据。
  • 从系统的角度看,局域网就是临界资源,碰撞的检测和避免,本质上就是在进行互斥访问。

3. 主机如何判断数据是否是发送给自己的

  • 发送出去的数据包会带有源 MAC 和目的 MAC 地址,其中源 MAC 地址表示的是发送数据的主机,目的 MAC 地址就不用说了。
  • 主机在收到数据包后,会对比该数据包中的目的 MAC 地址和自己的 MAC 地址,如果不一致则该数据就不是发给自己的。

⭐ 2. 跨局域网的网络传输

  • 局域网之间通过路由器连接起来,因此一个路由器至少能够横跨两个局域网。

  • 而这些被路由器级联局域网都认为,该路由器就是本局域网内的一台主机,因此路由器可以和这些局域网内的任意一台主机进行直接通信。

  • 假设局域网 1 中的 A 主机想和局域网 2 中的 主机进行通信,A 主机就可以先将数据发送给路由器,然后路由器再将数据转发给局域网 2 当中的 B 主机。

image-20240926092105757

🌙 2.1 路由器如何知道数据应该转发到哪一个局域网

  • 路由器会通过 IP 地址来确定数据的转发方向,互联网中的每一台主机都有一个唯一的 IP 地址,而在数据自定向下进行封装时,在网络层封装的报头中会包含两个字段,分别是 源 IP 地址目的 IP 地址
    • 源 IP 地址和目的 IP 地址分别标识从哪来和到哪去,在数据转发的过程中,所持有的IP 地址不会改变
  • 网络中有很多的路由器,数据在每经过一个路由器时,路由器都会分析这个数据的上一站从哪来,然后根据这个数据包中得目的 IP 地址,选择这个数据下一站该到哪去最终才能走到目的地,这个一直会变得地址就是 MAC 地址。
  • IP 地址的意义就在于路径选择,只要有了目标,途中的路由器就能够为数据包指定越来越靠近目的 IP 地址的下一站路由器。

🌈 四、网络中的地址管理

⭐ 1. 认识 IP 地址

  • IP 地址处在 IP 协议中,用来标识网络中唯一的一台主机
  • 对于 IPV4 来说,IP 地址是一个 4 字节,32 位比特的整数。
  • 对于 IPV6 来说,IP 地址是一个 16 字节,128 位比特的整数。
  • 通常会使用 “点分十进制” 的字符串来标识 IP 地址。

Linux 中如何查看自己的 IP 地址

  • 在 Linux 的命令行中,可以输入 ifconfig 指令查看当前主机的配置信息,其中 inet 对应的就是当前主机的 IP 地址。

image-20240926085955321

⭐ 2. 认识 MAC 地址

  • MAC 地址用来识别链路层中相连的结点,用来表示上一跳路由和下一跳路由。
  • 每张网卡上的 MAC 地址都是唯一的,不能被修改。
  • MAC 地址的长度一般为 6 字节,48 位比特,一般用 16 进制 + 冒号的形式标识 (如:08:00:27:03:fb:19) 。

Linux 中如何查看自己的 MAC 地址

  • 在 Linux 的命令行中,可以输入 ifconfig 指令查看当前主机的配置信息,其中 ether 对应的就是当前主机的 MAC 地址。

用来识别链路层中相连的结点,用来表示上一跳路由和下一跳路由。

  • 每张网卡上的 MAC 地址都是唯一的,不能被修改。
  • MAC 地址的长度一般为 6 字节,48 位比特,一般用 16 进制 + 冒号的形式标识 (如:08:00:27:03:fb:19) 。

Linux 中如何查看自己的 MAC 地址

  • 在 Linux 的命令行中,可以输入 ifconfig 指令查看当前主机的配置信息,其中 ether 对应的就是当前主机的 MAC 地址。

image-20240926085744745


http://www.mrgr.cn/news/40928.html

相关文章:

  • SolidWorks机器转ROS2 URDF
  • Oracle exadata存储节点更换内存操作及报错处理
  • MySQL--数据库约束(详解)
  • C语言 | Leetcode C语言题解之题451题根据字符出现频率排序
  • 可视化图表与源代码显示配置项及页面的动态调整功能分析
  • C++ | Leetcode C++题解之第451题根据字符出现频率排序
  • Linux 实用工具Axel安装及使用教程(支持多线程下载)
  • SD-WebUI forge支持flux模型。算力互联forge镜像使用教程
  • Unity Input System自动生成配置
  • AccessoriesqueryController
  • Difference of Convex Relaxation (DC)
  • 基于深度学习的任务序列中的快速适应
  • Hive数仓操作(十)
  • 课设实验-数据结构-线性表-手机销售
  • 2024多模态大模型发展调研
  • buuctf--->Youngter-drive
  • 复习HTML(基础)
  • 重置linux后vscode无法再次使用ssh连接
  • 【ShuQiHere】深入理解 LC-3 指令集架构(LC-3 ISA):硬件与软件的桥梁 ️
  • 华为OD机试真题---数大雁