初识网络原理(笔记)

目录

​编辑局域网

网络通信基础

IP 地址

端口号

协议

协议分层

TCP / IP 五层网络模型

网络数据传输的基本流程

发送方的情况:

接收方的情况


局域网

 搭建网络的时候,需要用到 交换机 和 路由器

路由器上,有 lan 口 和 wan 口

虽然路由器只有 4 个 lan 口

实际上组建的局域网,可以有更多的设备,就可以用到交换机

交换机的口是不分 lan 口 和 wan 口 的,所有的 口 都是等价的

组件企业网络,往往需要一个企业级路由器+ 若干个企业级交换机,延伸出很多的网线,供大家使用

AP 相当于一个不用插网线的小交换机(提高无线热点扩容能力)

路由器,可以进行三层(网络层)转发

交换机,是进行两层(数据链路层)转发

这个定义是站在经典的路由器/ 交换机的定义上看待的

实际上现代的交换机/ 路由器之间的差异越来越小了,之间的功能也是有很多重合的

集线器是把一根网线,分成多个岔口,但是和交换机有本质区别

交换机分出来的这个岔口,彼此之间是独立的,不干扰的

集线器分出来的岔口,是会冲突的

局域网和广域网,并没有一个明确的界限

当局域网中,设备数量非常多,局域网空间跨度特别大,就可以称为广域网了


网络通信基础

IP 地址

使用 ip 地址,来描述网络上一个设备所在的位置


端口号


用来区分一个主机上不同的应用程序

一个网络程序,在启动的时候,都需要绑定一个或者多个端口号,后续的通信过程都需要依赖端口进行展开的


协议

描述了网络通信传输的数据的含义

网络通信协议,虽然更复杂,但是本质上也是认为约定出来的一些规则

网络发展这么多年了,很多细节,都已经有规定出来的协议了

我们做的主要就是学习已经约定好的协议

为什么要约定好协议呢?

电脑种类很多,设备的厂商也很多,必须有一份统一的协议标准,让大家按照同样的标准来研发设备,这样大家弄出来的东西就可以在一起相互通信了


协议分层

网络通信,是一个比较复杂的工作,会涉及到一系列非常繁琐,非常细节的工作

靠一个协议解决所有问题会导致这个协议非常复杂,非常庞大

因此就需要对协议进行拆分,由于拆分出来的协议有点多,就对这些协议进行分类,分层

对于网络协议来所,往往分成几个层次进行定义

上层协议调用下层协议

下层协议给上层协议提供服务支持

也就是属于这些协议搞了明确的层级关系,可以避免跨层级调用引起的混乱,降低耦合,提高了整个系统的可读性

这个图就很好描述了分层

(1)上层不需要了解下层的细节(封装)

(2)灵活的 调整 / 替换 某层的协议


协议分层,主要有两种方式:OSI 七层网络模型(只是在教科书上) , TCP / IP 五层网络模型

TCP / IP 五层网络模型

如果算上物理层,就是五层,如果不算上物理层,就是四层

因为物理层是偏硬件的,和软件关系不大 

物理层:

描述的是网络通信中的一些基础设施需要遵守的规范

会约定 网线,网口是什么样子的

数据链路层

相邻节点之间,数据如何运输 

网络层

进行路径规划 

上海 -> 北京,有很多的路线走法 ,快递公司就需要规划处商品走哪个路线

传输层

只关注起点和终点,不关注中间过程(数据从哪里出发,要到哪里去) 

应用层

拿到这个数据,具体用来干什么

不同的应用程序,就会使用不同的应用层协议来通信(也可能用相同的)

传输层协议,网络层协议,都是属于操作系统中的,已经内置的

驱动程序,是硬件厂商提供的,驱动程序会和系统内核进行适配,进一步的系统就可以通过驱动来操作硬件了


网络数据传输的基本流程

用四个字概括:封装和分用

以 QQ 发送消息为例,介绍网络数据传输的基本流程

A 把消息通过 QQ 发给主机 B

网络通信中的 “五元组” : 源ip ,源端口,目的ip ,目的端口,协议类型

发送方的情况:

1、应用层

QQ 应用程序,从输入框获取到你要输入的消息,构造成应用层数据报(根据应用层协议)

很多应用程序里会自定义应用层协议,QQ 使用的是什么协议,我们是不知道的

假设  QQ 的应用层协议是这样的:

所谓的 “构造应用层数据报” 过程,就是按照一定格式进行字符串拼接

发送方和接收方,需要达成一致

应用程序,就会调用传输层提供的接口,把上述数据交给传出层进行处理


2、传输层

传输层协议有很多,其中最主要的是 TCP 和 UDP 

此处假设使用 UDP

上面数据从应用层传到了传输层,交给了 UDP ,于是 UDP 协议就要按照自己的格式,生成一个 UDP 数据报

UDP 不关心应用层数据里面都有啥,都是啥内容,只是把应用层数据当做一个字符串,构造出一个 UDP 数据报

类似于快递小哥在取件的时候,不关心快递具体是啥东西,只是关心尺寸和重量(包裹中能不能放下)

