网络原理-初识

news2024/12/1 11:25:19

1.网络的发展历程

独立模式

独立模式:计算机之间相互独立。 每个终端A、B、C各自持有客户端数据

网络互连

随着时代的发展,越来越需要计算机之间互相通信,共享软件和数据,即可以多个计算机协调工作来完成业务,就有了网络互连。

网络互连:将多台计算机连接在一起,完成数据共享。数据共享的本质是网络数据传输,即计算机通过网络来传输数据,也称为网络通信。根据网络互连的规模不同,可以分为局域网广域网

局域网:多个设备连在同一个路由器下称为局域网。局域网主机之间能够方便的进行通信,又称为内网;局域网和局域网之间在没有连接的情况下,是无法通信的。

局域网组件网络的方式有很多:

(1)基于网络直连

(2)基于集线器组建 

(3)基于交换机组建

交换机可以视为是对路由器的接口进行扩展

(4)基于交换机和路由器组建

路由器是进行组件局域网

 广域网:很多个局域网组合到一起构成了一个更大的局域网就称为广域网。在qq音乐上听歌就是在广域网下进行的操作。

网络通信基础:网络进行互联的目的是进行网络通信,也是网络数据传输,更具体一点是网络主机中的不同进程间基于网络传输数据,那如何判断到底是从那台主机上将数据传输到那台主机呢?这就需要使用IP地址来标识

IP地址:主要是用来标识设备所在位置。同时一台主机上有很多程序,具体要交给哪个程序呢就需要端口号来识别了

端口号:端口号主要就是用于点位主机中的进程。直到IP和端口号我们可以找到网络中唯一的进程但是数据传输过来的时候我们如何进行解析呢?这里我们需要直到协议,协议会规定双方数据的格式从而识别你发的是文本还是图片。

2.认识协议

2.1概念

协议就是网络协议的简称,网络协议就是通信双方对于发送和接受数据格式的约定。我的数据怎么发你就怎么解析。当前我们之所以能够进行通信就是因为遵守了同一套协议。进行一次网络通信涉及到5个非常关键的信息,即五元组。

2.2五元组

在TCP、IP协议中用五元组来标识一个网络通信:

1.源IP:标识主机,数据是从哪个主机上来的

2.源端口:标识源主机中该次通信发松数据的进程,即数据是从哪个软件发来的

3.目的IP:标识目的主机

4.目的端口:标识主机中该次通信接收数据的进程,数据要发到哪里去

5.协议号:标识发送发送进程和接受进程双方约定的数据格式

2.3协议分层

网络通信非常复杂,如果我们设计一个协议完成网络通信中的方方面面势必会使这个协议非常复杂非常庞大,遇到这样的情况我们就需要协议分层。把一个大的协议分层若干个功能单一的协议。但是拆完之后又感觉多了,怎么办?把小的协议进行归类。为了议之间进行良好的交互就规定只有相邻之间可以进行交互,上层协议可以调用下层协议,下层协议可以给上层提供服务,不能夸层进行。协议分层带来的好处有哪些呢?首先上层协议不需要了解下层协议的细节封装分层之后可以灵活地替换其中某一层对于整体的工作影响最小即解偶。那真实的互联网具体是怎样分层的呢?这里就使用了OSI七层网络模型,

2.4 OSI七层网络模型

 OSI七层网络模型比较复杂,实际具体的网络分层方式更简化只是使用七层模型设计中部分模型,TCP/IP五层模型来实现。接下来我们介绍一下TCP/IP五层模型

2.5五层模型

(1)应用层:数据发送过去之后如何使用解决什么问题。注重一个事务的使用过程,包裹拿到之后怎样使用。

(2)传输层:负责两台主机之间的数据传输,也是任意设备之间的通信,不考虑中间过程,只考虑起点和终点。比如在淘宝买衣服,卖家站在传输层角度,卖家只需要考虑包裹收货到货的地点,从哪里来到哪里去,把包裹交给快递小哥就好。物流公司则是要考虑包裹怎样一步一步到我的手里。

(3)网络层:两个任意设备之间如何通信,这两个设备之间可能隔着很多的交换机和路由器。考虑通讯的中间过程是怎样的。

(4)数据链路层:用来完成两个相邻的设备之间如何进行通信。什么是相邻设备:通过网线把电脑连到路由器和交换机上,电脑和路由器、交换机就是相邻设备。

