网络通信基础
IP地址
使用ip地址来描述网络上一个设备所在的位置
端口号
区分一个主机上不同的程序,一个网络程序,在启动的时候,都需要绑定一个或者多个端口号,后续的通信过程都需要依赖端口号来进行展开的,mysql默认的端口号是3306
协议
描述了网络通信传输的数据的含义,表示一种约定,这样的约定是可以任意的,为什么要约定好这么一份统一的协议,这是因为,电脑有很多种,设备的厂商也有很多,必须要有一份统一的协议标准,让大家都能按照同样的标准来研发设备,这样大家就都可以在一起相互通信了
协议分层
网络通信是一个比较复杂的工作,会涉及到一些比较繁琐,非常细节的工作,靠一个协议解决所有问题,导致这个协议非常复杂,非常庞大,因此,我们就需要对协议进行拆分,这么一拆分,拆分出来的协议,有很多,于是就对这些协议进行分类,分层,上层协议调用下层协议,下层协议给上层协议提供服务,避免跨层级调用引起的混乱,降低耦合度,提高了整个系统的可读性
1.上层不需要了解下层的细节(封装)
2.可以灵活的调整/替换某层的协议
OSI七层网络模型(只存在教科书中)
TCP/IP五层网络模型(现实情况)
物理层:描述的网络通信中的一些基础设施需要遵守的规范
数据链路层:相邻节点之间,数据如何传输,上海到苏州,苏州到南京,南京到西安
网络层:路径规划,上海->西安,有很多不同的路线走法,需要规划好走那条路径
传输层:只关注起点和终点(数据从哪里出发,到哪里去)
应用层:拿到这个数据,具体要拿来做什么,取决于用户
传输层协议和网络层协议都属于是操作系统中,已经内置的,
驱动程序,是硬件厂商提供的,驱动程序会和系统内核进行适配,进一步的系统就可以通过驱动来操作硬件了
网络设备所在分层
对于一台主机,它的操作系统内核实现了从传输层到物理层的内容,也即是TCP/IP五层模型的下四层;
对于一台路由器,它实现了从网络层到物理层,也即是TCP/IP五层模型的下三层;
对于一台交换机,它实现了从数据链路层到物理层,也即是TCP/IP五层模型的下两层;
对于集线器,它只实现了物理层;
网络数据传输的基本流程(封装和分用)
以QQ发消息为例,介绍网路数据传输的基本流程
主机A通过QQ把消息发给主机B
1.应用层:
QQ应用程序,从输入框中获取到你要输入的信息,构造成应用层数据报(根据应用层协议),每个程序的应用层协议是不一样的,很多程序会自定义应用层协议,假设QQ的应用层协议是下面这样的
发送人qq号,接收人qq号,时间,信息内容
所谓的"构造应用层数据报"过程,就是按照一定的格式进行字符串拼接
接收方和发送方,需要达成一致
应用程序就会调用传输层提供的接口,把上述数据交给传输层进行处理
2.传输层:传输层协议有很多,其中最主要的是TCP和UDP,此处假设是用的UDP
上面把数据从应用层传到了传输层,交给了UDP,于是UDP协议就按照自己的协议格式,生成了一个UDP数据报
UDP不关心应用层数据报里面都有什么,只是把应用层数据当成一个字符串,构造出一个UDP数据报
此处的UDP报头,包含了源端口,目的端口
此时传输层会把构造好的UDP数据报,进一步的交给网络层
3.网络层:网络层最主要的协议是IP协议
IP协议也根据自己的格式,来构造出IP数据报
此处的IP报头包含了源IP和目的IP
源IP,源端口,目的IP,目的端口,协议类型,是网络通信中的"五元组"
接下来,还需要将数据报传输给数据链路层
4.数据链路层:最主要的协议是以太网
以太网又会针对IP数据报,进行进一步的封装,再添上数据头和数据尾
网络上传输的数据的基本单位,有很多中术语叫法
包(packet)
帧(frame)
报(datagram)
段(segment)
上述这样的数据,还需要进一步交给物理层
5.物理层:硬件设备(网卡)
上述的以太网数据报本质上是一些二进制的数据,硬件设备就需要对上述数据进行转换了(光信号/电信号/电磁波)
到这里,主机A就已经发送完成了
接下来是主机B的情况,先不考虑中间情况
1.物理层(硬件设备/网卡):收到光信号/电信号/电磁波,需要把接收到的信号进行解调,得到了一串二进制数据序列,也就是以太网数据帧
这个数据就要被交给上一层,数据链路层
调制:把要传输的信号放到光电信号中
解调:从光信号中把信息取出来
调制解调器:猫
2.数据链路层
数据链路层的以太网协议,就会针对这个数据进行解析,去除以太网数据帧头和帧尾,把载荷部分取出来,交给上一层(IP协议)
3.网络层:
IP协议针对这个数据报进行解析,去掉IP报头,取出载荷,进一步交给传输层
4.传输层:
根据IP报头中的字段,就知道当前这个载荷是一个UDP数据包,于是就交给UDP处理,UDP也是要针对数据报进行解析 ,去掉报头,取出载荷,进一步的交给应用程序
5.应用层:
UDP报头中,有一个字段,目的端口,根据目的端口找到关联的应用程序,就交给这个程序即可,QQ这个程序就会收到这个数据了,就会按照QQ的应用层协议,进行解析,把数据显示到界面上
主机A,从上到下,依次添加报头的过程,称为封装
主机B,从下到上,依次解析报头的过程,称为分用,
每次网络数据的传输都是需要经历上述的过程
相关文章:

