Application layer


title: 应用层
date: 2023-12-20 21:03:48
tags: 知识总结
categories: 计算机网络

应用层:负责最直观的应用请求的封装、发起

一、域名系统DNS

连接在互联网上的主机不仅有IP地址,还有便于用户记忆的主机名字。域名系统DNS能够把互联网上的主机的名字转换为IP地址

互联网采用层次树状结构的命名方式,任何一个连接在互联网上的主机,都有一个唯一的层次结构的名字,即域名。域名中的每一个层次叫做域,最高层次可以划分子域,每一个子域还可以继续划分子域,这样就形成了顶级域、二级域、三级域等
级别最低的域名写在最左边,级别最高的写在最右边,完整域名不超过255个字符,单个标号不超过63个字符标号由英文字母和数字组成,字符只能使用-

全球顶级域名

按功能:国际通用顶级域名gTLD,国家顶级域名nTLD

文件传输、访问和管理 FTP
电子邮件 SMTP POP3
虚拟终端 HTTP
查询服务和远程作业登录 DNS

互联网的域名空间结构
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

从域名到IP地址的解析又多个域名服务器共同完成

域名系统不是以域为管理单位,而是以区为管理单位。区可能小于或等于域吗,但一定不能大于域,每一个区设置相应的权限域名服务器,保存区中所有主机的域名到IP的映射

(1) 根域名服务器:不管哪一个本地域名服务器,只要自己无法解析,首先求助于根域名服务器
(2) 顶级域名服务器:当收到DNS查询请求时,一般情况下会给出下一步应当找的权限域名服务器的IP地址
(3) 权限域名服务器:负责最终的域名到IP地址的解析
(4) 本地域名服务器:本地域名服务器也叫默认域名服务器,当一个主机发送DNS查询请求时,该查询请求报文就首先发给本地域名服务器,并且本地域名服务器会缓存其最近查询过的域名的解析,当所要查询的主机位于本地域名服务器的缓存中时,本地域名服务器就能立即将所查询的主机域名转化为它的IP地址,而不需要再去查询其他的域名服务器

为什么DNS支持UDP和TCP
大多数情况下DNS使用UDP进行传输,因为一般的返回的内容不会超过UDP报文的最大长度512字节,用UDP传输时,不需要经过TCP的三次握手的过程,从而提高了响应速度。因此这时也要求域名解析器和域名服务器都必须自己处理超时和重传从而保证可靠性。但如果返回的响应超过512字节或者区域传送,会使用TCP进行传输

区域传送:主域名服务器向辅助域名服务器传送变化的那部分数据,一般很大。

DNS的通信方式有UDP和TCP两种,端口都为53,一般情况下是UDP进行DNS域名查询,一般来说,UDP支持的最大数据受限于以太网帧的MTU1500字节,计算下来应该是1500 - 20 - 8 = 1472,但是怎么就变成了512了。是因为在非局域网环境,如:在internet下的时候,MTU是各个路由器进行一个配置的。所以通常路由器默认的MTU为576字节,所以为了适应网络环境,DNS协议在返回的数据大于512的时候,就转化为TCP协议

二、文件传送协议FTP

使用TCP可靠的运输服务,最广泛的文件传送协议,使用客户-服务器方式,并且一个FTP服务器进程可同时为多个客户进程提供服务

FTP的服务器进程由两部分组成:一个主进程,另外有若干个从属进程。

主进程打开端口,让外部发送的数据可以进来,并且将这些数据逐个分配给各从属进程。从属进程则是单独为这些数据服务
主进程工作步骤:
1.打开熟悉窗口(端口号21),等待客户进程发出连接请求
2.启动从属进程处理客户进程发送来的请求,处理完毕后即终止从属进程。
3.回到等待状态,继续接受其他客户进程发来的请求,主进程和从属进程的处理是并发进行的

根据数据连接是否是服务端主动建立,FTP有主动和被动两种
主动:服务器主动建立数据连接,服务器端口号位20,客户端的端口号随机,但必须大于1024,一位0-1023是熟知端口号
被动:客户端主动建立数据连接,其中客户端的端口号由客户端自己决定,服务器端的端口号随机

三、万维网WWW

一个大规模的、联机式的信息储藏所

能够非常方便的从互联网上的一个站点访问另外一个站点,从而主动的按需获取丰富的信息

万维网是一个分布式的超媒体系统,是超文本系统的扩充,而文本指的是包含指向其他文档的链接的文本

