当前位置: 首页 > news >正文

初识网络原理(笔记)

目录

​编辑局域网

网络通信基础

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&…...

系统架构合理性的思考 | 京东云技术团队

最近牵头在梳理部门的系统架构合理性,开始工作之前,我首先想到的是如何定义架构合理性? 从研发的角度来看如果系统上下文清晰、应用架构设计简单、应用拆分合理应该称之为架构合理。 基于以上的定义可以从以下三个方面来梳理评估&#xff1…...

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😶‍🌫️、数据结构初阶💀 💽座右铭:“記住,每一天都是一個新的開始&#x1…...

无代码集成飞书连接更多应用

场景描述: 基于飞书开放平台能力,无代码集成飞书连接更多应用,打通数据孤岛。通过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里面&#xff0c;代码中已标明。找到你项目的 index.html &#xff0c;复制粘贴进去即可 <!DOCTYPE html> <html lang"en…...

ElasticSearch 数据聚合、自动补全(自定义分词器)、数据同步

文章目录 数据聚合一、聚合的种类二、DSL实现聚合1、Bucket&#xff08;桶&#xff09;聚合2、Metrics&#xff08;度量&#xff09;聚合 三、RestAPI实现聚合 自动补全一、拼音分词器二、自定义分词器三、自动补全查询四、实现搜索款自动补全&#xff08;例酒店信息&#xff0…...

神经网络基础-神经网络补充概念-18-多个样本的向量化

概念 多个样本的向量化通常涉及将一组样本数据组织成矩阵形式&#xff0c;其中每一行代表一个样本&#xff0c;每一列代表样本的特征。这种向量化可以使你更有效地处理和操作多个样本&#xff0c;特别是在机器学习和数据分析中。 代码实现 import numpy as np# 多个样本的数…...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件&#xff1a;-&#xff08;纯文本文件&#xff0c;二进制文件&#xff0c;数据格式文件&#xff09; 如文本文件、图片、程序文件等。 目录文件&#xff1a;d&#xff08;directory&#xff09; 用来存放其他文件或子目录。 设备…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我&#xff0c;后续持续新增专题博文&#xff0c;谢谢&#xff01;&#xff01;&#xff01;】 上一篇我们讲了&#xff1a; 这一篇我们开始讲&#xff1a; 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下&#xff1a; 一、场景操作步骤 操作步…...

【位运算】消失的两个数字(hard)

消失的两个数字&#xff08;hard&#xff09; 题⽬描述&#xff1a;解法&#xff08;位运算&#xff09;&#xff1a;Java 算法代码&#xff1a;更简便代码 题⽬链接&#xff1a;⾯试题 17.19. 消失的两个数字 题⽬描述&#xff1a; 给定⼀个数组&#xff0c;包含从 1 到 N 所有…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名&#xff08;Class Name)2.协议名&#xff08;Protocol Name)3.方法名&#xff08;Method Name)4.属性名&#xff08;Property Name&#xff09;5.局部变量/实例变量&#xff08;Local / Instance Variables&…...

Opencv中的addweighted函数

一.addweighted函数作用 addweighted&#xff08;&#xff09;是OpenCV库中用于图像处理的函数&#xff0c;主要功能是将两个输入图像&#xff08;尺寸和类型相同&#xff09;按照指定的权重进行加权叠加&#xff08;图像融合&#xff09;&#xff0c;并添加一个标量值&#x…...

Linux简单的操作

ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

JVM垃圾回收机制全解析

Java虚拟机&#xff08;JVM&#xff09;中的垃圾收集器&#xff08;Garbage Collector&#xff0c;简称GC&#xff09;是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象&#xff0c;从而释放内存空间&#xff0c;避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时&#xff0c;可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案&#xff1a; 1. 检查电源供电问题 问题原因&#xff1a;多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

cf2117E

原题链接&#xff1a;https://codeforces.com/contest/2117/problem/E 题目背景&#xff1a; 给定两个数组a,b&#xff0c;可以执行多次以下操作&#xff1a;选择 i (1 < i < n - 1)&#xff0c;并设置 或&#xff0c;也可以在执行上述操作前执行一次删除任意 和 。求…...