快递小哥在拿到东西之后,会再包装一下,贴上标签

此时,传输层会把构造好的 UDP 数据报,进一步交给网络层


3、网络层

网络层最主要的协议,就是 IP 协议

IP 协议也会根据自己的格式,构造出一个 IP 数据报

IP 协议不关心这里的载荷内容是啥,只是单纯的把在和当做一个字符串,再这个基础上拼接上另外一个 IP 报头

接下来, 还需要把数据传输给数据链路层


4、数据链路层

以太网(平时上网需要插一个网线)

以太网,又会针对 IP 数据报,进行进一步封装,再添上数据头和数据尾

以太网也不关心载荷里是啥,只是把载荷当成字符串,进一步拼接上帧头帧尾,构造成 以太网数据帧

上述这样的数据,还需要进一步交给物理层


5、物理层

硬件设备(网卡)

本质上都是二进制的数据(一组0101 构成的)

硬件设备就需要对上述数据进行转换了(光信号 / 电信号 / 电磁波)

到这里,主机A 完成了发送过程


接收方的情况

此处,我们先不考虑中间过程

1、物理层

硬件设备受到 光信号 / 电信号 / 电磁波,需要把受到的信号进行解调,得到了一串 0101 的二进制数据序列,也就是以太网数据帧

调制:把你要传输的信息放到光电信号中

解调:从光电信号中把信息取出来

这个数据就需要被交给上一层,数据链路层


 2、数据链路层

数据链路层的以太网协议,就会针对这个数据进行解析

 此时,再把载荷部分取出来,交给上层(IP协议)


3、网络层

IP 协议针对这个数据报进行解析,去掉 IP 报头,取出载荷,进一步的交给传输层


4、传输层

根据 IP 报头里的字段,就知道当前这个载荷是一个 UDP 数据报,交给 UDP 处理

UDP 也是要针对数据报进行解析,去掉报头,取出载荷,进一步交给应用程序


 5、应用层

UDP 报头中,有一个字段,目的端口,根据目的端口找到关联的应用程序,就交给这个程序即可

qq程序接收到了这个数据,就会按照qq 的应用层协议,进行解析

把这里的数据显示到页面上

在qq 中,对应的头像就开始闪烁,点进去,就能显示出这个新的消息以及消息的时间等信息


主机 A 从上到下,依次添加报头的过程,称为封装

主机 B 从下到上,依次解析报头的过程,称为分用

封装就是在打包快递,分用就是在拆快递

每次网络数据的传输,都是要经历这个过程的

消息转发到某个设备,每个设备处理流程都是和上面的封装分用是一样的

如果是一个交换机,交换机分用到数据链路层即可

交换机解析出以太网数据帧,进一步的获取到帧头中的 “mac 地址” ,根据 mac 地址查询到交换机内部的转发表,确定接下来数据从哪个网口发出去

在发送之前,又会重新把以太网数据帧封装好

路由器则是封装分用到网络层

解析出 ip 数据包,获取到 ip 报头,根据 ip 报头中的目的ip 进一步规划接下来要走的路线

接下来又会把这个数据进行转发

上述描述的交换机路由器,只是一个经典的交换机路由器

实际上现代的交换机路由器,会做更多的事情,很可能是封装分用到应用层

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

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

相关文章

苍穹外卖 day2 反向代理和负载均衡

一 前端发送的请求,是如何请求到后端服务 前端请求地址:http://localhost/api/employee/login 路径并不匹配 后端接口地址:http://localhost:8080/admin/employee/login 二 查找前端接口 在这个页面上点击f12 后转到networ验证&#xff0…

K8s学习笔记4

场景: 项目研发部门最近要进行应用运行基础环境迁移,需要由原先的虚拟机环境迁移到K8s集群环境中,以便应对开发快速部署和快速测试的需要,因此,需要准备一套可以用于开发需求的K8s集群,但是对于仅有容器基…

Redis企业级解决方案

缓存预热 “ 宕机 ” 服务器启动后迅速宕机 问题排查 1. 请求数量较高 2. 主从之间数据吞吐量较大,数据同步操作频度较高 , 因为刚刚启动时,缓存中没有任何数据 解决方案 准备工作: 1. 日常例行统计数据访问记录,统计访…

HarmonyOS/OpenHarmony应用开发-ArkTS语言渲染控制if/else条件渲染

ArkTS提供了渲染控制的能力。条件渲染可根据应用的不同状态,使用if、else和else if渲染对应状态下的UI内容。说明:从API version 9开始,该接口支持在ArkTS卡片中使用。一、使用规则 支持if、else和else if语句。 if、else if后跟随的条件语句…

Docker的基本使用

Docker 概念 Docker架构 docker分为客户端,Docker服务端,仓库 客户端 Docker 是一个客户端-服务器(C/S)架构程序。Docker 客户端只需要向 Docker 服务端发起请求,服务端将完成所有的工作并返回相应结果。 Docker …

Midjourney API 国内申请及对接方式

