网络原理~初识

news2024/11/20 15:26:23

今天开始介绍的是网络,这是最核心最重要的板块之一~

目录

网络互连

局域网 LAN

广域网WAN

网络通信基础

IP地址

端口号

协议

发送方的工作

应用层

传输层

网络层

数据链路层

物理层

接收方的工作


网络互连

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

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

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

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

但是我们需要组建网络需要网络设备,在这里我们简单的介绍集线器交换机路由器

局域网 LAN

局域网,即 Local Area Network,简称LAN。 Local 即标识了局域网是本地,局部组建的一种私有网络。局域网内的主机之间能方便的进行网络通信,又称为内网;局域网和局域网之间在没有连接的情况下, 是无法通信的。

 

 

广域网WAN

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

需要注意的是,广域网和局域网只是一个相对的概念,我们有一个比较小的广域网,也可以看做是一个较大的局域网。

网络通信基础

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

IP地址

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

就像我们发送快递一样,需要知道对方的收货地址,快递员才能将包裹送到目的地。

格式 :IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节),如: 01100100.00000100.00000101.00000110。通常用“点分十进制”的方式来表示,即 a.b.c.d 的形式(a,b,c,d都是0~255之间的十进制整数)。例如最熟悉的:192.168.1.1

特殊IP :127.*的IP地址用于本机环回(loop back)测试,通常是127.0.0.1 本机环回主要用于本机到本机的网络通信(系统内部为了性能,不会走网络的方式传输),对于开 发网络通信的程序(即网络编程)而言,常见的开发方式都是本机到本机的网络通信。

IP地址解决了网络通信时,定位网络主机的问题,但是还存在一个问题,传输到目的主机后,由哪个进程来接收这个数据呢?这就需要端口号来标识。

端口号

端口号可以标识主机中发送数据、接收数据的进程。简单说:端口号用于定位主机中的进程。

类似发送快递时,不光需要指定收货地址(IP地址),还需要指定收货人(端口号)。

格式 :端口号是0~65535范围的数字,在网络通信中,进程可以通过绑定一个端口号,来发送及接收网络数据。

两个不同的进程,不能绑定同一个端口号,但一个进程可以绑定多个端口号。

有了IP地址和端口号,可以定位到网络中唯一的一个进程,但还存在一个问题,网络通信是基于二进制 0/1数据来传输,如何告诉对方发送的数据是什么样的呢? 网络通信传输的数据类型可能有多种:图片,视频,文本等。同一个类型的数据,格式可能也不同,如发送一个文本字符串“你好!”:如何标识发送的数据是文本类型,及文本的编码格式呢? 基于网络数据传输,需要使用协议来规定双方的数据格式。

协议

协议是网络通信中最核心的概念。

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

通常由三要素组成:

1. 语法:即数据与控制信息的结构或格式;

2. 语义:即需要发出何种控制信息,完成何种动作以及做出何种响应;

3. 时序,即事件实现顺序的详细说明。

协议(protocol)最终体现为在网络上传输的数据包的格式。

为什么需要协议?

计算机之间的传输媒介是光信号和电信号。

通过 "频率" 和 "强弱" 来表示 0 和 1 这样的信息。要想传递各种不同的信息,就需要约定好双方的数据格式。 计算机生产厂商有很多; 计算机操作系统,也有很多; 计算机网络硬件设备,还是有很多; 如何让这些不同厂商之间生产的计算机能够相互顺畅的通信? 就需要有人站出来,约定一个共 同的标准,大家都来遵守,这就是网络协议。

网络通信,是一个比较复杂的事情,需求场景复杂了,实现功能也会比较复杂。如果这个协议太复杂了,那么学习成本、使用成本、理解成本、维护成本都会非常高。因此实际采取的做法是:

针对这个复杂的大协议,拆分成若干个相对简单的小协议。随着把协议拆分成一些小的协议,每个协议负责一部分功能,此时就发现,某些协议之间,起到的功能和作用是类似的~针对这些小的协议,再进行(分类、分层)。

当前互联网世界,协议分成有两种风格:

OSI七层网络模型(教科书上教的)

TCP\IP五层网络模型(实际上的情况)(不算物理层就是四层)

越往下,越接近硬件设备。越往上,越接近用户。

直接和咱们打交道的,其实只是应用层,下面四层都是现成的,只需要知道如何工作的就行了~

应用层是应用程序实现的,下面两层是通过硬件和驱动设备来实现的。

下面我们就来详细的说说每个层之间会干一些什么事情:

