初识网络原理

ops/2024/11/18 7:41:09/

1.网络互联

网络互联就是将多台计算机连接在一起,完成数据共享。

数据共享本质就是网络数据传输,即计算机之间通过网络来传输数据,也称为网络通信。

根据网络互联的规模不同,可以划分为局域网和广域网。

1.1 局域网 

局域网,即Local Area Network,简称LAN。

Local即标识了局域网是本地的,局部组建了一种私有网络

局域网内的主机能方便的进行网络通信,又称为内网;局域网和局域网之间在没有连接的情况下,位于不同局域网内的主机是不能够通信的。

局域网的组建方式有很多种

(1) 基于网线直连

(2)基于集线器直连

(3)基于交换机直连

(4)基于交换机和路由器直连

1.2 广域网 

广域网,即Wide Area Network,简称WAN。

通过路由器,将多个局域网连接起来,在物理上组成很大范围的网络,就行成了广域网。广域网内部的局域网都属于其子网。 

2.网络通信基础

网络互联的目的是进行网络通信,也叫网络数据传输,更具体一点,就是主机中的不同进程之间,基于网络传输数据。 

那么,在组建的网络中,如何判断数据是从哪一台主机将数据传送给哪一台主机呢?这时候就需要使用IP地址来标识。

2.1 IP地址 

IP地址主要用于标识网络主机、其他网络设备(如路由器)的网络地址,简单来说,IP地址就是用来标识主机网络地址。 

IP地址是一个32位的二进制数,通常被分割位4个“8位二进制数”(也就是4个字节),如:01100100.00000100.00000101.00000110。

通常用”点分十进制“的方式来表示,即a.b.c.d的形式(a,b,c,d都是0~255之间的十进制数字),如上面的IP地址的”点分十进制“:100.4.5.6

一个特殊的IP地址:127.0.0.1

127.0.0.1被称为本地回环地址,主要用于标识本地主机(即本地计算机本身)和网络测试和开发用途。

2.2 端口号 

网络通信中,端口号可以标识主机中发送数据和接收数据的进程(应用程序),简单来说,端口号用来标识主机中的进程(应用程序)

端口号是一个0~65535范围内的数字,在网络通信中,进程(应用程序)可以通过绑定一个端口号,来发送和接收网络数据。

问题:

有了IP地址和端口号,我们就可以定位到网络中唯一的一个进程,但是,网络通信是基于二进制0/1数据来传输的, 也就是对端接收到的数据是一串二进制数据,那对端是如何正确解析二进制数据,正确得获得对方发送过来得内容呢?

网络通信的数据类型有很多种,如图片,视频,文本等。同一个类型的数据,格式也可能会不同,例如纯文本和富文本都是文本数据,但是纯文本格式只是简单的字符序列,而富文本格式则可以包含字体样式、颜色、超链接等多种格式信息。

如我们发送一个文本字符串”你好“,是如何标识发送的数据是文本数据类型,及文本的编码格式呢?

所以基于网络数据传输,需要使用协议来规定双反方的数据格式。

 3.认识协议

网络领域中,协议是网络协议的简称。网络协议是所有网络通信(即网络数据传输)的网络设备必须共同遵守的一组约定、规则。例如,网络设备间如何建立连接、怎样互相识别等。只有遵守这个协议,计算机之间才能相互通信交流。

简单来说,网络协议是通信双方对于发送和接收数据格式的约定,我的数据怎么发出去的,你收到就得怎么解析。

网络通信中,协议非常重要,只有互相通信之间的多个主机能认同并遵守同一套协议,此时的通信才是有意义的。

协议最终体现为网络上传输的数据包的格式

4.五元组 

一次网络通信的进行会涉及到5个关键信息,分别为源IP,源端口号,目的IP,目的端口号和协议类型,这5个信息被称为五元组。

在TCP/IP协议中,用五元组来标识一个网络通信。

源IP标识源主机

源端口号标识源主机中该次网络通信中发送数据的进程(应用程序)

目的IP标识目的主机 

目的端口号标识目的主机中该次网络通信中接收数据的进程(应用程序) 

协议类型标识发送数据的进程和接收数据的进程双方约定的数据格式

如下图: 

5.协议分层

由于网络通信非常复杂,如果在一个网络协议中完成网络通信涉及到的方方面面的问题,那么必定会使这个协议非常复杂。

所以,一般会让协议分层,不同的层次分别根据各自层次的协议,各自完成在一次网络通信中,该层需要执行的任务。

什么是协议分层

协议分层是计算机网络中一种重要的组织和设计方法,用于将发杂的网络通信功能划分为多个层次,每个层次负责特定的任务,并通过明确规定的接口于相邻层进行交互。

