应用层(上篇)

应用层

应用层协议原理

网络应用程序体系解构

应用程序体系结构: 由应用程序研发者设计规定了如何在各种端系统上组织该应用程序。在选择应用程序体系结构时,应用程序研发者很可能利用现代网络应用程序中所使用的两种主流体系结构之一:客户-服务器体系结构或对等(P2P)体系结构。
客户-服务器体系结构:打开的主机称为服务器,它服务于来自许多其他称为客户的主机的请求。
在这里插入图片描述

对等(P2P)体系结构: 应用程序在间断连接的主机对之间使用直接通信,这些主机对被称为对等方,在一个P2P文件共享应用中,尽管每个对等方都由于请求文件产生工作负载,但每个对等方通过向其他对等方分发文件也为系统增加服务能力。

进程通信

进程: 进行通行的是进程
在两个不同端系统上的进程,通过跨越计算机网络交换报文(message)而相互通信。发送进程生成并向网络中发送报文:接收进程接收这些报文并可能通过回送报文进行响应。
Web应用程序中,一个客户浏览器进程与一台Web服务器进程交换报文。在一个P2P文件共系统中,文件从一个对等方中的进程传输到另一个对等方中的进程。

客户和服务端进程

付于Web而言,浏览器是一个客户进程,Web服务器是一台服务器进程。
对于P2P文件共享,下载文件的对等方标识为客户,上载文件的对等方标识为服务器。
在一对进程之间的通信会话场景中,发起通信(即在该会话开始时发起与其他进程的联系)的进程被标识为客户,在会话开始时等待联系的进程是服务器。

进程和计算机网络之间的接口

多数应用程序是由通信进程对组成,每对中的两个进程互相发送报文。从一个进程向另一个进程发送的报文必须通过下面的网络。进程通过一个称为套接字的软件接口向网络发送报文和从网络接收报文。
套接字是同一台主机内应用层与运输层之间的接口。由于该套接字是建立网络应用程序的可编程接口,因此套接字也称为应用程序和网络之间的应用程序编程接口
套接字对运输层的控制是: 选择运输层协议,设定几个运输层参数

进程寻址

在一台主机上运行的进程为了向在另一台主机上运行的进程发送分组,接收进程需要有一个地址。为了标识该接收进程,需要定义两种信息:①主机的地址;②在目的主机中指定接收进程的标识符。
在这里插入图片描述

除了知道报文发送目的地的主机地址外,发送进程还必须指定运行在接收主机上的接收进程(更具体地说,接收套接字)

可供应用程序使用的传输服务

套接字是应用程序进程和运输层协议之间的接口。在发送端的应用程序将报文推进该套接字。在该套接字的另一侧,运输层协议负责从接收进程的套接字得到该报文。

可靠数据传输

确保由应用程序的一端发送的数据正确、完全地交付给该应用程序的另一端。如果一个协议提供了这样的确保数据交付服务,就认为提供了可靠数据传输
运输层协议能够潜在地向应用程序提供的一个重要服务是进程到进程的可靠数据传输。当一个运输协议提供这种服务时,发送进程只要将其数据传递进套接字,就可以完全相信该数据将能无差错地到达接收进程。
当一个运输层协议不提供可靠数据传输时,由发送进程发送的某些数据可能到达不了接收进程。这可能能被容忍丢失的应用

吞吐量

沿着一条网络路径上的两个进程之间的通信会话场景中,可用吞吐量就是发送进程能够向接收进程交付比特的速率。其他会话将共享沿着该网络路径的带宽,并且因为这些会话将会到达和离开,该可用吞吐量将随时间波动
运输层协议能够以某种特定的速率提供确保的可用吞吐量。这种服务将在发送和接收进程之间提供机密性,以防该数据以某种方式在这两个进程之间被观察到 。运输协议还能提供除了机密性以外的其他安全性服务,包括数据完整性和端点鉴别

定时

运输层协议也能提供定时保证。

安全性