(5)物理层:越接近底层越靠近硬件,物理层规定网络通信中的一些硬件设施符合要求。在我们上网时通常要网线、wifi、光纤。物理层的协议就是约定这些硬件设施要符合的要求怎样的

网络层是基于数据链路层,数据链路层是基于物理层。

网络设备所在分层

主机:工作中涉及到物理层到应用层,通过应用程序满足网络通信的需求

路由器:工作过程涉及到,从物理层到网络层,组件局域网进行网络数据包的转发

交换机:工作过程涉及到从物理层到数据链路层,对路由器接口的扩展不需要考虑网的问题

3. 网络数据通信的基本流程

我们先来解析qq发送hello给对方。

1.首先应用程序获取用户输入构造一个应用层的数据包(数据包往往是结构化数据),构造应用层数据包时就要遵守应用层协议,这个协义往往是开发这个程序的程序员自己定义的。 假设这里的协议格式是:发送者的qq号、接受者的qq号、消息的时间、消息正文。数据包里数据就是有上述协议里指的属性,要想发送数据我们就需要把数据转化成字符串二进制比特流(序列化),接收数据的时候字符串、二进制比特流转化成结构化数据(反序列化)。网络传输的本质就是0101这样的数据,网络传输需要事的网线是电信号通过高低电平表示01,还有光纤则是光信号通过高低频光表示01,wifi是电磁波(光信号)通过高低频电磁波表示01.

按照约定格式我们可以假设传输的数据格式如下:1234567,7654321,2024-11.02,12.00,hello

2.应用程序调用传输层提供的接口API,把数据交给传输层(传输层构造的API我们可以叫做Socket api,api是下层协议给上层提供的),传输层拿到数据之后构造“传输层数据包”。传输层的协议主要是有两个TCP和UDP这里我们假设加的是TCP。于是传输层数据报如下所示:

TCP数据包 = TCP报头(header)+TCP(载荷),tcp报头是TCP功能相关的属性源端口、目的端口,载荷是应用层数据报

那为啥要加TCP,假设我们在淘宝买一件衣服,那卖家不是直接随意一团扔给快递小哥,而是打包好给快递小哥,有了包装之后就可以贴标签,快递下个就可以根据这个标签包含的关键信息送达目的地。TCP报头就是相当于快递单

3. 传输层构造好数据之后继续调用网络层的API,把传输层的数据包交给网络层,网络层继续进行处理,网络层最主要的协议IP协议,IP协议继续对上述数据包进行加工,加上IP报头。IP报头和上面的格式一样。IP数据包 = IP报头(包含源IP目的和目的IP)+IP载荷(整个传输层的数据包),这里的IP报头会记录当前传输层使用的是哪个协议,传输层报头中也会记录应用层使用哪个协议,数据链路层也会记录网络层使用哪个协议

4.IP协议继续调用数据链路层的API,把IP数据包交给数据链路层,数据链路层中的核心协议是以太网,以太网这个协议也会在网络数据包的基础上进一步加工。以太网数据帧 = 帧头+载荷+帧尾

谈到网络数据传输的基本数据单位时候,涉及到多个术语 。网络数据报/包/段/帧

5.以太网继续把这样的数据交给硬件设备(网卡),网卡会把上述二进制数据最终以光信号、电信号、电磁波信号传播出去了

这里不考虑传播出去的数据如何到达主机我们考虑收到之后的事情

信息接收

1.信息到达接收方的网卡,网卡把光电信号还原成二进制0101,之后把二进制数据交给上层数据链路层

物理层数据是咋来的和数据链路层是直接相关的,如果数据是通过网线和光纤来的那就是以太网的形式传到数据链路层,如果数据是通过wifi来的那么久会通过802.11协议来传到数据链路层

2.数据链路层按照以太网协议进行解析,把报头和报尾取出来,剩下的载荷往上传递给网络层

以太网的帧头中有专门的属性描述网络层使用哪个协议

3.网络层拿到这个数据之后按照IP协议的格式解析,再把载荷数据交给传输层

IP报头中也有专门的属性描述了使用哪个协议

4.传输层拿到数据之后也是类似按照TCP协议来解析取出载荷交给应用层

5.qq应用程序解析应用层数据,拿到关键信息,展示带界面上给出提示,

 

