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

计算机网络--应用层

计算机网络–计算机网络概念
计算机网络–物理层
计算机网络–数据链路层
计算机网络–网络层
计算机网络–传输层
计算机网络–应用层

1. 概述

因为不同的网络应用之间需要有一个确定的通信规则。

1.1 两种常用的网络应用模型

1.1.1 客户/服务器模型(Client/Server)


1.1.2 P2P模型(Peer-to-Peer)

网络健壮性指的是P2P模型不容易坏掉,即使一个节点坏了也没问题,可以有其他节点代替。

2. 域名系统协议(DNS)

2.1 概述

DNS就是将打在地址栏的域名转化为IP地址的东西。

2.1.1 域名

域名就是www.xxx.com,当然这是最简单的一种 .com之后还可以有东西,称之为根,域名从左向右,级别逐渐增高。


2.2 域名服务器(DNS服务器)

DNS服务器有很多台,根据层次结构分为三层,根域名服务器,顶级域名服务器,权限域名服务器。
本地域名服务器不算层次结构,特点是里主机比较近,当主机和另一台比较近的主机通信时,就不用走哪些更高级的服务器了。
根域名服务器并不是一个域名只有一台,而是一个域名对应多台域名服务器,全世界一共有13个这样的域名,分别是a.rootservers.net,b.rootservers.net,c.rootservers.net,~m.rootservers.net
在权限域名服务器中,虽然看似abc.com比y.abc.com少了一位,但是他们的地位仍是对等的,对应的两台权限域名服务器。

2.3 域名解析过程



2.3.1 递归查询

在上图中
主机先是想本地域名服务器发送请求,如果查不到的话,
本地域名服务器向根域名服务器发送请求(找别人),如果还是查不到的话,
根域名域名服务器向顶级域名服务器发送请求(找别人),如果还是查不到的话,
顶级域名服务器向权限域名服务器发送请求(找别人)
可以看到每一次向下一个查询的服务器都变了,不是主机一个个去问,而是服务器自己一个个问下去

2.3.2 迭代查询

在上图中
主机先是想本地域名服务器发送请求,如果查不到的话,
本地域名服务器就让主机去向根域名服务器发送请求(主机去找,本地域名给目标根域名服务器的IP地址),如果还是查不到的话,
根域名域名服务器让主机去向对应的顶级域名服务器发送请求(主机去找,根域名给目标顶级域名服务器的IP地址),如果还是查不到的话,
顶级域名服务器让主机去向权限域名服务器发送请求(主机去找,顶级域名给目标权限域名服务器的IP地址)
可以看到这里是主机一个个挨个问的地址

2.3.3 高速缓存

为了减少多次查询同一个域名的资源浪费,本地域名服务器会存储最近使用的ip地址解析,下次再访问同一个域名就不需要这么多查询步骤了。同时这个高速缓存主机本身也有存储
同时本地域名服务器还可以对顶级域名服务器,权限域名服务器的地址进行缓存,下一次即使是不知道的ip地址,查询也可以更快
高速缓存为了保持正确性,需要定时更新

3. 文件传输协议(FTP,TFTP)

3.1 概述

TFTP是一个轻量的,比较容易实现的,面对小文件的,UDP的文件传输协议
这里我们重点是FTP协议

3.2 FTP的服务端和客户端


3.3 FTP的工作原理

为什么有匿名登陆:对于一些公共服务器来说,增加验证阶段就是增加资源开销,减少验证阶段就可以节省资源来更好地服务
主进程和从属进程的区别:主进程是打开端口,让外部发送的数据可以进来,并且将这些数据逐个分配各从属进程。从属进程则是单独为这些数据服务


先注释一下这里的主进程被忽略掉了,只是没标在上面,不是没有啊
这里客户端和服务器端先建立TCP连接,端口是21,称为控制连接
然后看情况是主动建立连接还是被动建立连接
主动建立连接是指服务器端主动发送请求和客户端进行连接,此时端口号固定是20
被动连接是指客户端发送请求和服务器端建立数据传送连接,此时端口号是不确定,有两者协商得到
数据传输完成之后,数据连接断开,控制连接继续保持,直至两边发送断开请求

FTP的两种传输模式了解即可