在发送主机中,运输协议能够加密由发送进程传输的所有数据,在接收主机中,运输层协议能够在将数据交付给接收进程之前解密这些数据

因特网提供的运输服务

TCP服务

在握手阶段后, 一个TCP连接就在两个进程的套接字之间建立了。这条连接是全双工的,即连接双方的进程可以在此连接上同时进行报文收发,通信进程能够依靠TCP无差错、按适当顺序交付所有发送的数据。当应用程序的一端将字节流传进套接字时,它能够依靠TCP将相同的字节流交付给接收方的套接字,而没有字节的丢失和冗余。
拥塞控制机制,当发送方和接收方的网络发生拥塞的时候,TCP的拥塞控制机制会抑制发送进程。
SSL(Secure Sockets Layer),即安全套接层,是一种安全协议,它为网络(如互联网)通信提供安全及数据完整性保障。SSL在传输层与应用层之间对网络连接进行加密。
SSL协议由两部分组成:SSL握手协议和SSL记录协议。
SSL握手协议:用于在客户端与服务器之间建立安全连接,并确定安全连接所使用的加密套件、加密算法和会话密钥等信息。在握手过程中,服务器会向客户端发送证书以证明其身份,客户端则会对证书进行验证。
SSL记录协议:用于对应用层数据进行封装,并通过SSL握手协议所建立的安全连接进行传输。在封装过程中,SSL记录协议会对数据进行加密、完整性校验和压缩等操作,以确保数据的机密性、完整性和可靠性
SSL 不是与 TCP 和 UDP 在相同层次 上的第三种因特网运输协议,而是一种对 TCP 的加强,这种强化是在应用层上实现的
SSL有它自己的套接字API,这类似于传统的TCP套接字API。当一个应用使用SSL时,发送进程向SSL套接字传递明文数据。在发送主机中的SSL则加密该数据并将加密的数据传递给 TCP 套接字。加密的数据经因特网传送到接收进程中的 TCP 套接字。该接收套接字将加密数据传递给 SSL ,由其进行解密。最后, SSL通过它的SSL套接字将明文数据传递给接收进程

UDP服务

UDP是无连接的,因此在两个进程通信前没有握手过程。UDP协议提供一种不可靠数据传送服务,也就是说,当进程将一个报文发送进UDP套接字时,UDP协议并不保证该报文将到达接收进程。不仅如此,到达接收进程的报文也可能是乱序到达的。
UDP 没有包括拥塞控制机制,所以UDP的发送端可以用它选定的任何速率向其下层网络层注入数据。实际端到端吞吐量可能小于该速率,这可能具因为中间链路的带密受限或因为拥塞而浩成的

因特网运输协议所不提供的服务

在这里插入图片描述

应用层协议

应用层协议: 定义了在运行在不同端系统上的应用程序进程如何相互传递报文。

  1. 交换的报文类型,例如请求报文和响应报文。
  2. 各种报文类型的语法,如报文中的各个字段及这些字段是如何描述的。
  3. 字段的语义,即这些字段中的信息的含义。
  4. 确定一个进程何时以及如何发送报文,对报文进行响应的规则

web和Http

HTTP概况

HTT定义了web客户端向web服务器请求web页面的方式,以及服务器向客户传送Web页面的方式。
在这里插入图片描述

HTTP是使用TCP作为支撑运输协议。一旦连接建立该浏览器和服务器进程就可以通过套接字接口访问TCP。
客户端的套接字接口是客户进程与TCP连接之间的门,在服务器端的套接字接口则是服务器进程与TCP连接
服务器从它的套接接口接收 HTTP请求报文和向它的套接字接口发送 HTTP 响应报文。客户向它的套接字接口发送HTTP请求报文并从它的套接字接口接收HTTP响应报文。一旦客户向它的套接字接口发送了一个请求报文,该报文就脱离了客户控制并进入TCP的控制。
HTTP无状态协议是指协议对于事务处理没有记忆能力。这意味着每次HTTP请求都是独立的,服务器不会保留先前的请求信息,也不会将先前的请求与当前的请求关联起来。
服务器向客户发送被请求的文件,而不存储任何关于该客户的状态信息。假如某个特定的客户在短短的几秒内两次请求同一个对象,服务器并不会因为刚刚为该客户提供了该对象就不再做出反应,而是重新发送该对象,就像服务器已经完全忘记不久之前所做过的事一样。因为HTTP服务器并不保存关于客户的任何信息,所以HTTP是一个无状态协议