万维网的工作方式:

客户-服务器方式工作,在万维网文档所驻留的主机上运行服务器程序,这个主机,这个主机也成为万维网服务器;在客户机上运行客户程序,万维网客户程序

万维网需要解决的问题
怎样标志分布在整个互联网的万维网文档上的万维网文档

使用统一资源定位符URL
使每一个文档在整个互联网的范围内具有唯一的标识符URL

URL表示互联网上的资源的位置和访问这些资源的方法。URL实际上就是就是互联网资源的地址

URL的一般形式
<协议>://<主机>:<端口>/<路径>

协议:ftp http https
主机:万维网文档所存放主机的域名,也可以使用IP地址,通常以WWW开头
端口:协议使用的端口号,使用默认的可以省略
路径:万维网文档所存放的目录

使用什么协议来实现万维网上的各种链接

使用超文本传送协议HTTP
HTTP是一个应用层协议,使用TCP连接进行可靠的传送
HTTP定义了浏览器和万维网服务器通信的格式和规则

TCP建立连接的三报文握手的第三个报文段可以携带数据,因此第三个报文段就是客户对万维网文档的请求报文。请求一个万维网文档所需的时间是该文档的传输时间(与文档大小成正比)加上两倍往返时间RTT(一个RTT用于建立TCP连接,另一个RTT用于请求和接受万维网文档)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

非持续连接:

HTTP/1.0 每请求一个文档都要有两倍RTT的开销,若一个页面与很多连接的对象需要依次进行链接,那么每一次链接下载都导致两倍的RTT的开销
在万维网服务器往往需要同时服务于大量客户的请求,这种非持续连接会使万维网服务器的负担很重

持续连接:

HTTP/1.1 使用持续连接;万维网服务器在发送响应后仍然在一段时间内保持这条TCP连接,使同一个客户和该服务器可以持续在这条连接上传送后续的HTTP 请求报文和响应报文,只要这些文档都在同一个服务器上就行

持续连接有两种工作方式
(1)非流水线方式

客户在收到前一个响应后才能发出下一个请求。在TCP连接建立后,客户每次访问对象都要去一个往返时间RTT,这比非持续连接要用两倍的RTT的开销,节省了建立TCP所需的一个RTT时间

(2)流水线方式

在收到HTTP响应报文之前能够接着发送新的请求报文,连续的多个请求报文到达服务器后,服务器就可持续发回响应报文
流水线工作方式使TCP连接中的空闲时间减少,提高了文档的下载效率

并发TCP连接

无论是持续连接还是非持续连接,浏览器都可以打开多个并行的TCP链接以提高访问速度

HTTP/2.0

允许客户复用TCP连接进行多个请求,这样就节省了大量的TCP链接多次建立和释放连接所花费的时间

代理服务器

网络硬件设备,万维网高速缓存,一般工作在中间系统上,以代理服务器方式构成的内容分发网络CDN 在互联网应用中起到了很大的作用

简单来说,代理服务器就是把最近的一些请求和响应暂存在本地磁盘,当与暂时存放的请求相同的新请求到达时,代理服务器即返回暂存的响应,而不需要按URL去互联网访问该资源

没有代理服务器的情况下,当链路过载时,时延很大

使用代理服务器的情况
工作模式:
1.浏览器访问互联网的服务器时,先与校园网的代理服务器建立TCP连接,并向代理服务器发出HTTP请求报文。
2.若代理服务器已经存放了所请求的对象,则将此对象放入HTTP响应报文中返回给浏览器
3.若为存放,代理服务器就代表浏览器与互联网上的原点服务器建立TCP连接,并发送HTTP请求报文
4.源点服务器将所请求的对象放在HTTP 响应报文中返回给校园网的代理服务器
5.代理服务器收到对象后,先保存到本地缓存器,然后将该对象放在HTTP响应报文中,通过已经建立的TCP链接,返回个请求该对象但是浏览器

HTTP报文结构

请求报文和响应报文

组成

开始行 区分请求还是响应报文
首部行 说明浏览器、服务器或报文主题的一些信息
实体主体 请求报文一般不用;响应报文一般是万维网文档,但也可不用

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

方法:对所请求的对象进行的操作,实际上是一些命令
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

万维网站点使用Cookie来识别、跟踪用户