传输的中间过程中也是涉及到封装分用的,交换机只需要封装分用到数据链路层即可,主机的数据传输到交换机,交换机收到数据之后物理层解析再之后数据链路层解析(没有网络层)之后重新构造出新的以太网数据帧发给下一个设备,数据链路层中得到的以太网数据帧的帧头信息就足够支持交换机进行下一步工作。交换机的主要工作是在数据链路层进行二层转发。

主机的数据交给路由器,路由器收到之后物理层、数据链路层。网络层解析(没有传输层),重新构造出新的网络数据包(以太网数据帧),构造二进制数据进行转发。路由器是工作在网络层进行三层转发。

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

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

相关文章

房屋结构安全监测系统守护房屋安全卫士

一、系统背景 随着时间的流逝,建筑物的主体结构、设备设施等会因为自然老化、材料疲劳、使用环境的变化以及维护不当等各种因素的影响,逐渐出现性能下降甚至安全隐患。因此,进行房屋安全监测显得尤为重要。房屋结构安全是指建筑物的结构体系在…

排序算法之选择排序堆排序

算法时间复杂度辅助空间复杂度稳定性选择排序O(N^2)O(1)不稳定堆排序O(NlogN)O(1)不稳定 1.选择排序 这应该算是最简单的排序算法了,每次在右边无序区里选最小值,没有无序区时,就宣告排序完毕 比如有一个数组:[2,3,2,6,5,1,4]排…

从0开始linux(39)——线程(2)线程控制

欢迎来到博主的专栏:从0开始linux 博主ID:代码小豪 文章目录 线程创建线程标识符线程参数多线程竞争资源 回收线程detach 线程退出pthread_cancel 线程创建 线程创建的函数为pthread_create。该函数是包含在posix线程库当中,posix线程是C语言…

28.100ASK_T113-PRO Linux+QT 显示一张照片

1.添加资源文件 2. 主要代码 #include "mainwindow.h" #include "ui_mainwindow.h" #include <QImage> #include <QPixmap>MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow) {ui->setupUi(this);QIm…

不用下载安装的线上3D编辑器,支持哪些功能?

线上3D编辑器&#xff0c;不用下载软件&#xff0c;直接通过浏览器打开51建模网&#xff0c;上传模型即可进入编辑器&#xff0c;不仅支持对3D模型进行细致的效果配置&#xff0c;如光源设置、背景定制、材质调节等&#xff0c;还具备爆炸效果、热点动画、部件替换等高级交互功…

C语言——指针初阶(三)

目录 一.指针-指针 代码1&#xff1a; 运行结果&#xff1a; 代码2&#xff1a; 运行结果&#xff1a; 代码3&#xff1a; 运行结果&#xff1a; 二.指针数组 例&#xff1a; 往期回顾 一.指针-指针 指针减去指针的前提&#xff1a;两个指针指向同一块空间。 指针减去指针…

vue3项目创建方式记录

目录 创建vue3常用的方式有三种&#xff1a;一.使用vue cli创建二.使用vite创建三.使用vue3官方推荐创建方式&#xff08;create-vue&#xff09; 创建vue3常用的方式有三种&#xff1a; 一.使用vue cli创建 vue create 项目名二.使用vite创建 vite是下一代前端开发与构建工…

基于特征子空间的高维异常检测:一种高效且可解释的方法

本文将重点探讨一种替代传统单一检测器的方法&#xff1a;不是采用单一检测器分析数据集的所有特征&#xff0c;而是构建多个专注于特征子集(即子空间)的检测器系统。 在表格数据的异常检测实践中&#xff0c;我们的目标是识别数据中最为异常的记录&#xff0c;这种异常性可以…

MySQL —— MySQL 程序

目录 前言 一、MySQL 程序简介 二、mysqld -- MySQL 服务器 三、mysql -- MySQL 客户端 1. mysql 客户端简介 2. mysql 客户端选项 &#xff08;1&#xff09;指定选项的方式 &#xff08;2&#xff09;mysql 客户端命令常用选项 &#xff08;3&#xff09;在命令行中使…

Flink CDC 使用实践以及遇到的问题

背景 最近公司在做一些业务上的架构调整&#xff0c;有一部分是数据从mysql采集到Starrocks&#xff0c;之前的一套方法是走 debezium 到 puslar 到 starrocks,这一套下来比较需要配置很多东西&#xff0c;而且出现问题以后&#xff0c;需要修改很多配置&#xff0c;而且现阶段…

