【网络】网络基础(框架)

news2024/9/19 15:19:25

网络基础

  • 序言:什么是网络?
  • 一、协议的概念
  • 二、网络位置
  • 三、网络协议
    • 1、协议分层
    • 2、OSI七层模型与TCP/IP五层(或四层)模型
  • 四、网络传输基本流程
    • 1、网络传输流程图
    • 2、以太网通信
      • (1)一个小故事
      • (2)原理
        • i、问题1:以太网发生数据碰撞问题
        • ii、问题2:数据安全问题
        • iii、交换机有效避免数据碰撞问题
        • iv、如何看待局域网
    • 3、跨网络传输
      • (1)令牌是什么
      • (2)ip地址小故事
        • i、ip地址是什么?
        • ii、为什么要有ip地址?
        • iii、ip地址vsmac地址
        • iv、ipv4
      • (3)数据包转发:一切皆ip报文
    • 4、网络通信脉络
  • 五、数据报封装和分用
    • 1、封装
    • 2、分用
  • 六、总结


序言:什么是网络?

独立模式: 计算机之间相互独立
在这里插入图片描述
计算机由于是相互独立的状态,我们前期就有一个光驱或者是软盘的东西,将终端1处理完的数据存到软盘中再给终端2去进行处理,再将终端2处理完的数据继续存到软盘中给终端3进行处理,这一方面其实看似跟个流水线处理比较方便易于理解,但是其效率大大降低,因为前面的业务处理过慢必定影响到后面业务的处理。

网络互联: 多台计算机连接在一起,完成数据的共享。
在这里插入图片描述
这就是网络的发展了!可是这是一个地方的实验室里面机器的连接啊!可是不同实验室比如清华大学要和麻省理工大学的实验室进行互联呢?那么就有了子网和子网之间的联系了!而在传输的过程中必定会存在信号的损耗和传输的损耗,那么就有了局域网LAN,即有了交换机和路由器。

局域网LAN: 计算机数量更多了, 通过交换机和路由器连接在一起
在这里插入图片描述
广域网WAN: 将远隔千里的计算机都连在一起
在这里插入图片描述

所谓 “局域网” 和 “广域网” 只是一个相对的概念. 比如, 我们有 “天朝特色” 的广域网, 也可以看做一个比较大的局域网。

互联网的发展要么是政策支持,要么是私企支持,我们国家最开始的时候是政策上支持互联网。所以每个国家发展互联网都是需要电信业务运营商支持的。

一、协议的概念

“协议” 是一种约定。计算机之间的传输媒介是光信号和电信号. 通过 “频率” 和 “强弱” 来表示 0 和 1 这样的信息. 要想传递各种不同的信息, 就需要约定好双方的数据格式。
举个例子:出门上大学跟父亲进行一个约定,打电话响一声就是保平安,响两声就是要打钱,响三声就是要接电话有重要的事情要说。这种传输方式就叫做协议/约定,这样子非常方便了,只需要一个协定则处理了很多事情而且处理很简单且不费时,而这个协议该怎么订?这么多嘈杂的环境下怎么订协议?

计算机生产厂商有很多;
计算机操作系统, 也有很多;
计算机网络硬件设备, 还是有很多;
如何让这些不同厂商之间生产的计算机能够相互顺畅的通信? 就需要有人站出来, 约定一个共同的标准,
大家都来遵守, 这就是 网络协议跳到第三章节

问题系列:
如何定位主机的问题?
答:类似于菜鸟驿站一样,我要邮寄到那边要填好邮出的地址和邮到的地址!

你怎么保证你的数据准确的传送到了下一台设备了呢?
答:菜鸟驿站会告诉你。买家根本不管。

长距离转发过程中数据产生丢失了怎么办?
答:我不管,这是菜鸟驿站的锅啊!让菜鸟驿站赔!

如何处理发来的数据?
答:这是一个应用的问题!

由上面的问题我们就引出了分层的概念,每一层有每一层不同的作用和分层概念。
但为什么会有上面的这些问题?本质就是因为传输的距离变长了。

协议的报头:
多出来的信息,即快递盒子外面贴的快递单和外面包装的纸盒子。
在这里插入图片描述

那么报头报文是什么?怎么搞的?其实这些东西就是C语言的结构体的面向对象!因为我们在发送方定义结构体A,接收方定义结构体B,这两个结构体成员是一样的,我们只需要将结构体A与结构体B中的数据进行匹配对应不就好了吗?而管理则是先描述再组织呗,协议这就是一个简单的结构体进行管理和对应的关系。只要我们一想到协议就想到结构体即可。

二、网络位置