用户通过浏览器访问某一个网站,该网站的服务器会为其生成一个唯一的识别码,并且作为索引写入数据库当中,服务器会在响应报文的Set-cookie的首部行,写出赋予该用户的识别码。浏览器收到后会把服务器的主机名和识别码作为一项写入Cookie文件中,用户继续访问该网站的时候,每发送一个HTTP请求报文的时候,浏览器会从Cookie文件中取出该网站对于的识别码,放到HTTP请求报文的Cookie首部行中,利用次识别码,这个网站就能够跟踪该用户在该网站的活动(某音、宝等类似)。

使用超文本标记语言HTML可以使不同的作者创作不同的风格的万维网文档都能在互联网上的各种主机上显示出来,同时使用户清楚的知道在什么地方存在着连接

四、电子邮件

电子邮件系统由三个主要构建组成:用户代理、邮件服务器以及邮件发送协议和邮件读取协议

用户代理:用户与电子邮件系统的接口,电子邮件客户端软件
邮件服务器:用来发送和接受邮件,同时还要向发送人报告邮件传送的结果
用户代理向邮件服务器发送邮件或邮件服务器之间发送邮件,使用简单邮件传送协议SMTP
用户代理从邮件服务器读取邮件时,使用邮局协议第三版 POP3

SMTP 和 POP3 都使用TCP连接来可靠的传送邮件,并且都使用客户-服务器的工作方式

基于万维网的电子邮件
电子邮件从浏览器发送到邮件服务器使用HTTP协议的POST方法
两个邮件服务器之间的传仍然使用SMTP协议
邮件从邮件服务器传送到浏览器使用HTTP协议的GET方法
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

通用互联网邮件扩充 MIME
SMTP不能传送可执行文件或其他二进制文件,只能传送7位的ASCII文本文件,所以需要MIME对邮件内容进行内容的格式转换

五、动态主机配置协议DHCP

连接到互联网的计算机的协议软件需要配置以下项目:
IP地址 子网掩码 默认路由器IP地址(默认网关) 域名服务器的IP地址

不可能一直都是人工手动配置,因此动态主机配置协议DHCP(即插即用的连网方式),允许主机自动获取以上配置信息而不需要手工干预

使用客户-服务器方式

(1)需要IP地址的主机在启动时广播发送报文,将目的IP地址设为255:255:255:255,这时该主机就成为DHCP客户,发送广播报文是因为不知道DHCP服务器在什么地方,因此要发现DHCP服务器的IP地址,这台主机目前还没有自己的IP地址,因此它将IP数据报的源IP地址设为0
(2)本地网络上的所有主机都能够收到这广播报文,但只有DHCP服务器才回答此广播报文。DHCP服务器先在其数据库中查找该计算机的配置信息,若找到,则返回找到的信息,若找不到,则从服务器的IP地址池中取一个地址分配给计算机。DHCP服务器使用提供报文将配置信息返回给请求方

DHCP中继代理

广播发送的发现报文无法跨网络传输,而在每一个网络中设置一个DHCP服务器又会使DHCP服务器的数量太多,因此需要在每一个网络中至少部署一个DHCP中继代理,而路由器太多具有中继代理功能,它配置了DHCP服务器的IP地址信息
然后,当DHCP中继代理收到主机以广播形式发送的发现报文后,就以单播的形式向DHCP服务器转发此报文,并等待回答,收到DHCP服务器回答的提供报文后,DHCP中继代理再把此提供报文发回给主机

租用期

DHCP服务器分配给DHCP客户的IP地址是临时的,因此DHCP客户只能在一段时间内使用,其值可在DHCP服务器中设定

DHCP服务器在给DHCP客户发送的提供报文的选项中给出租用期的数值,过半1,DHCP客户需要发送请求报文更新租用期

1.DHCP服务器被动打开UDP端口67,等待客户端发来的报文
2.DHCP客户从UDP端口68发送报文
3.凡收到DHCP发现报文的DHCP服务器都发出DHCP提供报文,因此DHCP客户可能收到多个DHCP提供报文
4.DHCP客户从几个DHCP服务器中选择一个,并向其发送DHCP请求报文
5.被选择的DHCP服务器发送确认报文,DHCP客户收到确认报文后就可以使用这个IP地址了
6.DHCP客户现在要根据服务器提供的租用期T设置两个计时器T1和T2,他们的超时时间分别是0.5T和0.875T
7.租用期过半(T1时间到),DHCP客户发送请求报文,要求更新租用期
8.若DHCP服务器同意,则发回确认报文,DHCP客户得到了新的租用期,需要重新设置计时器
9.若DHCP服务器不同意,则发回否认报文,这是DHCP客户必须立即停止使用原来的IP地址,而必须重新申请IP地址(回到步骤2)

