计算机网络(2)——应用层(上)
1.应用层概述
应用层(Application Layer)
属于计算机网络体系结构中的最顶层,直接面向用户,提供各种网络服务和应用程序的接口
本文主要的学习内容如下:
(1)网络应用进程通信方式
- 客户端-服务器方式
- 点对点方式
- 混合方式
(2)网络应用的需求与传输层服务
- 可靠性
- 带宽
- 延迟
(3)各种网络应用及协议
- Web应用 -> HTTP
- Email应用 -> SMTP、POP
- P2P应用
(4)Socket编程
- TCP
- UDP
2.网络应用进程通信方式
进程:
主机上运行的程序
Question1:
同一主机上运行的进程之间如何通信?
Answer:
同一主机上运行的程序通过操作系统提供的进程间通信机制进行通信,这里不展开介绍
Question2:
不同主机上运行的进程之间如何通信?
Answer:
消息(数据)交换。主要有电路交换、报文交换和分组交换
Question3:
如何定位不同主机上运行的进程?
Answer:
不同主机的不同进程都拥有唯一的标识符,进程的标识符 = IP地址 + 端口号
注意1:
网络应用通信需要遵守应用层协议,协议主要定义了以下规范
消息的类型(type):
请求消息、响应消息消息的语法格式(syntax):
消息中有哪些字段,每个字段如何描述/采取什么结构字段的语义(semantics):
字段中信息的含义规则(rules):
应用何时发送/接收消息,应用如何发送/接收消息
下面是网络应用中的主要通信方式
2.1 客户端-服务器方式(Client-Sever,CS)
服务器:
接受请求返回响应的终端
- 7*24(007)小时提供服务
- IP地址/域名长期固定
- 利用大量服务器实现可扩展性
客户端:
发起请求接收响应的终端
- 与服务器通信,使用服务器提供的服务
- 间歇性接入网络(不是一直在线)
- IP地址不固定(IP地址动态分配,网络层在详细介绍)
- 不会与其他客户端直接通信
2.2 点对点方式(Peer-to-Peer,P2P)
- P2P结构中的每个节点都可以充当客户端或服务器的角色
- 任意节点之间可以直接通讯
- 节点间歇性接入网络
- 节点IP地址不固定
2.3 混合方式
Question:
能不能结合以上两种方式的优点,规避缺点,设计一种新的通信方式/模型?
以Napster为例:
Napster 在文件传输和文件搜索方面采用了混合架构,结合了P2P和客户端-服务器两种结构。这种混合架构在当时是一个创新设计,既利用了P2P的优势,又通过中央服务器提高了效率和可控性
(1)客户端-服务器(CS)结构用于文件搜索:
- 中央服务器:Napster 使用一个中央服务器来维护一个所有共享文件的索引目录。当用户想要查找某个文件时,他们会向中央服务器发送搜索请求
(2)对等网络(P2P)结构用于文件传输:
- 直接连接:一旦用户选择了要下载的文件,Napster 会直接连接文件所有者的计算机,建立点对点连接
- 文件传输:文件直接从文件所有者的计算机传输到请求者的计算机,而不经过中央服务器。这种方式大大提高了传输效率,并减轻了中央服务器的负担
3.Web应用
3.1 Web应用结构与协议
Web应用
使用客户端-服务器通信方式,客户端与服务器之间使用HTTP/HTTPS协议进行通信
服务器:
接受并处理HTTP请求,返回HTTP响应。主要包括:
- Web页面(HTML文档):包含多种对象和链接‘
- Web对象(静态/动态对象):可以是HTML文档、图像文件、视频文件、音频文件等
- URL(统一资源定位符):对象之间的寻址依靠URL
客户端:
发送请求,接受并解析响应
3.2 HTTP协议
Java EE(18)——网络原理——应用层HTTP协议
3.3 HTTPS协议
Java EE(19)——网络原理——应用层HTTPS协议
3.4 Web缓存技术
目的:
在不访问服务器的情况下满足客户端的HTTP/HTTPS请求
意义:
- 缩短客户端的响应时间
- 减少服务器的并发量
在客户端-服务器中间架设代理服务器用来保存缓存
- 当clientA发起HTTP请求某资源时,该HTTP会先到达代理服务器,代理服务器优先在自己的数据库中查找。如果有相应资源,直接返回给clientA;如果没有,则向原始服务器发送HTTP请求,原始服务器返回响应后,代理服务器先缓存该资源,再返回给clientA
- 当clientB再次请求相同资源时,HTTP请求将不会到达原始服务器,而是由代理服务器返回资源,一定程度上减轻了服务器的压力
Question1:
如果当clientB发送请求时,该资源已经经历了一次版本更新,如何保证获取到最新版资源?
Answer1:
当代理服务器收到HTTP请求时,代理服务器会一个HTTP请求检测该资源的版本是否和原始服务器中的一致。如果版本一致,原始服务器会返回304 Not Modified
,告诉代理服务器版本一致;如果版本不一致,原始服务器会返回最新版资源,代理服务器缓存后再返回给clientB
Question2:
既然每次代理服务器收到请求之后都会跟原始服务器检测版本,会不会加重服务器负担?
Answer2:
当版本一致时,原始服务器只会返回304 Not Modified
,并不携带额外资源,相较于客户端直接访问服务器的负担会小很多
4.Email应用
4.1 Email应用的构成
Email应用的构成
- 邮件客户端(user agent):撰写、发送、接收和管理电子邮件的应用程序
- 邮件服务器:处理电子邮件的传输和存储的计算机,负责在用户之间传递邮件,并储存用户的邮件数据
- SMTP协议(Simple Mail Transfer):定义了邮件在互联网上传输的标准
4.2 Email应用示例
A想发送一封邮件给B,该邮件会先传输到A对应的服务器③,再传输给B对应的服务器⑤,等到B上线的时候再接收邮件
Question:
为什么邮件不能直接发送到B?
Answer:
因为B不一定在线。想直接发送到B的前提是A和B要建立连接,但如果B不在线就无法建立连接,所以无法直接发送到B。但是B对应的服务器⑤一定在线,服务器⑤会保存该邮件等到B来接收
4.3 SMTP协议
概述:
- SMTP协议:简单邮件传输协议
- 使用C/S结构工作在TCP的25号端口
- 持久连接
交互过程:
- 三次握手建立连接(传输层再详细介绍)
- 身份认证
- 邮件传输
- 断开连接
命令/响应交互模式
- 命令(command):ASCII文本
- 响应(response):状态代码和语句
协议格式:
头部(header):
包含邮件的元信息,如发件人、收件人、主题等。常见头部字段如下:
- From:发件人邮箱
- To:收件人邮箱
- Subject:邮件主题
- Date:发送日期
- Contect-Type:正文类型(body中的格式)
空行:
用于分割头部和body
正文(body):
邮件的实际内容
注意:根据RFC5321规定,传统的SMTP协议使用7为ASCII字符集进行通信,这意味着所有的SMTP命令、响应和header都必须是ASCII字符。因为SMTP协议必须使用ASCII字符集,直接传输非ASCII数据(如二进制文件)时会出问题,为了解决这个问题。引入了MIME(多用途互联网邮件扩展),允许在电子邮件中使用非ASCII数据
4.4 POP3
客户端向服务器发送电子邮件的时候使用SMTP协议,但客户端读取服务器中的邮件时使用邮件访问协议(Post Office Protocol),本文介绍POP3协议
概述:
- POP3:邮局协议版本3(Post Office Protocol-Version 3)
- 作用是将存储在邮件服务器上的电子邮件离线下载到本地
- 使用C/S结构工作在TCP的110号端口
交互流程:
Question:
为什么上面获取某一封邮件后,要删除该邮件呢?
Answer:这和POP3协议的访问模式有关
访问模式:
(1)下载并删除模式:
客户端下载邮件后删除该邮件
- 优点:节省空间
- 缺点:如果用户换了客户端,就无法重读该邮件
(2)下载并保持模式:
客户端下载邮件不删除该邮件
- 优点:不同的客户端都可以保留邮件的拷贝
- 缺点:占用大量空间
相关文章:
计算机网络(2)——应用层(上)
1.应用层概述 应用层(Application Layer)属于计算机网络体系结构中的最顶层,直接面向用户,提供各种网络服务和应用程序的接口 本文主要的学习内容如下: (1)网络应用进程通信方式 客户端-服务器方式点对点方式混合方式 (2)网络应用的需求与传输…...
day017-磁盘管理-实战
文章目录 1. 硬盘命名规则2. 添加硬盘2.1 查看硬盘名称 3. 硬盘分区3.1 分区命名规则:mbr分区表格式3.2 创建分区:fdisk3.2.1 fdisk -l:查看硬盘及分区信息3.2.2 fdisk /dev/sdc :为该硬盘分区3.2.3 创建扩展分区和逻辑分区3.2.4 保存设置并退…...
Win10 安装单机版ES(elasticsearch),整合IK分词器和安装Kibana
一. 先查看本机windows是否安装了ES(elasticsearch),检查方法如下: 检查进程 按 Ctrl Shift Esc 组合键打开 “任务管理器”。在 “进程” 选项卡中,查看是否有 elasticsearch 相关进程。如果有,说明系统安装了 ES。 检查端口…...
STM32 控制 OLED 全攻略(二):实现字符和汉字的显示
目录 一 前言 二 OLED介绍 (一)SSD1306 (二)OLED屏幕 三 显示原理结合代码解释 1 指令---0x00 2 数据---0x40 3 初始化oled函数 4 codetab.h 四 显示字符串的原理 🧾 ASCII 编码范围: ✅ OLED_S…...
c#将json字符串转换为对象数组
在C#中,将JSON字符串转换为对象数组是一个常见的需求,特别是在处理来自Web API的响应或需要反序列化本地文件内容时。这可以通过使用Newtonsoft.Json(也称为Json.NET)库或.NET Core内置的System.Text.Json来完成。以下是如何使用这…...
Cryosparc里头restack的妙用
在Cryosparc里头经常需要迁移job或者将particle打包成relion可以识别的模式,总是会遇到一个问题,我们需要的颗粒明明很少,但总是保存出一大堆东西来。原因就是,他会把最开初的particle都给你算进来,而不是某个作业对应…...
.bat文档如何运行Python程序
.bat文档如何运行Python程序 在Windows操作系统中,你可以通过几种方式来运行Python程序,即使是通过.bat批处理文件。.bat文件是一种批处理脚本,它允许你执行一系列命令。以下是一些步骤和示例,说明如何从.bat文件运行Python程序。…...
力扣HOT100之二叉树:230. 二叉搜索树中第 K 小的元素
这道题直接用最笨的办法来做的,用递归来做,我们定义一个全局变量vector<int> element,然后使用中序遍历,每当碰到一个非空节点就将其加入到向量中,这样依赖当向量中的元素小于k时,就返回0,…...
【Nextcloud】使用 LNMP 架构搭建私有云存储:Nextcloud 实战指南
目录 一、环境准备与基础配置 1. 系统环境要求 2. 初始化系统配置 二、搭建 LNMP 基础架构 1. 一键安装 LNMP 组件 2. 启动数据库服务 三、部署 Nextcloud 存储服务 1. 上传并解压安装包 2. 设置目录权限(测试环境配置) 3. 配置 MariaDB 数据库…...
已知6、7、8月月平均气温和标准差,求夏季季平均温度与标准差
由下面定理,得出平方和的公式:(即每天的温度平方和) 这样就可以推出季平均的算法: 举例:在Excel用公式算,不要手算: 因此季平均:(B2*C2B3*C3B4*C4)/SUM(B2:B4) 季标准差…...
【cursor指南】cursor免费续杯pro会员试用
背景 心血来潮(其实是被逼的),开始需要cursor里面的agent对话。cursor用着用着就会出现点数耗尽、试用到期等问题,于是自行开始找免费的cursor会员续用方法。 Part01:参考链接鸣谢 1. Cursor 全攻略:注册、使用到无限续杯&…...
Visual Studio解决方案构建三剑客:生成/重新生成/清理完全指南(实战经验总结)
文章目录 当你在VS里右键解决方案时...一、先看实战场景(老板发飙警告)二、三大命令解剖课(重点标记版)2.1 生成解决方案(F7)2.2 重新生成解决方案(CtrlAltF7)2.3 清理解决方案&…...
《JVM如何判断一个对象可以被回收?图文详解GC Root算法》
大家好呀!我是你们的老朋友Java技术博主👋 今天咱们来聊聊Java虚拟机(JVM)中一个超级重要的话题——垃圾回收机制(Garbage Collection)和GC Root可达性分析!这可是Java程序员必须掌握的核心知识点哦!😎 🌟…...
常用算法/机理模型演示平台搭建(一)
算法/机理模型演示平台搭建 一、算法列表(app/algorithms)二、行业机理模型 (app/models)三、如何使用本项目旨在为初学者提供 35种 常用算法和 9种 行业机理模型的简单Python实现或概念说明。每个算法都有其独特的应用场景,从数据预测、质量检测、过程控制到结构分析和优化问…...
一文详解红黑树
一文详解红黑树 前言一、基本概念与特性1.1 红黑树的定义1.2 红黑树的特性 二、红黑树的节点结构与表示三、红黑树的基本操作3.1 插入操作3.2 删除操作 四、红黑树的应用场景4.1 编程语言的集合类4.2 数据库索引4.3 Linux 内核进程调度 总结 前言 在数据结构的领域中ÿ…...
Windows 安装显卡驱动
1.第一步:打开Nvidia 官网驱动下载页面 2.第二步:选择相关信息, 玩游戏选择,GeForce Game Ready ,创意设计、摄影直播 选择 NVIDIA Studio 驱动程序 (NVIDIA Studio Driver - WHQL.) 2.第三步࿱…...
【C语言】易错题 经典题型
出错原因:之前运行起来的可执行程序没有关闭 关闭即可 平均数(average) 输入3个整数,输出它们的平均值,保留3位小数。 #include <stdio.h> int main() {int a, b, c;scanf("%d %d %d", &a, &…...
C++类与对象--5 运算符重载
对已有的运算符进行重新定义,赋予不同的功能,以适应不同的数据类型 5.1 加号运算符 实现两个自定义数据类型的加运算 (1)通过成员函数实现“”重载 class Number { public:Number(int a, int b):m_A(a),m_B(b){}Number(){}Number operator(Number &a…...
接口排查不能靠猜:实战中如何用抓包工具精准定位问题(含 Charles 使用示例)
几乎每个写代码的开发者都经历过这样的时刻:接口突然返回空、请求超时、前端数据没更新……你试过重启服务、翻查日志、改代码打印,最后还是无解。 我想说,其实很多问题的答案都藏在“网络请求”里,只是你没有去看。 这篇文章&a…...
【占融数科-注册/登录安全分析报告】
前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…...
4.7 时间模块
时间模块: * 1. time:操作时间本身 2.datetime:主要用于设置某一时间 3.calendar:主要用于时间份量计算 import time # 1. actimr:把一个表示时间的元组转换为字符串。要是不给出参数则返回当前本地时间。 print(time.asctime())…...
SHIMADZU岛津 R300RC300 Operation Manual
SHIMADZU岛津 R300RC300 Operation Manual...
(C语言篇)处理字符串的四个基础函数
strlen、strcpy、strcat、strcmp使用以及注意事项 在C语言中,strlen、strcpy、strcat、strcmp是处理字符串的四个基础函数,都在<string.h>头文件中声明。下面为你详细介绍它们的功能、用法和注意事项。 1. strlen - 计算字符串长度 函数原型&am…...
mysql的安装方式
1.yum/apt安装 yum安装: 先搭建yum仓库,可以在清华源内找:mysql | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror vim /etc/yum.repos.d/mysql.repo[mysql-connectors-community] nameMySQL Connectors Communit…...
嵌入式(C语言篇)Day11
嵌入式Day11 一、动态内存分配核心函数 (一)函数列表 函数名功能头文件返回值malloc分配连续的size字节堆内存stdlib.h成功返回首地址(void*),失败返回NULLcalloc分配num个元素size字节/元素的堆内存,自…...
Java集合框架解析:从基础到底层源码
Java集合框架解析:从基础到底层源码 一、集合体系 1.1 两大核心接口深度解析 Collection 单列集合 List 系列 ArrayList:动态数组实现,初始容量10,扩容策略为 原容量的1.5倍// JDK17 扩容源码片段 int newCapacity oldCapacity…...
C语言实现android/linux按键模拟
C语言实现 input事件模拟 #include <stdio.h> #include <fcntl.h> #include <unistd.h> #include <linux/input.h>int main() {int fd open("/dev/input/event0", O_RDWR);if (fd < 0) {perror("Failed to open device");ret…...
VisionPro:轴承错位标识
找出轴承缺陷并标记:效果 1.打开导入图片 2.添加CogToolblock:方便后续写代码 3.对零件进行模板匹配 4.对图片进行预处理(重点) 5.添加找圆工具和展开工具 根据下图将线链接 6.添加模板匹配工具并运行 7.训练模板 好的全找出来 8.代码编写 红色框为添加的代码(下面有完整代码) …...
专题五:floodfill算法(扫雷游戏精讲)
以leetcode529题 题目解析: M表示:未挖出的地雷 E表示:未挖出的空白方块 什么叫未挖出,就是你没玩的时候,棋盘是什么样的,就是你站在上帝视角看待棋盘 B:表示挖出来是空白的,如…...
MySQL企业版免费开启,强先体验
近期Oracle突然宣布,MySQL企业版面向开发者免费开放下载,这一消息瞬间引爆DBA圈。作为数据库领域的“顶配车型”,企业版长期因高昂授权费让中小团队望而却步,如今免费开放无异于“劳斯莱斯开进菜市场”。 本文将深度拆解企业版的…...
React Contxt详解
React Contxt详解 React 的 Context API 是用于跨组件层级传递数据的解决方案,尤其适合解决「prop drilling」(多层组件手动传递 props)的问题。以下是关于 Context 的详细解析: 文章目录 React Contxt详解一、Context 核心概念二…...
前端工程的相关管理 git、branch、build
环境配置 标准环境打包 测试版:npm run build-test 预生产:npm run build-preview 正式版:npm run build 建议本地建里一个 .env.development.local 方便和后端联调时修改配置相关信息。 和 src 同级有一下区分环境的文件: .env.d…...
鸿蒙 Location Kit(位置服务)
移动终端设备已经深入人们日常生活的方方面面,如查看所在城市的天气、新闻轶事、出行打车、旅行导航、运动记录。这些习以为常的活动,都离不开定位用户终端设备的位置。 Location Kit 使用多种定位技术提供服务,可以准确地确定设备在室外/室…...
人工智能、机器学习与深度学习:概念解析与内在联系
人工智能、机器学习与深度学习:概念解析与内在联系 一、人工智能(Artificial Intelligence, AI) (一)人工智能的定义 人工智能的定义随着技术发展不断演变。从广义上讲,人工智能是指通过计算机技术实现的…...
【Linux学习】Ubuntu对用户进行管理
目录 写在前面 【Linux学习】Ubuntu对用户进行管理一、为什么需要用户管理?二、用户管理基础操作(一)用户管理1. 用户管理命令表格2. 关键操作场景说明场景一:创建用户并配置权限场景二:修改用户属性场景三:…...
JVM 垃圾回收器
以下是对主流 JVM 垃圾回收器的详细解析,涵盖 一、Serial GC(单线程串行回收器) 二、Parallel GC(吞吐量优先回收器) 三、CMS(Concurrent Mark Sweep,低延迟回收器) 四、G1&…...
JUC入门(三)
7、Callable 1、可以有返回值 2、可以抛出异常 3、方法不同 run()/call() 代码测试 老版本的应用 package com.yw.callable;public class Old {public static void main(String[] args) {new Thread(new MyThread()).start();} }class MyThread implements Runnable{Overri…...
RV1126多线程获取SMARTP的GOP模式数据和普通GOP模式数据
通过代码的方式同时获取SMARTP模式的VENC码流数据和普通GOP模式的VENC码流数据,并进行对比画质。 一.RV1126 VI采集摄像头数据并同时编码SMARTP模式和普通GOP模式的编码码流流程 RV1126利用多线程同时获取普通GOP的VENC码流数据和SMARTP的码流数据一般如上图&#…...
MySQL事务、视图、索引、备份和恢复
1. 事务 如果不使用事务,那么如果出现了张三账户汇款成功-500元,但是李四那边的服务器出现了故障没有接收到500元,那么就会出现张三账户里有500元但是李四那边的账户还是1元的情况,转账的500元被吞了。 创建事务 2. 视图 创建视图…...
yolov8训练模型优化模型【误检】
针对 YOLOv8 模型在电动车人脸检测中出现误检行人人脸的问题,结合最新研究与实践经验,以下提供多维度优化方案及具体实施步骤: 一、数据集优化 数据清洗与标注增强 剔除干扰样本:确保训练集中所有标注仅包含骑行状态的人脸&#x…...
初识MySQL · 索引
目录 前言: 重温磁盘 认识索引 为什么这么做,怎么做 重谈page 聚簇索引VS非聚簇索引 回表查询 索引分类 前言: 前文我们主要是介绍了MySQL的一些基本操作,增删查改一类的操作都介绍了,并且因为大多数情况下&am…...
Kubernetes in action-配置和应用升级
Kubernetes的配置和应用升级 1、配置1.1 configMap1.2 secret1.3 Downward API1.4 Kubernetes API 2、服务升级2.1 升级方式2.1.1 先删除所有的旧版pod,使用新版本pod替换2.1.2 先创建新版pod,再删除旧版本pod2.1.3 滚动优化 2.2 使用deployment声明式升…...
十三、面向对象底层逻辑-Dubbo序列化Serialization接口
一、引言:分布式通信的数据桥梁 在分布式服务调用中,参数的跨网络传输需要将对象转化为二进制流,这一过程直接影响系统的性能、兼容性与安全性。Dubbo通过Serialization接口构建了可扩展的序列化体系,支持多种序列化协议的无缝切…...
5.19 打卡
DAY 30 模块和库的导入 知识点回顾: 导入官方库的三种手段导入自定义库/模块的方式导入库/模块的核心逻辑:找到根目录(python解释器的目录和终端的目录不一致) 作业:自己新建几个不同路径文件尝试下如何导入...
MathType公式如何按照(1)(2)…编号
在word中使用mathtype插入公式,发现插入的公式编号默认为(1.1),(1.2)…,但论文中常用的公式编号是(1)(2)…,分享一下如何实现(1.1)→(1)。 ①word菜单找到“MathType”,点击“插入编号”-“格式化”。 ②取消勾选“章编号”和“节…...
解决即使安装了pageoffice网页还是无法跳转、点击按钮没有反应等问题
出现的现象: 安装了pageoffice网页还是无法跳转、点击按钮没有反应 网页提示的错误: 点击按钮之前右键检查网页发现的错误: 点击无效按钮之后右键检查出现的错误: 原因: 鉴于安全性的考虑,新版浏览器不支…...
正点原子STM32新建工程
MDK 源自德国的 KEIL 公司,是 RealView MDK 的简称。 MDK5 由两个部分组成: MDK Core 和 Software Packs。 MDK Core 又分成四个部分: uVision IDE with Editor(编辑器), ARMC/C Compiler(编译…...
计算机网络 第三章:运输层(一)
运输层位于应用层和网络层之间,是分层的网络体系结构的重要部分。该层为运行在不同主机上的应用进程提供直接的通信服务。通常特别关注因特网协议,即 TCP 和 UDP 运输层协议。 讨论运输层和网络层的关析,为研究运输层第一个关键功能ÿ…...
机器学习(14)——模型调参
文章目录 一、动态调参方法论1. 调参策略选择2. 千万数据优化原则 二、模型调参策略对比1. LightGBM调参路线2. XGBoost调参路线3. 随机森林调参策略 三、代码实现示例通用数据准备(适用于所有模型)1. LightGBM调参示例2. XGBoost调参示例3. 随机森林调参…...
基于PetaLinux的Zynq PS应用自启动全攻略
一、嵌入式Linux启动管理的艺术 在工业机器人、智能摄像头、边缘计算网关等场景中,开机自启动管理是系统可靠性的第一道关卡。本文将深入讲解Zynq PS端在PetaLinux环境下实现: Systemd服务深度定制启动时序精准控制启动速度优化技巧动态服务管理创新方案二、环境搭建与工程配…...