网络通信基础
IP地址 使用ip地址来描述网络上一个设备所在的位置 端口号 区分一个主机上不同的程序,一个网络程序,在启动的时候,都需要绑定一个或者多个端口号,后续的通信过程都需要依赖端口号来进行展开的,mysql默认的端口号是3306 协议 描述了网络通信传输的数据的含义,表示一种约定,…...

框架分析(10)-SQLAlchemy
框架分析(10)-SQLAlchemy 专栏介绍SQLAlchemy特性分析ORM支持数据库适配器事务支持查询构建器数据库连接池事务管理器数据库迁移特性总结 优缺点优点强大的对象关系映射支持多种数据库灵活的查询语言自动管理数据库连接支持事务管理易于扩展和定制 缺点学…...

Linux/Windows中根据端口号关闭进程及关闭Java进程
目录 Linux 根据端口号关闭进程 关闭Java服务进程 Windows 根据端口号关闭进程 Linux 根据端口号关闭进程 第一步:根据端口号查询进程PID,可使用如下命令 netstat -anp | grep 8088(以8088端口号为例) 第二步:…...

基于springboot实现了后台定时统计数据报表并将数据生成excel文件作为附件,然后通过邮件发送通知的功能
概述 本例子基于springboot实现了后台定时统计数据报表并将数据生成excel文件作为附件,然后通过邮件发送通知的功能。 详细 一、准备工作 1、首先注册两个邮箱,一个发送邮箱,一个接收邮箱。 2、发送邮箱开启IMAP/SMTP/POP3服务,…...

opencv 提取选中区域内指定hsv颜色的水印
基于《QT 插件化图像算法研究平台》做的功能插件。提取选中区域内指定hsv颜色的水印。 《QT 插件化图像算法研究平台》有个HSV COLOR PICK功能,可以很直观、方便地分析出水印 的hsv颜色,比如, 蓝色:100,180,0,255,100,255。 然后利用 opencv …...

如何理解张量、张量索引、切片、张量维度变换
Tensor 张量 Tensor,中文翻译“张量”,是一种特殊的数据结构,与数组和矩阵非常相似。在 PyTorch 中,使用张量对模型的输入和输出以及模型的参数进行编码。 Tensor 是一个 Python Class。PyTorch 官方文档中定义“Tensor࿰…...

基于SpringBoot的汽车租赁系统
基于SpringBootVue的汽车租赁系统,前后端分离 开发语言:Java数据库:MySQL技术:SpringBoot、Vue、Mybaits Plus、ELementUI工具:IDEA/Ecilpse、Navicat、Maven 角色:管理员、业务员、用户 管理员 用户管理…...

