初识网络原理(笔记)
目录
编辑局域网
网络通信基础
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 进一步规划接下来要走的路线
接下来又会把这个数据进行转发
上述描述的交换机路由器,只是一个经典的交换机路由器
实际上现代的交换机路由器,会做更多的事情,很可能是封装分用到应用层
相关文章:
初识网络原理(笔记)
目录 编辑局域网 网络通信基础 IP 地址 端口号 协议 协议分层 TCP / IP 五层网络模型 网络数据传输的基本流程 发送方的情况: 接收方的情况 局域网 搭建网络的时候,需要用到 交换机 和 路由器 路由器上,有 lan 口 和 wan 口 虽…...
嵌入式C语言基本操作方法之经典
C语言一经出现就以其功能丰富、表达能力强、灵活方便、应用面广等特点迅速在全世界普及和推广。 C语言不但执行效率高而且可移植性好,可以用来开发应用软件、驱动、操作系统等。 C语言也是其它众多高级语言的鼻祖语言,所以说学习C语言是进入编程世界的必…...
postgresql \watch实用的使用方法
文章目录 1.介绍2.语法3.实用的使用方法3.1 慢sql监控3.2 长wait事件3.3 日志输出量3.3结合pg_stat_database使用3.4 结合pg_stat_bgwriter使用3.5 其他 1.介绍 \watch Postgres 9.3 版带来的一个有用的命令,与linux watch指令类似,可以帮我们在指定间隔…...
Cocos2d 项目问题记录
环境搭建 正常运行 Android 端的 Cocos2d 项目,本机至少需要 Android SDK、NDK 环境、Android Studio 项目报错总结 CMake Error: CMake was unable to find a build program corresponding to "Ninja" 默认创建工程的 gradle.tools 版本为 3.1.0&…...
系统架构合理性的思考 | 京东云技术团队
最近牵头在梳理部门的系统架构合理性,开始工作之前,我首先想到的是如何定义架构合理性? 从研发的角度来看如果系统上下文清晰、应用架构设计简单、应用拆分合理应该称之为架构合理。 基于以上的定义可以从以下三个方面来梳理评估࿱…...
Amelia预订插件:WordPress企业级预约系统
并非所有WordPress预订插件都像他们所设计的那样。其中一些缺乏运行高效预约操作所需的功能,而其他一些则看起来陈旧过时。您不需要其中任何一个,但Amelia预订插件似乎希望确保所有用户都对功能和风格感到满意。 在这篇Amelia企业级预约系统插件评测中&…...
共享门店模式:线下门店的商家如何利用它增加客户
随着数字化时代的到来,商业模式正在不断创新与演变,而共享经济正成为引领这一变革的重要力量。在这个大背景下,共享门店模式作为共享经济的一种体现,正在逐渐走进人们的生活,并为商家和消费者带来了新的商机和体验。 共…...
实现矩阵地图与rviz地图重合
文章目录 一、rviz地图转换矩形地图(只能用于全局规划)二、在rviz上显示地图边界信息,可视化调整,实现重合(只能用于局部规划)一、rviz地图转换矩形地图(只能用于全局规划) 此方法矩形地图可能会与rviz地图不重合,通过改变偏移量x_offset,y_offset接近地图 可以将矩…...
设计模式十九:备忘录模式(Memento Pattern)
备忘录模式是一种行为型设计模式,它允许对象在不暴露其内部状态的情况下捕获和恢复其状态。该模式的主要目标是在不破坏封装性的前提下,实现对象状态的备份和恢复。备忘录模式常用于需要保存对象历史状态、撤销操作或者实现快照功能的情况。 备忘录模式…...
【题解】二叉搜索树与双向链表
二叉搜索树与双向链表 题目链接:二叉搜索树与双向链表 解题思路1:递归中序遍历 首先题目最后要求的是一个的递增的双向链表,而二叉搜索树也是一类非常有特色的树,它的根节点大于所有左侧的节点,同时又小于所有右侧的…...
【真实案例】解决后端接口调用偶尔超时问题
文章目录 背景分析代码分析二次日志分析排查Gateway服务解决解决办法1:添加重试机制解决办法2:优化网关内存分配解决办法3:调整OOM策略背景 项目从虚拟机迁移到k8s云原生平台(RainBond)后,发现偶尔会出现接口调用超时的问题。 统计了一下从上线到现在近一个月的调用失败…...
操作符详解(1)
1. 操作符分类: 算术操作符 移位操作符 位操作符 赋值操作符 单目操作符 关系操作符 逻辑操作符 条件操作符 逗号表达式 下标引用、函数调用和结构成员 2. 算术操作符 - * / % 1. 除了 % 操作符之外,其他的几个操作符可以作用于整数和浮点数。 2. 对…...
<指针进阶>指针数组和数组指针傻傻分不清?
✨Blog:🥰不会敲代码的小张:)🥰 🉑推荐专栏:C语言🤪、Cpp😶🌫️、数据结构初阶💀 💽座右铭:“記住,每一天都是一個新的開始…...
无代码集成飞书连接更多应用
场景描述: 基于飞书开放平台能力,无代码集成飞书连接更多应用,打通数据孤岛。通过Aboter可轻松搭建业务自动化流程,实现多个应用之间的数据连接。 支持包括飞书事件监听和接口调用的能力: 事件监听: 用…...
三分钟解决AE缓存预览渲染错误、暂停、卡顿问题
一、清除RAM缓存(内存) 你应该做的第一件事是清除你的RAM。这将清除当前存储在内存中的所有临时缓存文件。要执行此操作,请导航到编辑>清除>所有内存。这将从头开始重置RAM缓存 二、清空磁盘缓存 您也可以尝试清空磁盘缓存。执行此操作…...
朴实无华的数据增强然后训练一下应用在电网异物检测领域,好像有自己的数据集就能发文了
RCNN-based foreign object detection for securing power transmission lines (RCNN4SPTL) Abstract 本文提出了一种新的深度学习网络——RCNN4SPTL (RCNN -based Foreign Object Detection for Securing Power Transmission lines),该网络适用于检测输电线路上的…...
【使用教程】在Ubuntu下运行CANopen通信PMM伺服电机使用教程(NimServoSDK_V2.0.0)
本教程将指导您在Ubuntu操作系统下使用NimServoSDK_V2.0.0来运行CANopen通信的PMM系列一体化伺服电机。我们将介绍必要的步骤和命令,以确保您能够成功地配置和控制PMM系列一体化伺服电机。 NimServoSDK_V2.0.0是一款用于PMM一体化伺服电机的软件开发工具包。它提供了…...
vue3+ts+vite项目页面初始化loading加载效果
简介 一分钟实现 vue-pure-admin 同款项目加载时的 loading 效果 一、先看效果 1.1 静态效果 1.2 动态效果 二、上代码 核心代码在body里面,代码中已标明。找到你项目的 index.html ,复制粘贴进去即可 <!DOCTYPE html> <html lang"en…...
ElasticSearch 数据聚合、自动补全(自定义分词器)、数据同步
文章目录 数据聚合一、聚合的种类二、DSL实现聚合1、Bucket(桶)聚合2、Metrics(度量)聚合 三、RestAPI实现聚合 自动补全一、拼音分词器二、自定义分词器三、自动补全查询四、实现搜索款自动补全(例酒店信息࿰…...
神经网络基础-神经网络补充概念-18-多个样本的向量化
概念 多个样本的向量化通常涉及将一组样本数据组织成矩阵形式,其中每一行代表一个样本,每一列代表样本的特征。这种向量化可以使你更有效地处理和操作多个样本,特别是在机器学习和数据分析中。 代码实现 import numpy as np# 多个样本的数…...
*看门狗1
//while部分是我们在项目中具体需要写的代码,这部分的程序可以用独立看门狗来监控 //如果我们知道这部分代码的执行时间,比如是500ms,那么我们可以设置独立看门狗的 //溢出时间是600ms,比500ms多一点,如果要被监控的程…...
nginx防盗链
防盗链介绍 通过二次访问,请求头中带有referer,的方式不允许访问静态资源。 我们只希望用户通过反向代理服务器才可以拿到我们的静态资源,不希望别的服务器通过二次请求拿到我们的静态资源。 盗链是指在自己的页面上展示一些并不在自己服务…...
8月16日上课内容 第二章 部署LVS-DR群集
本章结构: 数据包流向分析: 数据包流向分析: (1)客户端发送请求到 Director Server(负载均衡器),请求的数据报文(源 IP 是 CIP,目标 IP 是 VIP)到达内核空间。 …...
ViT模型架构和CNN区别
目录 Vision Transformer如何工作 ViT模型架构 ViT工作原理解析 步骤1:将图片转换成patches序列 步骤2:将patches铺平 步骤3:添加Position embedding 步骤4:添加class token 步骤5:输入Transformer Encoder 步…...
发布python模仿2023年全国职业的移动应用开发赛项样式开发的开源的新闻api,以及安卓接入案例代码
python模仿2023年全国职业的移动应用开发赛项样式开发的开源的新闻api,以及原生安卓接入案例代码案例 源码地址:keyxh/newsapi: python模仿2023年全国职业的移动应用开发赛项样式开发的开源的新闻api,以及安卓接入案例代码 (github.com) 目录 1.环境配…...
adb command
查看屏幕分辨率 adb shell wm size 查看dpi adb shell dumpsys window | grep ‘dpi’ WIFI调试: adb tcpip 5555adb connect 设备ip 注意,USB拔插会断掉,所以插上USB后再 adb connect 设备ip。【注意】华为手机自建热点的ip一般是192.1…...
在ARM服务器上一键安装Proxmox VE(以在Oracle Cloud VPS上为例)(甲骨文)
前言 如题,具体用到的说明文档如下 virt.spiritlhl.net 具体流程 首先是按照说明,先得看看自己的服务器符不符合安装 Proxmox VE的条件 https://virt.spiritlhl.net/guide/pve_precheck.html#%E5%90%84%E7%A7%8D%E8%A6%81%E6%B1%82 有提到硬件和软…...
KMP算法(JS)
KMP算法 什么时KMP算法 KMP算法是一种改进的字符串匹配算法 由D.E.Knuth,J.H.Morris和 V.R.Pratt提出的,因此人们称它为克努特—莫里斯—普拉特操作(简称KMP算法)。 KMP的主要思想是当出现字符串不匹配时,可以知道…...
恢复NuGet包_解决:System.BadImageFormatException:无法加载文件或程序集
C#工程 主要是开发了一个 web api接口,这个工程源码去年还可以的,今年换了一个电脑打开工程就报错。 错误提示如下: 在 Microsoft.CodeAnalysis.CSharp.CommandLine.Program.Main(String[] args) Test1 System.BadImageFormatEx…...
Django学习笔记(2)
创建app 属于自动执行了python manage.py 直接在里面运行startapp app01就可以创建app01的项目了 之后在setting.py中注册app01 INSTALLED_APPS ["django.contrib.admin","django.contrib.auth","django.contrib.contenttypes","django.c…...
手机网站有用吗/东莞seo推广机构帖子
我有这样的XML:它可以毫无问题地配置转换器。但是,此代码无法做到这一点:Configurationpublic class ConversionConfiguration {Beanpublic ConversionService getConversionService() {ConversionServiceFactoryBean bean new ConversionSe…...
商标注册 网站建设如何入账/淘宝关键词top排行榜
Alibaba 内组件版本: Alibaba 与springboot、cloud版本: 参考 Spring Cloud Alibaba 版本对照表...
wordpress太强大/百度搜索引擎收录入口
文章来源:M78安全团队首发于浙江大学cc98论坛和个人博客本文目的是【希望学弟学妹们千万不要去拼多多】,本人从一个底层员工的视角,记录一下拼多多这家公司三年以来的整体变化,本文不涉及技术机密,只讨论行政制度、文化…...
南宁3及分销网站制作/站长工具seo综合查询工具
来源:http://www.fhadmin.org/webnewsdetail10.html此项目为Springboot工作流版本 windows 风格,浏览器访问操作使用,非桌面应用程序。1.代码生成器: [正反双向](单表、主表、明细表、树形表,快速开发利器)快速表单构建器 freemak…...
wordpress主题租房/seo全网优化推广
nodejs 框架安装生成app下载nodejs解压到opt目录$ cd /usr/local/bin$ sudo ln -s /opt/node-v5.1.0-linux-x64/bin/node$ sudo ln -s /opt ...GitHub入门之一:使用github下载项目git作为目前比较流行的版本控制系统,被各个互联网公司广泛使用着.目前国外的网站有Gi…...
wordpress 云数据库/最新热点新闻
1.准备好安装包1)上python官网下载python运行环境(https://www.python.org/downloads/),目前比较稳定的是python-3.5.22)上pycharm官网下载最新版的IDE(http://www.jetbrains.com/pycharm/download/#sectionwindows),官网提供了mac、windows和linux三种版…...