非持续连接和持续连接

非持续连接: HTTP请求报文和响应报文通过同一个TCP连接发送和接收。
持续连接: 非持续连接的相反形式。HTTP请求报文和响应报文通过不同的TCP连接发送和接收。

采用非持续连接的HTTP

在这里插入图片描述

往返时间(RRT): 从发送方发送数据开始,到发送方收到来自接收方的确认(通常是一个ACK报文),总共经历的时间。这个时间包括了数据在传输路径上的所有延迟,比如网络设备的处理延迟、排队延迟、传输延迟(光速限制)以及传播延迟(信号在介质中传播所需的时间)。
缺点

  1. 必须为每一个请求的对象建立和维护一个全新的连接,对于每个这样的连接,在客户和服务器中都要分配TCP的缓冲区和保持TCP变量这给Web服务器带来了严重的负担。
  2. 每一个对象经受两倍RTT的交付时延即一个RTT用于创建 TCP,另一个RTT用于请求和接收一个对象。
采用持续连接的HTTP

在采用HTTP1.1持续连接的情况下,服务器在发送响应后保持该TCP连接打开。在相同的客户与服务器之间,后续的请求和响应报文能够通过相同的连接进行传送。

web缓存

web缓存是代理服务器。当Web客户端(如Web浏览器)请求一个资源时,它会首先检查本地缓存中是否已有该资源的副本。如果找到,它会直接使用缓存的版本而不是从原始服务器重新下载。能够代表初始Web服务器来满足HTTP请求的网络实体。
Web缓存器有自己的磁盘存储空间,并在存储空间中保存最近请求过的对象的副本。
可以配置用户的浏览器,使得用户的所有HTTP请求首先指向 Web 缓存器。一旦某浏览器被配置,每个对某对象的浏览器请求首先被定向到该Web缓存器。
Web缓存器可以大大减少对客户请求的响应时间,特别是当客户与初始服务器之间的瓶颈带宽远低于客户与Web缓存器之间的瓶颈带宽时.如果用户所请求的对象在Web缓存器上,则Web缓存器可以迅速将该对象交付给用户

步骤
  1. 浏览器创建一个到Web缓存器的TCP连接,并向Web缓存器中的对象发送一个HTTP请求。
  2. Web缓存器进行检查,看看本地是否存储了该对象副本。如果有,Web缓存器就向客户浏览器用 HTTP响应报文返回该对象。
  3. 如果Web缓存器中没有该对象,它就打开一个与该对象的初始服务器(即www.someschool.edu)的TCP连接。Web 缓存器则在这个缓存器到服务器的TCP 连接上发送一个对该对象的HTTP请求。在收到该请求后,初始服务器向该Web缓存器发送具有该对象的 HTTP 响应。
  4. 当Web 缓存器接收到该对象时,它在本地存储空间存储一份副本,并向客户的浏览器用HTTP响应报文发送该副本(通过现有的客户浏览器和Web缓存器之间的TCP连接)。

因特网中的电子邮件

在这里插入图片描述

SMTP 使用TCP进行可靠数据传输服务,从发送方的邮件服务器向接收方的邮件服务器发送邮件。
运行在发送方邮件服务器的客户端和运行在接收方邮件服务器的服务器端每台邮件服务器上既运行SMTP的客户端也运行SMTP的服务器端。当一个邮件服务器向其他邮件服务器发送邮件时,它就表现为SMTP的客户:当邮件服务器从其他邮件服务器上接收邮件时,它就表现为一个 SMTP的服务器。

SMTP