怎么做手机App测试?app测试详细流程和方法介绍
APP测试 1、手机APP测试怎么做? 手机APP测试,主要针对的是android和ios两大主流操作系统,主要考虑的就是功能性、兼容性、稳定性、易用性(也就是人机交互)、性能。 手机APP测试前的准备: 1.使用同类型的…...
【计算机网络】网络编程接口 Socket API 解读(1)
Socket 是网络协议栈暴露给编程人员的 API,相比复杂的计算机网络协议,API 对关键操作和配置数据进行了抽象,简化了程序编程。 本文讲述的 socket 内容源自 Linux 发行版 centos 9 上的 man 工具,和其他平台(比如 os-x …...

IGES在线查看与转换
IGES 格式最初由美国空军开发并于 1980 年发布。该格式是集成计算机辅助制造 (ICAM) 项目的产品,该项目旨在通过集成操作来降低制造成本。 IGES 文件旨在允许航空航天相关设计在不同平台上传输,同时将数据丢失降至最低。 在 IGES 格式出现之前,不同公司创建的 CAD 和计算机…...
【Vue3-Vite】Vite配置--路径别名配置
路径别名配置 使用 代替 src Vite配置 // vite.config.ts import {defineConfig} from vite import vue from vitejs/plugin-vueimport path from pathexport default defineConfig({plugins: [vue()],resolve: {alias: {"": path.resolve("./src") // …...
道可云元宇宙每日资讯|第二届世界元宇宙大会将在嘉定安亭举行
道可云元宇宙每日简报(2023年9月6日)讯,今日元宇宙新鲜事有: 第二届世界元宇宙大会将于9月20日在嘉定安亭举行 元起嘉定,虚实相生,产业赋能。由中国仿真学会、中国指挥与控制学会和北京理工大学共同主办&a…...

Python for 循环语句
Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串。 语法: for循环的语法格式如下: for iterating_var in sequence:statements(s) 流程图: 实例 #!/usr/bin/python # -*- coding: UTF-8 -*- for letter in …...

iOS脱壳之frida-ios-dump
frida-ios-dump介绍 该工具基于frida提供的强大功能通过注入js实现内存dump然后通过python自动拷贝到电脑生成ipa文件,适合现iOS11版本之后的越狱手机使用。 下载 https://github.com/AloneMonkey/frida-ios-dump环境安装 电脑环境安装 win和Mac 环境一样都是…...
rust中的reborrow和NLL
reborrow 我们看下面这段代码 fn main() {let mut num 123;let ref1 &mut num; // 可变引用add(ref1); // 传递给 add 函数println!("{}", ref1); // 再次使用ref1 }fn add(num: &mut i32) {println!("{}", *num); }我们…...
Java设计模式:一、六大设计原则-04:迪米特法则
文章目录 一、定义:迪米特法则二、模拟场景:迪米特法则原则三、违背方案:迪米特法则原则3.1 工程结构3.2 学生、老师、校长类3.2.1 学生类3.2.2 老师类3.2.3 校长类 3.3 单元测试 四、改善代码:迪米特法则原则4.1 工程结构4.2 学生…...
使用docker部署pg数据库
使用 Docker 部署 PostgreSQL 数据库是一种常见的做法,它提供了方便、可移植和可重复的方式来运行数据库。下面是一个简单的示例,用于在 Docker 中部署 PostgreSQL 数据库: 首先,确保您已经安装了 Docker 并正确配置了 Docker 环境…...

Json“牵手”亚马逊商品详情数据方法,亚马逊商品详情API接口,亚马逊API申请指南
亚马逊平台是美国最大的一家网络电子商务公司,亚马逊公司是1995年成立,刚开始只做网上书籍售卖业务,后来扩展到了其他产品。现在已经是全世界商品品种最多的网上零售商和第二互联网公司,亚马逊是北美洲、欧洲等地区的主流购物平台…...

springboot封装查询快递物流
目录 一、ApiClient代码解读二、ApiService代码解读三、HomeController代码解读四、整体代码五、结果展示 一、ApiClient代码解读 这是一个简单的Spring Boot的RestTemplate客户端,用于执行HTTP请求。 首先,这个类被Component注解标记,这意味…...

从C语言到C++_37(特殊类设计和C++类型转换)单例模式
目录 1. 特殊类设计 1.1 不能被拷贝的类 1.2 只能在堆上创建的类 1.3 只能在栈上创建的类 1.4 不能被继承的类 1.5 只能创建一个对象的类(单例模式)(重点) 1.5.1 饿汉模式 1.5.2 懒汉模式 2. 类型转换 2.1 static_cast 2.2 reinterpret_cast 2.3 const_cast 2.4 d…...

使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...

大数据零基础学习day1之环境准备和大数据初步理解
学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...

自然语言处理——循环神经网络
自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM)…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台
🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...

push [特殊字符] present
push 🆚 present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中,push 和 present 是两种不同的视图控制器切换方式,它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...

自然语言处理——文本分类
文本分类 传统机器学习方法文本表示向量空间模型 特征选择文档频率互信息信息增益(IG) 分类器设计贝叶斯理论:线性判别函数 文本分类性能评估P-R曲线ROC曲线 将文本文档或句子分类为预定义的类或类别, 有单标签多类别文本分类和多…...

Vue3 PC端 UI组件库我更推荐Naive UI
一、Vue3生态现状与UI库选择的重要性 随着Vue3的稳定发布和Composition API的广泛采用,前端开发者面临着UI组件库的重新选择。一个好的UI库不仅能提升开发效率,还能确保项目的长期可维护性。本文将对比三大主流Vue3 UI库(Naive UI、Element …...

归并排序:分治思想的高效排序
目录 基本原理 流程图解 实现方法 递归实现 非递归实现 演示过程 时间复杂度 基本原理 归并排序(Merge Sort)是一种基于分治思想的排序算法,由约翰冯诺伊曼在1945年提出。其核心思想包括: 分割(Divide):将待排序数组递归地分成两个子…...