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

网络通信基础

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服务&#xff0c…...

opencv 提取选中区域内指定hsv颜色的水印

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

如何理解张量、张量索引、切片、张量维度变换

Tensor 张量 Tensor,中文翻译“张量”,是一种特殊的数据结构,与数组和矩阵非常相似。在 PyTorch 中,使用张量对模型的输入和输出以及模型的参数进行编码。 Tensor 是一个 Python Class。PyTorch 官方文档中定义“Tensor&#xff0…...

基于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…...

告别密集计算:用SpConv稀疏卷积加速3D点云处理(附PyTorch代码示例)

告别密集计算:用SpConv稀疏卷积加速3D点云处理实战指南 在自动驾驶和机器人感知领域,LiDAR点云数据的处理一直是计算密集型任务的代表。传统3D卷积神经网络在处理这类数据时,往往需要消耗大量显存和计算资源,而实际上点云数据的有…...

STM32的RTC掉电还能走时?深入聊聊后备域和纽扣电池那点事

STM32的RTC掉电还能走时?深入聊聊后备域和纽扣电池那点事 当你在深夜调试STM32的RTC功能时,是否曾好奇过这个小巧的实时时钟为何能在主电源断开后依然精准走时?这背后隐藏着STM32芯片设计中一个精妙的电源管理机制——后备域(Back…...

5分钟掌握OBS虚拟摄像头:让所有视频软件都能用上专业直播效果

5分钟掌握OBS虚拟摄像头:让所有视频软件都能用上专业直播效果 【免费下载链接】obs-virtual-cam 项目地址: https://gitcode.com/gh_mirrors/obs/obs-virtual-cam 你是否曾经羡慕主播们精美的直播画面,却苦于无法在Zoom、Teams等日常软件中实现同…...

揭秘macOS独立滚动控制:Scroll Reverser如何巧妙解决输入设备冲突

揭秘macOS独立滚动控制:Scroll Reverser如何巧妙解决输入设备冲突 【免费下载链接】Scroll-Reverser Per-device scrolling prefs on macOS. 项目地址: https://gitcode.com/gh_mirrors/sc/Scroll-Reverser 你是否曾经为macOS系统的滚动方向设置感到困扰&…...

Python热重载工具Reloadium:原理、配置与实战避坑指南

1. 项目概述:重新定义Python热重载的开发体验如果你是一名Python开发者,无论是做Web后端、数据分析脚本还是机器学习模型训练,大概率都经历过这样的场景:修改了一行代码,保存文件,然后不得不手动停止当前运…...

ThinkPad风扇控制终极指南:5分钟告别噪音与过热烦恼

ThinkPad风扇控制终极指南:5分钟告别噪音与过热烦恼 【免费下载链接】TPFanCtrl2 ThinkPad Fan Control 2 (Dual Fan) for Windows 10 and 11 项目地址: https://gitcode.com/gh_mirrors/tp/TPFanCtrl2 你是否曾因ThinkPad风扇的"直升机起飞"声而烦…...

RAG已死?收藏这篇,小白程序员必看:上下文工程才是大模型未来!

本文探讨了围绕RAG技术的争议,分析了三种不同观点:RAG正进化为更智能的检索系统、RAG已成为核心工程学科、RAG正被长上下文和智能体取代。文章指出,简单的RAG已过时,但提供外部知识的需求依然存在,未来RAG将作为组件之…...

法律科技实践:基于Python与NLP的法律文书自动化处理工具集

1. 项目概述:一个法律从业者的效率工具箱如果你是一名律师、法务或者法律专业的学生,每天面对海量的法律文书、案例检索和合同审查,你一定会对“效率”这个词有切肤之痛。我从事法律相关工作超过十年,从最初的实习律师到后来独立处…...

前台测试想转后台优化?这4个条件缺一不可,否则别折腾

很多做前台测试的兄弟都问过同一个问题:我能不能转后台?今天这篇文章,一次性把后台工程师的准入清单说清楚。一、基础条件:5条缺一不可年龄20-50岁太小的缺经验,太大的学新东西慢,这个区间刚刚好。有网优基…...

数据库角色管理(Role Management)

1.1、角色基础角色是权限的集合,是 Oracle 权限管理的核心机制。12c 增强了角色的安全特性。创建角色:CREATE ROLE app_developer;创建带密码的角色(需激活时提供密码):CREATE ROLE sensitive_role IDENTIFIED BY &quo…...