步骤
  1. Alice 调用她的邮件代理程序并提供Bob的邮件地址(例如 bob@someschool.edu),撰写报文,然后指示用户代理发送该报文。
  2. Alice的用户代理把报文发给她的邮件服务器,在那里该报文被放在报文队列中。
  3. 运行在Alice的邮件服务器上的SMTP 客户端发现了报文队列中的这个报文,它就创建一个到运行在Bob的邮件服务器上的SMTP服务器的TCP连接。
  4. 在经过一些初始SMTP握手后,SMTP客户通过该TCP连接发送Alice的报文。
  5. 在Bob的邮件服务器上,SMTP的服务器端接收该报文。Bob的邮件服务器然后将该报文放入Bob的邮箱中。
  6. 在Bob方便的时候,他调用用户代理阅读该报文。
    在这里插入图片描述

SMTP用的是持续连接:如果发送邮件服务器有几个报文发往同一个接收邮件服务器,它可以通过同一个TCP连接发送这些所有的报文。对每个报文,该客户用一个新的MAILFROM:crepes.开始,用一个独立的句点指示该邮件的结束,并且仅当所有邮件发送完后才发送 OUIT。

和http的对比

HTTP主要是一个拉协议(pullprotocol)即在方便的时候,某些人在 Web服务器上装载信息,用户使用HTTP从该服务器拉取这些信息
SMTP基本上是一个推协议,即发送邮件服务器把文件推向接收邮件服务器。

邮件访问协议在这里插入图片描述

难题是: Bob的用户代理不能使用SMTP得到报文,因为取报文是一个拉操作,而SMTP协议是一个推协议。
解决这个问题的协议有: POP3, IMAP和HTTP

POP3

POP3协议默认端口为110,默认传输协议为TCP,适用的构架结构为C/S,访问模式为离线访问。POP3协议规定怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件,是因特网电子邮件的第一个离线协议标准。
当用户代理(客户)打开了一个到邮件服务器(服务器)端口110上的TCP连接后,POP3就开始工作了。随着建立TCP连接,POP3按照三个阶段进行工作:特许、事务处理以及更新。在第一个阶段即特许阶段,用户代理发送(以明文形式)用户名和口令以鉴别用户。在第二个阶段即事务处理阶段,用户代理取回报文;同时在这个阶段用户代理还能进行如下操作,对报文做删除标记,取消报文删除标记,以及获取邮件的统计信息。在第三个阶段即更新阶段,它出现在客户发出了quit命令之后,目的是结束该POP3会话;这时,该邮件服务器删除那些被标记为删除的报文。

IMAP

IMAP是一个双向的通信协议,允许用户在邮件服务器上直接管理邮件,而不仅仅是下载邮件到本地设备。
IMAP服务器把每个报文与一个文件夹联系起来;当报文第一次到达服务器时,它与收件人的INBOX文件夹相关联。收件人则能够把邮件移到一个新的、用户创建的文件夹中,阅读邮件,删除邮件等。IMAP协议为用户提供了创建文件夹以及将邮件从一个文件夹移动到另一个文件夹的命令。IMAP还为用户提供了在远程文件夹中查询邮件的命令,按指定条件去查询匹配的邮件。值得注意的是,与POP3不同,IMAP服务器维护了IMAP会话的用户状态信息,例如,文件夹的名字以及哪些报文与哪些文件夹相关联。IMAP的另一个重要特性是它具有允许用户代理获取报文某些部分的命令。
IMAP是互联网消息访问协议,它用于在客户端(如电子邮件客户端软件或移动设备)和邮件服务器之间访问和管理电子邮件。与POP3不同,IMAP是一个双向的通信协议,允许用户在邮件服务器上直接管理邮件,而不仅仅是下载邮件到本地设备。
IMAP协议的主要特点包括:
双向通信:IMAP允许客户端和服务器之间进行双向通信,因此客户端可以实时查看服务器上的邮件状态(如新邮件、已读/未读状态等)。
邮件同步:由于IMAP在服务器上管理邮件,因此无论用户从哪个设备登录,他们都可以看到相同的邮件列表和状态。这意味着用户可以在多个设备之间无缝切换,而无需担心邮件同步问题。
文件夹支持:IMAP支持在服务器上创建、重命名和删除文件夹(通常称为“邮箱”或“标签”),以及在这些文件夹之间移动邮件。
搜索和排序:IMAP提供了强大的搜索和排序功能,允许用户根据各种条件(如发件人、主题、日期等)快速找到邮件。
离线访问:虽然IMAP主要是为在线访问设计的,但许多电子邮件客户端也支持IMAP的离线访问模式。这意味着用户可以在没有网络连接的情况下查看和编辑邮件,并在稍后同步到服务器。
安全性:IMAP支持通过SSL/TLS加密连接,以确保数据传输的安全性。
IMAP的默认端口通常为143(未加密)或993(SSL/TLS加密)。IMAP协议通常与SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)一起使用,SMTP用于从客户端向服务器发送邮件。

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

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