DHCP客户可随时终止服务器所提供的租用期,这时只需要向DHCP服务器发送释放报文即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/289729.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Idea启动运行“错误:java: 无效的源发行版: 13”,如何解决?

以上是以JDK1.8的项目作为举例&#xff0c;如果您用的是其他版本请选择对应的language level idea中项目的language level的含义 language level指的是编译项目代码所用的jdk版本。那么&#xff0c;从这个定义出发会有两个小问题。 ❶ 如果project sdk是jdk8&#xff0c;那么la…

卡尔曼滤波算法

卡尔曼滤波算法是一种经典的状态估计算法&#xff0c;它广泛应用于控制领域和信号处理领域。在电动汽车领域中&#xff0c;卡尔曼滤波算法也被广泛应用于电池管理系统中的电池状态估计。其中&#xff0c;电池的状态包括电池的剩余容量&#xff08;SOC&#xff09;、内阻、温度等…

openGauss学习笔记-185 openGauss 数据库运维-升级-提交升级/升级版本回退/异常处理

文章目录 openGauss学习笔记-185 openGauss 数据库运维-升级-提交升级/升级版本回退/异常处理185.1 提交升级操作步骤 185.2 升级版本回滚操作步骤 185.3 异常处理升级问题FAQ openGauss学习笔记-185 openGauss 数据库运维-升级-提交升级/升级版本回退/异常处理 185.1 提交升级…

Swift并发的结构化编程

并发&#xff08;concurrency&#xff09; 早期的计算机 CPU 都是单核的&#xff0c;操作系统为了达到同时完成多个任务的效果&#xff0c;会将 CPU 的执行时间分片&#xff0c;多个任务在同一个 CPU 核上按时间先后交替执行。由于 CPU 执行速度足够地快&#xff0c;给人的错觉…

基于Java+SpringBoot+vue+elementUI私人健身教练预约管理系统设计实现