4. 电子邮件

4.1 概述

4.1.1 电子邮件的格式


4.1.2 电子邮件系统的组成结构

邮件服务器的功能注释
邮件服务器端的发送和接受是指从自己的用户代理处接收邮件,之后向对面的邮件服务器发送邮件
邮件服务器的报告邮件发送结果就是投递是否成功这种情况
邮件服务器既可以作为客户端又可以作为服务器端,使用的是C/S方式
协议的功能注释
发邮件用的是SMTP
收邮件的是POP3或者IMAP


4.2 几个邮件协议

4.2.1 简单邮件传送协议SMTP

注意一下,这里STMP客户和服务器不是固定死的,可以也可以成为服务器,服务器也可以成为用户,由发送方和接收方决定,发送方就是客户,接收方就是服务器

注释
可以看见这里比如

220 service ready
250 OK
421 service not available
550 xxx
354 xxx
123451
2
3
4
5
6

都是应答信息
这里RCPT能有多条命令的原因是,电子邮件可以有多个收件人,就是群发,所以允许多个RCPT
再强调一下,这里服务器和客户端可以互换,视具体情况而定,发送方是客户端,接收方是服务器端

4.2.2 改进SMTP缺点的MIME协议

MIME改善SMTP发送数据的缺点,是SMTP的功能性扩展
MIME协议已经逐渐开始应用到浏览器当中,通过对不同文件类型用不同的标识符标识,来让浏览器读取通过MIME的相关文件

4.2.3 邮局协议POP3

这里接收方是客户端,邮件服务器是服务器端
POP3确实很简单,但是有不少缺点,比较难受的就是邮件一旦下载就自动删除了

4.2.4 比较复杂的读取邮件的协议——IMAP协议


4.3 基于万维网的电子邮件

与之前的不同的地方就是,基于万维网的电子邮件的邮件服务器端可以不同
同时,发送邮件使用的SMTP/MIME和收邮件时的POP3/IMAP协议都换成了HTTP协议

5. 万维网和HTTP协议

5.1 万维网概述

URL用来标识整个互联网当中的某一个资源(文字,视屏,音频等)的位置
HTTP用来将这些资源传送给用户
HTML帮助设计者来设计页面,让不同设计者设计的页面都可以在界面上显示

5.2 HTTP协议

5.2.1 HTTP协议的过程

这张图里讲了HTTP的具体过程
服务器通过TCP 80端口来监听HTTP请求
注意HTTP可以不一次性下载完页面的所有资源,可以只下载文本部分,其他音频视频等待用户下一步请求之后再传输

5.2.2 HTTP协议的特点


5.2.3 HTTP的连接方式——持久连接和非持久连接

非持久连接在TCP三次握手的第三次握手时发生,将HTTP请求作为第三次握手的数据部分发给服务器,服务器收到请求之后将HTTP相应报文传输给客户。耗时就是RTT*2+文档传输时间。
缺点就是这样如果再想传输,那么就需要重新建立TCP连接从头开始
持久连接和非持久连接类似,都是在第三次握手时发生,将HTTP请求作为第三次握手的数据部分发给服务器,服务器收到请求之后将HTTP相应报文传输给客户。但是持久连接再需要请资源的时候就不需要建立新的TCP连接了

持久连接的两种方式——非流水线和流水线

非流水线就是发一个,确认一个,才能再发下一个
流水线就是一个个连着发,然后多个确认
和之前说过的停止等待协议,后退N帧协议和选择重传协议很像,忘了的话可以去复习一下
开个传送门计算机网络笔记Part3 数据链路层(Data Link Layer)

5.2.4 HTTP的报文结构

开始行用于区别请求报文和响应报文。可以明显的看到两者第一行的东西都不一样
请求报文的方法是指命令,就是对所请求的对象进行什么操作,如获取/删除等等
URL就是之间说的资源标识符
版本是指使用的是什么版本的HTTP协议
CRLF相当于我们程序里面的;,标识一行的结束。同时,在整个首部行结束时,为了区别首部行和实体主体还会有一行单独的CRLF

这里举了请求报文的例子,和一些常用的状态码

6. 本章思维导图

相关文章:

计算机网络--应用层

计算机网络–计算机网络概念 计算机网络–物理层 计算机网络–数据链路层 计算机网络–网络层 计算机网络–传输层 计算机网络–应用层 1. 概述 因为不同的网络应用之间需要有一个确定的通信规则。 1.1 两种常用的网络应用模型 1.1.1 客户/服务器模型(Client/Se…...

计算机网络 —— 网络层(IP数据报)

计算机网络 —— 网络层(IP数据报) 网络层要满足的功能IP数据报IP数据报格式IP数据报首部格式数据部分 IP数据报分片 我们今天进入网络层的学习。 网络层要满足的功能 网络层作为OSI模型中的第三层,是计算机网络体系结构的关键组成部分&…...

Clo3D导出服装动画,使用Unity3D展示

1.前言 Clo3D是一款应用于时装行业的3D服装设计软件,其强大的布料模拟算法可在3D空间中实现设计、制版、试衣和走秀,大幅提升数字作品逼真度和制作效率。为了让服装动画效果展示在Unity3D上模拟效果,需要Clo3D模拟出逼着的衣服动画。总体流程为Clo3D - Mixamo -Blen…...

LSTM 词语模型上的动态量化

原文链接 (beta) Dynamic Quantization on an LSTM Word Language Model — PyTorch Tutorials 2.3.0cu121 documentation 引言 量化涉及将模型的权重和激活值从浮点数转换为整数,这样可以缩小模型大小,加快推理速度,但对准确性的影响很小…...

STM32 proteus + STM32Cubemx仿真教程(第一课LED教程)

文章目录 前言一、STM32点亮LED灯的原理1.1GPIO是什么1.2点亮LED灯的原理 二、STM32Cubemx创建工程三、proteus仿真电路图四、程序代码编写1.LED灯操作函数介绍HAL_GPIO_WritePin函数原型参数说明示例代码 HAL_GPIO_TogglePin函数原型参数说明示例代码 2.代码编写3.烧写程序 总…...

享元模式

前言 享元模式:运用共享技术有效地支持大量细粒度的对象。 在享元对象内部并且不会随环境改变而改变的共享部分,可以称为是享元对象的内部状态,而随环境改变而改变的、不可以共享的状态就是外部状态了。事实上,享元模式可以避免大…...

R语言数据分析16-针对芬兰污染指数的分析与考察

1. 研究背景及意义 近年来,随着我国科技和经济高速发展,人们生活质量也随之显著提高。但是, 环境污染问题也日趋严重,给人们的生活质量和社会生产的各个方面都造成了许多不 利的影响。空气污染作为环境污染主要方面,更…...

Search用法Python:深入探索搜索功能的应用与技巧

Search用法Python:深入探索搜索功能的应用与技巧 在Python编程中,搜索功能是一项至关重要的技能,它能够帮助我们快速定位并处理数据。然而,对于初学者来说,如何高效地使用搜索功能可能会带来一些困惑。本文将从四个方…...

STM32的FreeRtos的学习

首先就是去官网下载一个源文件:FreeRtos官网 下载下来的是一个zip文件,解压缩了。 然后再工程文件夹中创建个文件夹: 在这个文件夹中创建3个文件夹: 然后开始把下载下来的文件夹中的文件挑选出来放到我们的工程文件夹中&#xff1…...

从零入手人工智能(2)——搭建开发环境

1.前言 作为一名单片机工程师,想要转型到人工智能开发领域的道路确实充满了挑战与未知。记得当我刚开始这段旅程时,心中充满了迷茫和困惑。面对全新的领域,我既不清楚如何入手,也不知道能用人工智能干什么。正是这些迷茫和困惑&a…...

Web前端指南

前言 前端开发员主要负责网站的设计、外观和感觉。他们设计引人入胜的在线用户体验,激发用户兴趣,鼓励用户重复访问。他们与设计师密切合作,使网站美观、实用、快捷。 如果您喜欢创造性思维、打造更好的体验并对视觉设计感兴趣,这将是您的理想职业道路。 探讨前端、后端以…...

AI菜鸟向前飞 — LangChain系列之十七 - 剖析AgentExecutor

AgentExecutor 顾名思义,Agent执行器,本篇先简单看看LangChain是如何实现的。 先回顾 AI菜鸟向前飞 — LangChain系列之十四 - Agent系列:从现象看机制(上篇) AI菜鸟向前飞 — LangChain系列之十五 - Agent系列&#…...

nodejs 第三方库 exiftool-vendored

exiftool-vendored 是一款可以帮助你快捷修改图片信息的第三方库。如果你想要批量修改图片信息的话,那么它是一个不错的选择。 1.导入第三方库 在控制台中执行下面代码即可。 npm install exiftool-vendored --save2.获取信息 这里给出例子。 const { exiftool …...

docker部署redis实践

1.拉取redis镜像 # 拉取镜像 sudo docker pull redis2.创建映射持久化目录 # 创建目录 sudo mkdir -p $PWD/redis/{conf,data}3. 运行redis 容器,查看当前redis 版本号 # 运行 sudo docker run --name redis -d -p 6379:6379 redis # 查看版本号 sudo docker ex…...

Web前端学习之路:深入探索学习时长与技能进阶的奥秘

Web前端学习之路:深入探索学习时长与技能进阶的奥秘 在数字化时代,Web前端技术成为了连接用户与互联网世界的桥梁。对于初学者来说,学习Web前端究竟需要多久,以及如何高效掌握相关技能,一直是困扰他们的难题。本文将从…...

如何不用命令创建用户

都有哪些操作: 1、在/etc/passwd添加一行 2、在/etc/shadow添加一行 3、在/etc/group添加一行 4、创建用户家目录 5、创建用户邮件文件 例如: 创建用户jerry 要求: uid:777 主组:hadoop(800&#xff09…...

基于Python实现可视化分析中国500强排行榜数据的设计与实现

基于Python实现可视化分析中国500强排行榜数据的设计与实现 “Design and Implementation of Visual Analysis for China’s Top 500 Companies Ranking Data using Python” 完整下载链接:基于Python实现可视化分析中国500强排行榜数据的设计与实现 文章目录 基于Python实现…...

VUE3 学习笔记(13):VUE3 下的Element-Plus基本使用

UI是页面的门面,一个好的UI自然令人赏心悦目;国人团队开发的ElementUI在众多UI中较为常见,因此通过介绍它的使用让大家更好的了解第三方UI的使用。 安装 Npm install element-plus --save 或 Cnpm install element-plus --save 配置 全局配置…...

MySql数据库安全加固

设置密码复杂度策略 查看密码策略 SHOW VARIABLES LIKE validate_password%; 设置密码策略 INSTALL PLUGIN validate_password SONAME validate_password.so; 设置登陆失败策略 安装插件(谨慎操作,可能会导致数据库卡死) install plug…...

Nginx(title小图标)修改方法

本章主要讲述Nginx如何上传网站图标。 操作系统: CentOS Stream 9 首先我们bing搜索ico网站图标在线设计,找到喜欢的设计分格并下载。 是一个压缩包 然后我们上传到nginx解压 [rootlocalhost html]# rz[rootlocalhost html]# unzip favicon_logosc.z…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

Spring AI与Spring Modulith核心技术解析

Spring AI核心架构解析 Spring AI(https://spring.io/projects/spring-ai)作为Spring生态中的AI集成框架,其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似,但特别为多语…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列,以便知晓哪些列包含有价值的数据,…...

网站指纹识别

网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...

C#中的CLR属性、依赖属性与附加属性

CLR属性的主要特征 封装性: 隐藏字段的实现细节 提供对字段的受控访问 访问控制: 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性: 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑: 可以…...

Razor编程中@Html的方法使用大全

文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...

Rust 开发环境搭建

环境搭建 1、开发工具RustRover 或者vs code 2、Cygwin64 安装 https://cygwin.com/install.html 在工具终端执行: rustup toolchain install stable-x86_64-pc-windows-gnu rustup default stable-x86_64-pc-windows-gnu ​ 2、Hello World fn main() { println…...

Vue ③-生命周期 || 脚手架

生命周期 思考:什么时候可以发送初始化渲染请求?(越早越好) 什么时候可以开始操作dom?(至少dom得渲染出来) Vue生命周期: 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...