数据链路层(三)--点对点通信协议PPP

PPP协议叫做点对点协议&#xff0c;是目前使用的最广泛的数据链路层协议。 1 PPP协议的特点 用户通常需要连接到某个ISP才能接入互联网&#xff0c;PPP协议就是用户计算机和ISP进行通信所使用的数据链路层协议。 1.1 PPP协议应满足的需求 &#xff08;1&#xff09;简单&…

C语言 分支语句(if)

分支语句(if) if语句形式一 适用只有一个分支判断 if(表达式1) //如果 { 语句块1 } if语句形式二 适用有两个分支判断 if(表达式1) //如果 { 语句块1 } else //否则 { 语句块2 } 例:求方程的根 if语句形式三 适用多分支判断 if(表达式1) //多分支 { 语句块1 } else if(表达…

如何将WSL的虚拟机安装到任意目录中

目录 引言 下载安装包 解压安装包 手工安装 结语 引言 WSL默认是将虚拟机安装在C盘的用户目录下&#xff0c;如果长时间使用Windows后&#xff0c;可能C盘的空间就会非常吃紧&#xff0c;所以非常希望把虚拟机安装到C盘以外的目录中。本文就介绍一下相关的工作。 这里只讨…

一款.NET开源的Windows资源管理器标签页工具

前言 今天大姚给大家分享一款基于.NET开发的可以让你在Windows资源管理器中使用Tab多标签功能的小工具&#xff1a;QTTabBar。 工具介绍 QTTabBar是一款基于.NET开发的可以让你在Windows资源管理器中使用Tab多标签功能的小工具。从此以后工作时不再遍布文件夹窗口&#xff0c…

传输控制协议(TCP)

传输控制协议是Internet一个重要的传输层协议。TCP提供面向连接、可靠、有序、字节流传输服务。 1、TCP报文段结构 注&#xff1a;TCP默认采用累积确认机制。 2、三次握手、四次挥手 &#xff08;1&#xff09;当客户向服务器发送完最后一个数据段后&#xff0c;发送一个FIN段…

c++哈希表(原理、实现、开放寻址法)适合新手

c系列哈希的原理及实现&#xff08;上&#xff09; 文章目录 c系列哈希的原理及实现&#xff08;上&#xff09;前言一、哈希的概念二、哈希冲突三、哈希冲突解决3.1、开放寻址法3.2、删除操作3.3、负载因子四、代码实现 总结 前言 红黑树平衡树和哈希有不同的用途。 红黑树、…

服务器数据恢复—raid6阵列硬盘被误重组为raid5阵列的数据恢复案例

服务器存储数据恢复环境&#xff1a; 存储中有一组由12块硬盘组建的RAID6阵列&#xff0c;上层linux操作系统EXT3文件系统&#xff0c;该存储划分3个LUN。 服务器存储故障&分析&#xff1a; 存储中RAID6阵列不可用。为了抢救数据&#xff0c;运维人员使用原始RAID中的部分…

Python酷库之旅-第三方库Pandas(250)

目录 一、用法精讲 1181、pandas.tseries.offsets.BusinessMonthEnd.is_on_offset方法 1181-1、语法 1181-2、参数 1181-3、功能 1181-4、返回值 1181-5、说明 1181-6、用法 1181-6-1、数据准备 1181-6-2、代码示例 1181-6-3、结果输出 1182、pandas.tseries.offse…

layui table 纵向滚动条导致单元格表头表体错位问题

我用的时layui2.6.8版本 历史项目维护&#xff0c;bug给我让我做了&#xff0c;本来利用前端手段强解决&#xff0c;后来发现很多table 找了解决办法 打开layui-v2.6.8/lay/modules/table.js 如果打开后时压缩的代码 直接搜索 e.find(".layui-table-patch") …

BWO-CNN-BiGRU-Attention白鲸优化算法优化卷积神经网络结合双向门控循环单元时间序列预测,含优化前后对比

BWO-CNN-BiGRU-Attention白鲸优化算法优化卷积神经网络结合双向门控循环单元时间序列预测&#xff0c;含优化前后对比 目录 BWO-CNN-BiGRU-Attention白鲸优化算法优化卷积神经网络结合双向门控循环单元时间序列预测&#xff0c;含优化前后对比预测效果基本介绍模型描述程序设计…