基于JavaSpringBootvueelementUI私人健身教练预约管理系统设计实现 欢迎点赞 收藏 ⭐留言 文末获取源码联系方式 文章目录 基于JavaSpringBootvueelementUI私人健身教练预约管理系统设计实现一、前言介绍&#xff1a;二、系统设计&#xff1a;2.1 性能需求分析2.2 B/S架构&…

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK实现相机掉线自动重连(C#)

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK实现相机掉线自动重连&#xff08;C#&#xff09; Baumer工业相机Baumer工业相机的掉线自动重连的技术背景通过PnP事件函数检查Baumer工业相机是否掉线在NEOAPI SDK里实现相机掉线重连方法&#xff1a;工业相机掉线重连测试演示图…

Python武器库开发-武器库篇之代理池配置(四十)

武器库篇之代理池配置(四十) 我们在渗透的过程中&#xff0c;是必须要挂代理的&#xff0c;相信为何要挂代理的原因&#xff0c;各位也是非常的明白的&#xff0c;这里就不多讲了。关于如何挂代理和购买代理大家可以去看内网隧道代理技术&#xff08;十&#xff09;之公网资产…

优雅地展示20w单细胞热图|非Doheatmap 超大数据集 细胞数太多

单细胞超大数据集的热图怎么画&#xff1f;昨天刚做完展示20万单细胞的热图要这么画吗&#xff1f; 今天就有人发消息问我为啥他画出来的热图有问题。 问题起源 昨天分享完 20万单细胞的热图要这么画吗&#xff1f;&#xff0c;就有人问为啥他的数据会出错。我们先来看下他的…

CMU15-445-Spring-2023-Project #0 - C++ Primer

前置任务。 Task #1 - Copy-On-Write Trie Copy-on-write (COW) Trie 在进行修改时&#xff0c;不会立即复制整个数据结构。相反&#xff0c;它会在需要修改的节点被多个引用的时候才进行复制。当要对某个节点进行写操作&#xff08;添加子节点或者继续向下insert&#xff09…

FLASH 闪存-stm32入门

本节我们学习的内容是 STM32 的 FLASH&#xff0c;闪存。 当然闪存是一个通用的名词&#xff0c;表示的是一种非易失性&#xff0c;也就是掉电不丢失的存储器。比如&#xff0c;我们之前学习 SPI 的时候&#xff0c;用的 W25Q64 芯片&#xff0c;就是一种闪存存储器芯片。 而…

【QML】与 C++ 混合编程:互相调用函数

文章目录 qml 调用 C 函数案例 a&#xff1a;Q_INVOKABLE 标记 C 函数 视图设置进 qml 属性案例 b&#xff1a;qml 通过发送信号的方式&#xff0c;调用 Qt 槽函数 C调用qml函数 qml 调用 C 函数 qml 要使用 C 的函数有两个方法&#xff1a; 一种是&#xff0c;用 Q_INVOKABLE…

守护进程“独辟蹊径”

守护进程“独辟蹊径” 一、前言二、实际运用2.1 知识介绍2.2 单机库场景应用2.2.1 配置dmwatcher.ini2.2.2 注册后台守护服务2.2.3 配置dmmal.ini2.2.4 配置归档和守护OGUID2.2.5 开启mal2.2.6 启动守护2.2.7 测试dmserver异常退出 三、总结 DM技术交流QQ群&#xff1a;9401242…

数据结构—环形缓冲区

写在前面&#xff0c;2023年11月开始进入岗位&#xff0c;工作岗位是嵌入式软件工程师。2024年是上班的第一年的&#xff0c;希望今年收获满满&#xff0c;增长见闻。 数据结构—环形缓冲区 为什么要使用环形数组&#xff0c;环形数组比起原来的常规数组的优势是什么&#xf…

Windows 10系统用Xlight FTP搭建SFTP服务器

步骤&#xff1a; 1.安装SFTP服务器 刚开始我使用的是freeSSHd&#xff0c;后面发现由于公司网络原因&#xff0c;打不开这个软件&#xff0c;改成了使用Xlight FTP&#xff0c; 官网下载链接&#xff1a;Xlight FTP 服务器 - 下载免费的windows FTP 服务器 Xlight FTP有30…

LocalSend 开源跨平台的局域网文件互传工具

如果您需要在多平台设备之间进行文件传输&#xff0c;例如从Windows电脑到安卓手机&#xff0c;或者从安卓手机到macOS&#xff0c;通常会使用聊天工具或者U盘进行传输。为了简化这一过程&#xff0c;推荐使用一款全平台支持的文件共享传输工具&#xff1a;LocalSend。 LocalS…

Qt通过pos()获取坐标信息

背景&#xff1a;这是一个QWidget窗体&#xff0c;里面是各种布局的组合&#xff0c;一层套一层。 我希望得到绿色部分的坐标信息(x,y) QPoint get_pos(QWidget* w, QWidget* parent) {if ((QWidget*)w->parent() parent) {return w->pos();}else {QPoint pos(w->po…

以 Serverfull 方式运行无服务器服务

当前 IT 架构中最流行的用例是从 Serverfull 转向 Serverless 设计。在某些情况下&#xff0c;我们可能需要以 Serverfull 方式设计服务或迁移到 Serverfull 作为运营成本的一部分。 在本文中&#xff0c;我们将展示如何将 Kumologica flow 作为 Docker 容器运行。通常&#x…

alibabaCloud学习笔记01(小滴课堂)

微服务架构常见的核心组件 讲解业务微服务架构常见解决方案 讲解AlibabaCloud核心组件介绍 创建数据库。 建表&#xff1a; 添加数据&#xff1a; 再建个用户库&#xff1a; 建表&#xff1a; 插入数据&#xff1a; 创建订单库&#xff1a; 建表&#xff1a; 创建项目&#x…

基于SpringBoot的旅游网站

目录 前言 开发环境以及工具 项目功能介绍 用户端&#xff1a; 管理端&#xff1a; 详细设计 用户端首页 登录页面 管理端页面 源码获取 前言 本项目是一个基于IDEA和Java语言开发基于SpringBoot的旅游网站。应用包含管理端和用户端等多个功能模块。 改革开放以来&am…

redis 三主六从高可用dockerswarm高级版(不固定ip)

redis集群(cluster)笔记 redis 三主三从高可用集群docker swarm redis 三主六从高可用docker(不固定ip) redis 三主六从高可用dockerswarm高级版(不固定ip) 此博客解决&#xff0c;redis加入集群后&#xff0c;是用于停掉后重启&#xff0c;将nodes.conf中的旧的Ip替换为新的…