首先我们假设一个应用场景:

用户在输入框中输入hello这个字符串,用qq这个应用程序就会把这个字符串构造成一个应用层数据报

发送方的工作

应用层

应用层数据具体的数据格式我们是不知道的,每个应用程序都不一样。我们这里假设一个应用层协议的格式:

应用层数据报本质上就是一个遵守了约定格式的字符串,程序调用操作系统的API,把这个应用层数据交给传输层。

传输层

到传输层就代表着从应用层面进入到操作系统内核了。

在传输层中,就要把上述应用层数据,构造成传输层的数据报。

传输层使用到的协议最知名的就是UDPTCP。比如此处使用UDP,那么就需要构造出UDP数据报,比如在应用层数据的基础上加上一个UDP报头。

 此处就像字符串拼接一样,把这个报头和后面的数据拼接到一起。所谓的报头其实就是一个标签,通过标签表示出当前要把这个消息怎样进行传输。

网络层

最知名的协议:IP协议。IP协议要基于上述数据,打包成一个IP数据报。

也相当于是一个字符串,包含了另外一组信息:源IP和目的IP。

之后网络数据报准备好,进一步的交给数据链路层。

数据链路层

最知名的协议:“以太网”。基于上述数据,还要打包成为一个“以太网数据帧”。

 接下来这个数据继续往下传输,交给物理层。

物理层

把上述的二进制数据转换成电信号\光信号,然后发送出去。

上述过程,从应用层到物理层,层层加码,这个过程称为“封装”。

接收方的工作

上述,从下到上,层层解析,这个过程称为“分用”。

其中,发送方使用的QQ协议、UDP、IP、以太网,必须接收方也使用对应相同的协议。

整个的网络协议中,协议分成了很多层。上层协议要调用下层协议,下层协议要给上层协议提供支持。这几层协议之间是有明确的层级关系的,只有相邻的两层才能交互。(不能跨层交互)。

所以通过上述这些约束,让通信过程变得简单、清晰起来。

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

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

相关文章

C语言-贪吃蛇 1.输入控制ncurse

一、为什么要用nurse C语言中的gets()、scanf()、getchar()等函数是在用户输入后需要按下Enter键才能执行代码,而贪吃蛇要求按下按键后立即对蛇的方向进行操作,所以根据贪吃蛇功能的需求引入ncurse,让用户输入后就能让蛇进行对应的行动。 二、…

C#和JS交互之Microsoft.ClearScript.V8(V8引擎)

之前测试了很多JS引擎,都只支持es5语法,不支持执行es6,测试了下微软的V8反正能跑通,应该是支持的。还得是微软呀。 如图:安装相关包: 这是参考的官方V8代码 using Microsoft.ClearScript.JavaScript; us…

STM32使用HAL库驱动DS3231

1、STM32通讯口配置 启动IIC,默认配置即可。 2、头文件 #ifndef __DS3231_H #define __DS3231_H#include "main.h"#define DS3231_COM_PORT hi2c1 /*通讯端口*//**************************** defines *******************************/ #define DS3231…

什么是UI自动化测试工具?

UI自动化测试工具有着AI技术驱动,零代码开启自动化测试,集设备管理与自动化能力于一身的组织级自动化测试管理平台。基于计算机视觉技术,可跨平台、跨载体执行脚本,脚本开发和维护效率提升至少50%;多端融合统一用户使用体验&#…

淘宝天猫店铺所有商品数据接口,淘宝API接口

获取淘宝店铺所有商品数据接口的步骤如下: 获取授权:使用 OAuth 2.0 协议对应用进行授权,以便能够访问店铺的商品信息。获取店铺信息:使用淘宝 API 的 taobao.shop.get 接口,传入店铺的 user_id 参数,获取…

Ghidra101再入门(上?)-Ghidra架构介绍

Ghidra101再入门(上?)-Ghidra架构介绍 最近有群友问我,说:“用了很多年的IDA,最近想看看Ghidra,这应该怎么进行入门?“这可难到我了。。 我发现,市面上虽然介绍Ghidra怎么用的文章和书籍很多&…

ASEMI整流桥GBU810参数,GBU810封装

编辑-Z GBU810参数描述: 型号:GBU810 最大直流反向电压VR:1000V 最大工作峰值反向电压VRWM:700V 最大平均正向电流IF:8A 非重复正向浪涌电流IFSM:200A 操作和储存温度范围TJ ,TSTG:-55 t…