相关文章

快解析Tplink端口映射如何设置

Tplink作为国内知名路由器品牌,有着广泛的用户群体。使用快解析端口映射是实现内网服务器被外网访问必须要做的设置,很多对网络不懂得小白不知道该到哪里去做,下面我就讲解一下tplink路由器如何做端口映射。 1:访问路由器 &#…

Co-Driver:基于 VLM 的自动驾驶助手,具有类人行为并能理解复杂的道路场景

24年5月来自俄罗斯莫斯科研究机构的论文“Co-driver: VLM-based Autonomous Driving Assistant with Human-like Behavior and Understanding for Complex Road Scenes”。 关于基于大语言模型的自动驾驶解决方案的最新研究,显示了规划和控制领域的前景。 然而&…

通过钉钉卡片进行工单审批

我们通常通过钉钉机器人来发送通知,提醒审批人名下有待办工单需要处理。这种通知方式仅能提醒审批人到ITSM中处理,审批人需要打开电脑登陆平台处理,我们就考虑是否能有一种方式能够满足移动端审批? 这里我们可以使用ITSM的移动端版…

使用Flask部署Web应用:从入门到精通

文章目录 第一部分:准备工作第二部分:部署Flask应用到AWS部署到AWS Lambda 第三部分:部署Flask应用到腾讯云服务器部署到腾讯云服务器 第四部分:优化和扩展结论 在现代软件开发中,Web应用的部署是一个至关重要的环节。…

前端铺子-uniapp移动端:跨平台开发新篇章

一、引言 在移动应用开发领域,随着技术的不断进步,用户对应用的需求也日益多样化。如何快速、高效地开发跨平台应用成为了前端开发者面临的一大挑战。uni-app作为一款使用Vue.js开发所有前端应用的框架,凭借其一次编写、多端运行的特性&…

LaTeX 2024软件安装教程(附软件下载地址)

软件简介: 软件【下载地址】获取方式见文末。注:推荐使用,更贴合此安装方法! LaTeX 2024是一款基于ΤΕΧ技术的专业排版系统,特别适用于制作科技和数学文档,输出高品质印刷效果。它不仅能处理学术报告、…

一篇文章拿下Redis 通用命令

文章目录 Redis数据结构介绍Redis 通用命令命令演示KEYSDELEXISTSEXPIRE RedisTemplate 中的通用命令 本篇文章介绍 Redis 的通用命令, 通用命令在 Redis 的所有数据类型下都使用, 学好通用命令可以让我们更好的使用 Redis. Redis数据结构介绍 Redis 是一个key-value的数据库&…

cookie、session、token、表单、json、jsonp、websocket、ajax都是什么

前后端数据交互的几种方式 1.cookie Cookie是服务器保存在客户端的一小段数据,(使用Cookie的前提是客户端浏览器允许使用Cookie并对此做出相应的设置。) cookie是一种存储在用户计算机上的小型数据文件,常用于在web应用程序中跟…