我们通常在手机和电脑上使用很多APP,比如我们常用的抖音、微信、QQ、淘宝等,这些APP都是在操作系统的应用层的,用户在应用层的各种请求最终会下达给操作系统操作系统除了进程管理、文件管理、内存管理、驱动管理之外,还有一个内嵌的软件协议栈,协议栈将用户的数据进行各种封包后,通过网卡将数据传递到网络中,数据在网络内部经过各种路由器转发,最终将数据都传送到了目标的服务器中。
而目标服务器其本身也是一台计算机,该计算机的操作系统是linux,而我们分钟访问目标服务器时使用的可能是windows、安卓或者是IOS等操作系统。此外,对端服务器也有自己的协议栈,对端服务器将拿到数据通过协议栈进行各种解包操作后上交给应用层,在对端服务器的应用层就有一个对应的软件服务器,比如抖音服务器、快手服务器、淘宝服务器等,软件服务器内部对收到的用户请求进行各种分析处理后,再将对应的数据以相同的方式返回给用户。

在这里插入图片描述

不同操作系统的进程管理、文件管理、内存管理、驱动管理的实现方式可能是不一样的。比如Windows和Linux实现多线程的方式是不一样的,Linux当中的线程是用轻量级进程模拟的,而Windows当中是有真正意义上的线程的。
而协议栈是网络标准组织定义的,是具有全球性质的,所有的操作系统都必须支持。也就是说,虽然客户端和服务端可能使用的是不同种类的操作系统,但每个操作系统实现网络协议栈的方法包括各种细节都是一样的,因此双方对数据进行的封包和解包操作都是一样的。

我们知道的是,操作系统中包含进程管理、文件管理、内存管理、驱动管理这四大模块,操作系统层与用户层之间有着系统调用层,操作系统层往下是驱动层,而驱动层再往下就是各种硬件设备了。

在这里插入图片描述

三、网络协议

技术落地,应用于不同的应用场景才是我们程序员需要去铭记的!

1、协议分层

C++的继承和回调函数就是分层。
规模太大,需要分层;协议的问题解决就是层状的,所以分层解决。

在这里插入图片描述
分层最大的好处在于 “封装” . 面向对象例子。

2、OSI七层模型与TCP/IP五层(或四层)模型

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

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

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

在这里插入图片描述

在这里插入图片描述

物理层我们考虑的比较少. 因此很多时候也可以称为 TCP/IP四层模型.
一般而言

对于一台主机, 它的操作系统内核实现了从传输层到物理层的内容;
对于一台路由器, 它实现了从网络层到物理层;
对于一台交换机, 它实现了从数据链路层到物理层;
对于集线器, 它只实现了物理层

问题:网络协议栈和操作系统什么关系?
注意:网络通信就是访问硬件。本质就是贯穿协议栈的过程。
在这里插入图片描述

通信:本质就是贯穿,而我们体会到的是层与层之间的通信,但实际的本质是贯穿后通信(不管从上往下贯穿还是从下往上贯穿)。
在这里插入图片描述

四、网络传输基本流程

1、网络传输流程图

在这里插入图片描述

两台计算机通过TCP/IP协议通讯过程:
在这里插入图片描述

问题系列:
1、解包过程中进行报头和有效载荷分离的过程很难,所以我们的几乎每一层的协议,都要提供一种能力,将报头和有效载荷分离的能力。
2、我们在解包过程中,往上是有很多不一样的协议,所以我们几乎任何层的协议,都要在报头中提供决定将自己的有效载荷交付给上层的哪一个协议的能力,这就是分用的能力。

有了上面两个功能,面对封装和解包才不会感到困惑并且这是大部分协议的共性。

2、以太网通信

(1)一个小故事

在这里插入图片描述

(2)原理

在这里插入图片描述

i、问题1:以太网发生数据碰撞问题

想象一下,一个很吵的环境下,东一句西一句,就好比晨读,大家声音都很大很嘈杂,那么必然导致发送的数据很杂很乱导致会产生数据碰撞的问题,那么就有了碰撞避免的算法,也就是多台主机等一个随机数的时间再发送数据和报文,这样每台主机的发送时间各不相同,那么就大大减少了数据碰撞的问题。碰撞域和碰撞避免。

ii、问题2:数据安全问题

因为在以太网通信的过程中,一台主机向另一台主机发送数据的时候,其结果是该局域网中每一台主机均接收到发送的报文,但每台主机的网卡在接收这些报文发现目标地址不是自己的话就直接将报文进行丢弃了。但网卡既有正常模式,也有混杂模式,接收主机都要往上解析报头看一看的,所以在发送的时候只需要加密就好了。

iii、交换机有效避免数据碰撞问题

划分碰撞域的功能。
在这里插入图片描述

iv、如何看待局域网

多台主机所共享的一个临界资源。
每台主机每个应用都可以发送接收数据,但在一个时间只能有一台主机一个应用在接收/发送数据!