Ubuntu18.04下载安装基于使用QT的pcl1.13+vtk8.2,以及卸载

一、QVTKWidget、QVTKWidget2、QVTKOpenGLWidget、QVTKOpenGLNativeWidget 区别 1.Qt版本 Qt5.4以前版本:QVTKWidget2/QVTKWidget。 Qt5.4以后版本:QVTKOpenGLWidget/QVTKOpenGLWidget。 2.VTK版本(Qt版本为5.4之后) 在VTK8.2以前的版本:QVT…

企业如何使用CRM客户管理系统全面了解客户

B2B业务由于决策链长,涉及的部门和人员多,购买周期短则2、3个月,长则一年半载的原因一直被大家痛呼难做。B2B业务要求企业去认识客户,更要深入地了解客户。基于这种需求,使用CRM客户管理系统是企业全面了解客户的重要手…

C++入门之命名空间详解

一、为什么要使用命名空间 命名空间的功能就是区分不同的代码段,避免使用不同代码时带来变量名冲突的问题。 在写C语言代码时,常常回面临命名冲突的问题。例如: 可以成功运行。 但是如果要使用 time.h 头文件时,就会与库发生冲突…

C++primer 第二章 变量和基本类型

昨天思考了一下,感觉明白了。于是报名了软考,还有挑战z杯,想着四级还要不要报,毕竟我也不是有天赋的人,就只能努力去做个努力的人。加油!!! 不知道未来怎么样,那就走好现在吧!!&…

Tableau:商业智能(BI)工具

Tableau入门 1、Tableau概述2、Tableau DesktopTableau保存文件类型和文件夹 1、Tableau概述 Tableau 成立于 2003 年,Tableau于2019年被 Salesforce 收购,是斯坦福大学一个计算机科学项目的成果,该项目旨在改善分析流程并让人们能够通过可视…

重新定义公共厕所,智慧公厕最新解决方案与推广路径

随着科技的进步,现代城市管理的智慧化解决方案在不断挑战传统的管理方式,而在智慧城市领域有一个热点的物联网应用解决方案——智慧公厕。智慧公厕不仅仅是公共厕所的升级版,它也是城市文明,高效,环保和科技的体现。本…

echarts实现圆柱体 渐变柱体

const weatherIcons [ { lable: ‘寿险’, id: 2, img: require(/assets/images/customerModule/title-action.png) }, { lable: ‘重疾’, id: 3, img: require(/assets/images/customerModule/title-action.png) }, { lable: ‘医疗’, id: 4, img: require(/assets/images/…

区块链跨链技术

区块链跨链技术 背景 近年来,随着区块链技术的不断发展,区块链的应用场景逐渐从最初的加密货币领域扩展到金融、物流、医疗、公共服务等各个领域。随着区块链的应用场景不断增多,区块链的“数据孤岛”问题日益突出,不同场景下的…

yolov8剪枝实践

本文使用的剪枝库是torch-pruning ,实验了该库的三个剪枝算法GroupNormPruner、BNScalePruner和GrowingRegPruner。 安装使用 安装依赖库 pip install torch-pruning 把 https://github.com/VainF/Torch-Pruning/blob/master/examples/yolov8/yolov8_pruning.py&…

Mac系统清理工具BuhoCleaner

BuhoCleaner是一款在Mac电脑上运行的清洁软件。它的界面简洁,易于使用,能够快速扫描Mac电脑上的垃圾文件、重复文件、大型文件等,帮助用户清理不需要的文件,释放磁盘空间。 该软件的主要功能包括: 垃圾文件清理&…

哈希桶封装unordered set和map

目录 进一步实现哈希桶 引入 keyofValue 迭代器 insert返回值 operator[ ] key不能修改 模拟实现 keyofValue 代码 迭代器 谁在前 普通迭代器转换为const迭代器 const *this 问题 代码 insert和erase const迭代器转换为普通迭代器 key不能修改 完整版代码 …

前端axios发送请求,在请求头添加参数

1.在封装接口传参时,定义形参,params是正常传参,name则是我想要在请求头传参 export function getCurlList (params, name) {return request({url: ********,method: get,params,name}) } 2.接口调用 const res await getCurlList(params,…

电力智能运维管理平台:提升电力行业运营效率与安全

随着电力行业的不断发展,电力系统的运维管理逐渐成为关注的焦点。如何在保证供电稳定的同时,提高运营效率,降低运营成本,是电力行业面临的挑战。电力智能运维管理平台,正是在这一背景下应运而生的一种解决方案。 力…