注意事项

协议之间的交互,不能跨层进行。 只有相邻两层协议才能进行交互,上层协议可以调用下层协议,下层协议可以给上层提供服务。

分层的作用 

分层的最大的好处类似于面对接口编程, 定义好两层之间的接口规范,让双方遵循这个规范来进行交互。

在代码中,类似于定义好一个接口,一方是实现接口的类(提供方,提供服务),另一方为接口的使用类(使用方)

对于使用方来说,并不关心接口的具体实现细节,只需使用接口即可。

对于提供方来说,利用封装的特性,隐藏了具体的实现细节,只需要开放接口即可。

如下图

这样的规定也能达到解耦合的效果。 

如下图

两个互相进行通信的人, 只要这两个人能够说同一种语言,无论设备层的设备如何改变,也就是不论我们使用任何设备,对这两个人的交流的影响不是很大,后续改变通讯设备,对于两个人之间的交流也不会影响很大,这就达到了很好的解耦合的效果。

5.1 OSI七层模型

 OSI七层模型是一种逻辑上的定义和规范:把网络从逻辑上分为了7层。但是由于这一套分层体系太复杂了,实际真实的网络分层方式更简化。

5.2 TCP/IP五层模型 (经典面试题)

TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。

TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。

1. 应用层:负责应用层序之间的沟通,也负责对网络传输的数据进行何种处理

2. 传输层:负责任意两台网络设备之间的通信,该层只考虑数据的发起点和数据的接点, 不关心数据传输的中间过程。例如在该层的TCP协议中,能够保证数据可靠的从源主机发送到目标主机。

3. 网络层:负责地址管理和路由选择。网络层也是负责任意两台网络设备之间的通信,但是  网络层会考虑网络数据传输的中间过程。例如在该层的IP协议中,通过IP地址来标识一台主机,并通过路由表(路由表的主要内容包含 目的网络地址,下一跳地址,出接口)的方式出两台主机之间数据传输的路线。

4. 数据链路层:负责相邻设备之间的数据帧的传送和识别。

5. 物理层:负责光/电信号的传递方式,规定了网络通信中一些硬件设施符合的要求。

有些资料将数据链路层和物理层结合在一起,所以也叫TCP/IP四层协议。 

5.3 网络设备

主机:主机的操作系统实现了从传输层到物理层的内容(即TCP/IP五层模型的下四层),通过应用程序满足通信的需求。

路由器:路由器实现了网络层到物理层的内容,即是TCP/IP五层模型的下三层

交换机:交换机实现了从数据链路层到物理层的内容,即TCP/IP五层协议的下两层。

集线器:集线器实现了物理层的内容。

注意:现在的路由器和交换机很多都有对方的功能了。

6. 网络通信的基本流程

6.1 封装与分用 

1. 不同的协议层对数据包有不同的称谓,在传输层叫,在网络层叫数据报,在数据链路层叫帧。

2. 应用层数据通过协议栈发到网络上,每层协议上都要加上一个数据首部,称为封装

3. 首部信息中包含了一些类似于首部有多长,载荷有多长,上层协议是什么等信息。

4. 数据封装成帧后发到传输介质上,,到达目的主机后,每层协议再剥掉相应的首部,根据首部中“上层协议字段”将数据交给对应的上层协议处理,这就是分用

1.封装的过程 

1. 应用层序获取到用户输入,构造一个“应用层数据包”,这个应用层数据包就会遵守应用层协议。

 2. 应用程序调用传输层提供的接口(API),把数据交给传输层,传输层的拿到数据之后,构造出“传输层数据段” 。 

这个传输层数据段主要遵守传输层协议,主要是TCP协议和UDP协议。

以TCP协议来说,TCP数据段就是由TCP段头+TCP载荷组成。TCP载荷就是应用层数据包。

 

3.  传输层构造好数据之后,继续调用网络层的api,把传输层的数据段交给网络层,网络层拿到数据后,构造出网络数据报。

 网络数据报主要遵守网络层的IP协议,则网络数据报就是IP报头+IP载荷。

4. 网络层数据构造好之后,IP协议继续调用数据链路层的api,把IP数据包交给数据链路层,构造出一个“以太网数据帧” 。

再数据链路层中,核心协议为“以太网协议”,根据以太网这个协议,就会再网络层数据报的基础上进一步加工,打包成一个以太网数据帧。以太网数据帧=帧头+载荷+帧尾。

 

5. 数据链路层构造好“以太网数据帧” 之后,数据链路层继续调用物理层的api,把以太网数据帧交给物理层,也就是硬件设备(网卡),网卡会把上述二进制数据(网络上传输的数据本质上都是二进制),最终以光信号/电信号/电磁波信号传播出去了。

 2.分用的过程