3、跨网络传输

跨网段的主机的文件传输. 数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器。

(1)令牌是什么

其实就是锁,因为在某一个以太网中的某一台主机持有令牌才能发报文信息。

(2)ip地址小故事

i、ip地址是什么?

在这里插入图片描述

ii、为什么要有ip地址?

指导我们进行路径规划,拿着不变的ip地址不断对目标地进行路由。

iii、ip地址vsmac地址

ip地址,尤其是目的ip,一般都是不会改变的,协助我们进行路径选择。
mac地址,出局域网后,源和目的都要丢弃,让路由器重新封装。

认识IP地址
IP协议有两个版本, IPv4和IPv6. 我们整个的课程, 凡是提到IP协议, 没有特殊说明的, 默认都是指IPv4
IP地址是在IP协议中, 用来标识网络中不同主机的地址;
对于IPv4来说, IP地址是一个4字节, 32位的整数;
我们通常也使用 “点分十进制” 的字符串表示IP地址, 例如 192.168.0.1 ; 用点分割的每一个数字表示一个字节, 范围是 0 - 255;
认识MAC地址
MAC地址用来识别数据链路层中相连的节点;
长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)
在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些网卡支持用户配置mac地址).

iv、ipv4

ipv4是四字节,32比特位,整数,类似于:192.168.1.1风格的。

(3)数据包转发:一切皆ip报文

在这里插入图片描述

底层差异我们完全看不到,忽略了,那么无线网是个什么东西,不就是将我们上面的那张图片的令牌网改成无线LAN就好了吗?底层差异我们不看,我们只关心上层协议就好了。

4、网络通信脉络

在这里插入图片描述

五、数据报封装和分用

不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链路层叫做帧(frame).
应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation).
首部信息中包含了一些类似于首部有多长, 载荷(payload)有多长, 上层协议是什么等信息.
数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部, 根据首部中的 “上层协议字段” 将数据交给对应的上层协议处理

1、封装

在这里插入图片描述

2、分用

在这里插入图片描述

六、总结

传输层报头+有效载荷称为数据段或数据报
网络层报头+有效载荷称为数据报
数据链路层报头+有效载荷称为数据帧

在这里插入图片描述

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

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

相关文章

解答word图标变白

把WPS卸载了之后就变成白色了,然后在注册表中把word的地址改成office word的地址之后图标变成这样了,怎么办 1.winR打开命令提示符 2.输入regedit,打开注册表编辑器 3.找到下面这个路径 计算机\HKEY_CLASSES_ROOT\Word.Document.8\Defaul…

从零开始学量化~Ptrade使用教程(七)——期权相关操作

期权交易 可点击证券代码右侧的选,进入期权选择菜单。通过选择标的商品,认购期权和认沽期权中间的选项(包括代码、成交价、幅度%、隐波%、内在价值、时间价值等),以及认购期权或认沽期权,选择所需的期权标的…

2024年第二季度 DDoS 威胁趋势报告

2024 年上半年,Cloudflare 缓解了 850 万次 DDoS 攻击:第一季度 450 万次,第二季度 400 万次。总体而言,第二季度 DDoS 攻击数量环比下降了 11%,但同比增长了 20%。 DDoS 攻击分布(按类型和手段&#xff09…

pycharm中运行.sh文件

最近在跑一个项目代码,里面要运行.sh文件。于是配置了下如何在pycharm中正常运行.sh文件。 首先安装好git,然后 File—>Settings—>Tools—>Terminal—>Shell path,将cmd.exe改成刚刚下载的git的路径,注意选择的是s…

【MySQL进阶之路 | 高级篇】EXPLAIN的进一步使用

1. EXPLAIN的四种输出格式 EXPLAIN可以输出四种格式:传统格式,JSON格式,TREE格式以及可视化输出。用户可以根据需要选择使用于自己的格式。 1). 传统格式 传统格式简单明了,输出是一个表格形式。 2). JSON格式 第一种格式中介…

wireshark抓包语法

主要功能 Wireshark 的主要功能包括: 实时数据捕获:能够捕获实时流量并对其进行分析。数据包解码:支持数百种网络协议,能够解码并显示各种协议的详细信息。过滤功能:提供强大的过滤功能,可以根据特定条件…

esp32c2-ble-2mb-at,蓝牙AT固件获取方法

文章目录 1. 背景2. 本地编译3. 环境安装依赖包下载1. 背景 最近在做一个数据透传项目,买了一块ESP32-C2 2MB的开发板,WIFI透传串口数据功能调通了(感兴趣的小伙伴可以了解下ESP32-C2模组数据透传模式配置详细教程),想试试蓝牙透传,官方给出的说法是BLE固件未发布,可以从…

项目收获总结--大数据量存储架构设计方案