在人工智能绘图领域,想必大家听说过 Midjourney 的大名吧! Midjourney 以其出色的绘图能力在业界独树一帜。无需过多复杂的操作,只要简单输入绘图指令,这个神奇的工具就能在瞬间为我们呈现出对应的图像。无论是任何物体还是任何风…

(排序) 剑指 Offer 51. 数组中的逆序对 ——【Leetcode每日一题】

❓剑指 Offer 51. 数组中的逆序对 难度:困难 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。 示例 1: 输入: [7,5,6,4] 输出: 5 限制&#xff…

铜矿人员定位安全方案

针对铜矿中的人员定位安全需求,可以采用以下方案: 1.实时人员定位系统:建立一个实时人员定位系统,通过在矿工的工作服或安全帽上安装UWB或RFID定位设备,以及相应的接收器和基站,实时跟踪和定位矿工的位置。…

设计模式——桥接模式

引用 桥我们大家都熟悉,顾名思义就是用来将河的两岸联系起来的。而此处的桥是用来将两个独立的结构联系起来,而这两个被联系起来的结构可以独立的变化,所有其他的理解只要建立在这个层面上就会比较容易。 基本介绍 桥接模式(Br…

ceph集群的扩容缩容

文章目录 集群扩容添加osd使用ceph-deploy工具手动添加 添加节点新节点前期准备新节点安装ceph,出现版本冲突 ceph-deploy增加节点 集群缩容删除osd删除节点 添加monitor节点删除monitor节点使用ceph-deploy卸载集群 实验所用虚拟机均为Centos 7.6系统,8…

Spring5学习笔记—AOP编程

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: Spring专栏 ✨特色专栏: M…

完美解决微信小程序van-field left-icon自定义图片

实现效果&#xff1a; <view class"userName"><van-field left-icon"{{loginUserNameIcon}}" clearable class"fieldName" value"{{ loginUserName }}" placeholder"请输入账号" border"{{ false }}" &g…

APP上线为什么要提前部署安全产品呢?

一般平台刚上线或者日活跃量比较高的时候&#xff0c;很容易成为攻击者的目标&#xff0c;服务器如果遭遇黑客攻击&#xff0c;资源耗尽会导致平台无法访问&#xff0c;业务也无法正常开展&#xff0c;服务器一旦触发黑洞机制&#xff0c;就会被拉进黑洞很长一段时间&#xff0…

数据结构 - 线性表的定义和基本操作

一、定义 线性表是具有相同特性的数据元素的一个有限序列。 线性表&#xff1a; 由n(n≥0)个数据元素&#xff08;结点&#xff09;组成的有限序列。线性表中数据元素是一对一的关系&#xff0c;每个结点最多有一个直接前驱&#xff0c;和一个直接后继 二、线性表的基本操作 …

GNU GRUB version 2.06 Minimal Bash-lke line editing is supported 问题修复

一、问题背景 博主喜欢折腾系统&#xff0c;电脑原来有一个windows系统&#xff0c;想整一个Linux双系统&#xff0c;结果开机时出现以下画面&#xff1a; GNU GRUB version 2.06 Minimal Bash-lke line editing is supported. TAB lists possible comand completions, Anywh…

Python文件缓冲机制

buffer 默认缓冲是4字节&#xff08;B&#xff09;即 4096 磁盘的读写 在了解缓冲之前现有了解磁盘这类的块设备读写原理&#xff0c;磁盘的读写是按照块来的&#xff0c;例如说 一个块的存储空间大小为4096B&#xff0c;那么写入1B和写入4096B所需要的时间是相同的&#xf…

【学会动态规划】 最长递增子序列(26)

目录 动态规划怎么学&#xff1f; 1. 题目解析 2. 算法原理 1. 状态表示 2. 状态转移方程 3. 初始化 4. 填表顺序 5. 返回值 3. 代码编写 写在最后&#xff1a; 动态规划怎么学&#xff1f; 学习一个算法没有捷径&#xff0c;更何况是学习动态规划&#xff0c; 跟我…

【从零开始学爬虫】采集中国国际招标网招标数据

l 采集网站 【场景描述】采集中国国际招标网招标数据。 【源网站介绍】中国国际招标网致力于为企业提供招标、采购、拟在建项目信息及网上招标采购等一系列商务服务。 【使用工具】前嗅ForeSpider数据采集系统 http://www.forenose.com/view/forespider/view/download.html 【…

Azure CLI 进行磁盘加密

什么是磁盘加密 磁盘加密是指在Azure中对虚拟机的磁盘进行加密保护的一种机制。它使用Azure Key Vault来保护磁盘上的数据&#xff0c;以防止未经授权的访问和数据泄露。使用磁盘加密&#xff0c;可以保护磁盘上的数据以满足安全和合规性要求。 参考文档&#xff1a;https://l…

【Unity】2D平台游戏初中级教程-笔记补充

文章目录 观前提醒链接地址百度网盘&#xff08;第3、4、5章的Asset内容&#xff09; 为什么要弄这篇博客&#xff1f;章节内容提示本人制作的环境 第1章&#xff1a;玩家控制器Part1&#xff1a;设置瓦片地图与分类层的顺序【1】导入素材【2】制作瓦片地图【3】调色盘与瓦片存…