1. 数据到达接收方主机的网卡,接收方主机网卡会将光电信号还原成二进制,并把二进制数据交给上层数据链路层。

2. 数据达到数据链路层后,从帧头和帧尾发现此时的协议为“以太网协议”,则数据链路层按照以太网协议进行解析,把帧头和帧尾取出来,剩下的载荷,继续往上传给网络层。

3. 数据到达网络层后,从IP报头中得知此时的协议为网络层协议,则按网络层协议对数据进行解析,把IP报头取出来,剩下的载荷再继续传给传输层。 

4. 数据达到传输层后,从TCP段头中得知此时的协议为传输层协议,则此时按照传输层协议对数据进行解析,把TCP段头取出来,剩下的载荷继续往上传给应用层。cong

 

5. 数据到达应用层后,会按照应用层协议(不同应用的应用层协议是不同的)解析,拿到关键信息,展示到界面上,并给出提示。

数据从源主机传送到目的主机的中间的过程中,也有可能涉及到封装的分用的。

数据传输过程中遇到交换机:

主机的数据 => 交换机,交换机收到数据后,物理层解析,数据链路层解析(没有网络层),重新构造出以太网数据帧,发给下一个设备。

数据链路层中,得到以太网数据帧的帧头后,信息就足以支持交换机进行下一步工作。

交换机是工作在数据链路层,也就是二层转发

数据传输过程中遇到路由器(面试常考)

主机的数据 =>路由器。路由器收到数据之后,物理层解析,数据链路层解析,网络层解析(没有传输层解析),构造出以太网数据帧,构造出二进制数据,进行转发。

路由器是工作在网络层,也就是三层转发。 


http://www.ppmy.cn/ops/134649.html

相关文章

uni-app快速入门(六)--rpx尺寸单位与Flex布局

一、uni-app尺寸单位 uni-app支持的通用尺寸单位包括px、rpx。为支持跨平台,在搭建空驾驶建议使用Flex布局。px指屏幕像素,rpx是响应式像素,是根据屏幕宽度自适应的动态单位。假如屏幕宽度为750像素,750rpx正好为屏幕宽度。uni-ap…

2024年09月CCF-GESP编程能力等级认证Python编程四级真题解析

本文收录于专栏《Python等级认证CCF-GESP真题解析》,专栏总目录:点这里,订阅后可阅读专栏内所有文章。 一、单选题(每题 2 分,共 30 分) 第 1 题 据有关资料,山东大学于1972年研制成功DJL-1计算机,并于1973年投入运行,其综合性能居当时全国第三位。DJL-1计算机运算控…

Spark RDD中常用聚合算子源码层面的对比分析

在 Spark RDD 中,groupByKey、reduceByKey、foldByKey 和 aggregateByKey 是常用的聚合算子,适用于按键进行数据分组和聚合。它们的实现方式各不相同,涉及底层调用的函数也有区别。以下是对这些算子在源码层面的分析,以及每个算子…

使用 Grafana api 查询 Datasource 数据

一、使用grafana 的api 接口 官方API 二、生成Api key 点击 Administration -》Users and accss -》Service accounts 进入页面 点击Add service account 创建 service account 点击Add service account token 点击 Generate token , 就可以生成 api key 了 三、进入grafana…

设计模式-行为型-常用-2:职责链模式、状态模式、迭代器模式

目录 职责链模式 概念 代码实现 使用场景 扩展-Servlet Filter 扩展-Spring Interceptor 状态模式 什么是有限状态机? 状态机实现方式一:分支逻辑法 状态机实现方式二:查表法 状态机实现方式三:状态模式 迭代器模式 定…

函数式组件和类组件的区别

函数式组件和类组件的区别 函数式组件和类组件的区别1. 语法2. 状态管理3. 生命周期管理4. this5. 创建组件6. 继承7. 性能优化 为什么推荐使用函数式组件函数式组件的优势 函数式组件和类组件的区别 1. 语法 函数式组件:基于函数式编程思想,使用 函数…

c语言学习21数组

1.1数组介绍 概念:数组就是 相同数据类型 的一组数据的集合 数组中每个数据 元素 用一个名字来命名这个集合 数组名 用编号区分 下表(从0开始自动标号) 当处理大量…

Unreal engine5实现类似鬼泣5维吉尔二段跳

系列文章目录 文章目录 系列文章目录前言一、实现思路二、具体使用蓝图状态机蓝图接口三、中间遇到的问题 前言 先看下使用Unreal engine5实现二段跳的效果 一、实现思路 在Unreal Engine 5 (UE5) 中使用蓝图系统实现类似于《鬼泣5》中维吉尔的二段跳效果,可以通…