postgis导出shp中文乱码

使用postgis导出shp数据,发现中文内容乱码 网上搜到的解决方案,都是添加环境变量PGCLIENTENCODINGGBK 但是添加之后,不仅没有解决我的问题,反而导出直接报错了 经过个人简单分析之后,发现这个应该跟导入的数据编码格…

Jmeter(三十九) - 从入门到精通进阶篇 - Jmeter配置文件的刨根问底 - 上篇(详解教程)

宏哥微信粉丝群:https://bbs.csdn.net/topics/618423372 有兴趣的可以扫码加入 1.简介 为什么宏哥要对Jmeter的配置文件进行一下讲解了,因为有的童鞋或者小伙伴在测试中遇到一些需要修改配置文件的问题不是很清楚也不是很懂,就算修改了也是…

ALV 可编辑性(二)

前言 前面介绍了Abap ALV的整体可编辑、列可编辑和单元格可编辑,但是有时会有根据行项目某个字段的值来控制其他单元格的可编辑性的需求,其中还涉及到ALV刷新的功能。 实战 单元格数据修改后自动刷新 单元格中的数据被修改后,将ALV单元格中的…

人工智能|深度学习——PlotNeuralNet简单教程

一、简介 PlotNeuralNet是一个强大的开源Python库,它专为简化和美化神经网络图的绘制而设计 二、安装 需要下载的工具包括:MikTeX,Python代码编辑器(这个肯定会有的吧),Git bash(可选)&#xff…

【设计模式】JAVA Design Patterns——Abstract-document(抽象文档模式)

🔍 目的 使用动态属性,并在保持类型安全的同时实现非类型化语言的灵活性。 🔍 解释 抽象文档模式使您能够处理其他非静态属性。 此模式使用特征的概念来实现类型安全,并将不同类的属性分离为一组接口 真实世界例子 考虑由多个部…

O2OA翱途开发平台前端API和后端API的访问以及使用

O2OA是一个高度可定制化的企业级开发平台,它的API(应用程序接口)分为前端和后端,各自有不同的用途,平台为用户开放了全部的后端API供开发者使用,开发者可以根据各类API组织出符合实际业务需求的新服务或者新…

分享一个基于Qt的Ymodem的上位机(GitHub开源)

文章目录 1.项目地址2.Ymodem 协议介绍3.文件传输过程4.使用5.SecureCRT 软件也支持Ymodem6.基于PyQt5的Ymodem界面实现案例 1.项目地址 https://github.com/XinLiGH/SerialPortYmodem 基于VS2019 Qt5.15.2 编译,Linux下编译也可以,这里不做说明。 2.…

C语言指针详解(三)

目录 前言 一. 回调函数是什么? 1.定义 2. 代码示例:计数器 2.1 使用回调函数改造前 2.2 使用回调函数改造后 二. qsort使用举例 1. qsort介绍 2. 使用qsort函数排序整型数据 3. 使用qsort排序结构体数据 三. qsort函数的模拟实现 四. sizeo…

【其他学习参考文档记录】

交叉编译学习参考 nodejs 交叉编译-cliff工作室

污水设备远程监控

随着环保意识的日益增强,污水处理作为城市建设和环境保护的重要一环,越来越受到社会各界的关注。然而,传统的污水处理设备管理方式往往存在着效率低下、响应速度慢、维护成本高等问题。为了解决这些痛点,HiWoo Cloud平台凭借其强大…

N 皇后 - LeetCode 热题 62

大家好!我是曾续缘🧡 今天是《LeetCode 热题 100》系列 发车第 62 天 回溯第 8 题 ❤️点赞 👍 收藏 ⭐再看,养成习惯 N 皇后 按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题…

大模型崛起与就业危机

大模型,特别是像我这样的人工智能,最有可能首先替代那些重复性高、标准化程度高、不需要太多人类直觉和情感判断的工作。这些工作通常包括数据输入、初级数据分析和处理、简单的客户服务任务等。例如,可以自动化的一些岗位包括: 1…