项目收获总结--大数据量存储架构设计方案 一、背景二、数据存储层技术选型2.1 MySQL2.2 MongoDB2.3 HBase2.4 HBaseElasticSearch 三、HBaseElasticSearch基本原理3.1 前置考虑3.2 HBaseElasticSearch优点3.3 HBaseElasticSearch缺点 四、HBaseElasticSearch数据一致性架构4.1 …

A Survey on Multimodal Large Language Models综述

论文题目:A Survey on Multimodal Large Language Models 论文地址:https://arxiv.org/pdf/2306.13549 话题:多模态LLMs综述 MLLMs Paper: https://github.com/BradyFU/Awesome-Multimodal-Large-Language-Models 1. 摘要 近期,以GPT-4V为代表的跨模态大型语言模型(MLLM…

vue3前端开发-小兔鲜项目-人气推荐栏目的前端渲染

vue3前端开发-小兔鲜项目-人气推荐栏目的前端渲染!今天和大家分享一下,人气推荐栏目的前端页面如何渲染内容。 经历过上一次的,新鲜好物的栏目渲染之后,我们已经熟练了,vue3的接口调用,数据渲染到页面中的整…

Zabbix监控介绍与部署

目 录 一、zabbix介绍和架构 1.1 zabbix介绍 1.2 为什么需要监控 1.3 需要监控什么 二、zabbix使用场景与系统概述 2.1 zabbix的功能 2.2 zabbix架构 2.3 Zabbix术语 三、编译安装zabbix 3.1 安装依赖环境 3.2 建立管理用户 3.3 准备源码包,解压包 3.…

数据结构初阶-单链表

链表的结构非常多样,以下情况组合起来就有8种(2 x 2 x 2)链表结构: 而我们主要要熟悉的单链表与双向链表的全称分别为:不带头单向不循环链表,带头双向循环链表,当我们对这两种链表熟悉后&#x…

基于python深度学习遥感影像地物分类与目标识别、分割实践技术应用

目录 专题一、深度学习发展与机器学习 专题二、深度卷积网络基本原理 专题三、TensorFlow与Keras介绍与入门 专题四、PyTorch介绍与入门 专题五、卷积神经网络实践与遥感图像场景分类 专题六、深度学习与遥感图像检测 专题七、遥感图像检测案例 专题八、深度学习与遥感…

【教学类-68-01】20240720裙子涂色(女孩篇)

背景需求: 通义万相下载了简笔画裙子,制作成涂色卡给幼儿涂色、剪纸用。 代码展示 裙子简笔画图 6张 星火讯飞、通义万相、阿夏 2024年7月20日import os,time import shutil from docx import Document from docx.shared import Cm from PIL import Ima…

ApolloAndroid 使用笔记

由于业务需求的变化,需要使用 Graphql 作为客户端与服务端的交互查询框架,特此记录使用。 测试代码下载链接 一、导入引用以及规则示例 1、首先需要在我们需要使用的模块下面创建对应的src/main/graphql文件夹 2、将后台对应的服务生成的 xxx.graphql…

1个Xpath定位可以在Web页面查找到多个元素Selenium

1个Xpath定位可以在Web页面查找到多个元素Selenium//input[id\"transactionId\"] 打开Web页面, 点击F12可以看到压面 点击Ctrl F 可以点图如下图的输入框,输入xpath,看右侧可以找到3个对应的元素 点击Ctrl F 点击Ctrl F 点…

【C语言】逗号运算符详解 - 《不起眼的 “逗号”》

目录 C语言逗号运算符详解1. 逗号运算符的定义1.1 基本语法1.2 执行顺序 2. 逗号运算符的用法2.1 用于循环2.1.1 示例 2.2 用于表达式组合2.2.1 示例 3. 逗号运算符的应用场景3.1 宏定义3.1.1 示例 3.2 条件运算符中的应用3.2.1 示例 4. 总结5. 参考文献6. 结束语 C语言逗号运算…

通信网络机房服务器搬迁流程方案

数据中心机房搬迁是一项负责高难度的工程。整个搬迁过程充满挑战,伴随着各种风险。如何顺利的完成服务器的迁移,需要专业的数据中心服务商全程提供保障。友力科技(广州)有限公司,作为华南地区主流的数据中心服务商&…

Python代码,强化学习,深度学习

python代码编写,Python算法设计,强化学习优化,改进模型,训练模型,测试模型,可视化绘制,代编运行结果,交互多模型改进,预测模型,算法修改,Python包…

docker: No space left on device处理与迁移目录

简介:工作中当遇到Docker容器内部的磁盘空间已满。可能的原因包括日志文件过大、临时文件过多或者是Docker容器的存储卷已满,需要我们及时清理相关文件,并对docker的路径进行迁移。 历史攻略: centos:清理磁盘空间 …