应用层(上篇)

应用层

应用层协议原理

网络应用程序体系解构

应用程序体系结构: 由应用程序研发者设计规定了如何在各种端系统上组织该应用程序。在选择应用程序体系结构时,应用程序研发者很可能利用现代网络应用程序中所使用的两种主流体系结构之一:客户-服务器体系结构或对等(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用于从客户端向服务器发送邮件。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

24.5.12(23广东,19陕西)(字典树)

星期一: dp题单 区间dp第三题 二叉搜索树 cf传送门 思路:dp【i】【j】【0/1】表示区间 i到 j,以 i / j为根节点能否形成一棵二叉搜索树 因为题目要求组成二叉搜索树,若 i 到 j 的节点为一颗完整的子…

等保2.0的全面解读与实施策略

《网络安全等级保护基本要求》(等保2.0)是中华人民共和国国家安全部于2019年6月发布的网络安全等级保护标准。该标准规定了我国关键信息基础设施的网络安全等级保护要求和评估标准,对于保障我国网络安全具有重要的意义。下面是对等保2.0的全面…

Scratch四级:第09讲 搜索算法

第09讲 搜索算法 教练:老马的程序人生 微信:ProgrammingAssistant 博客:https://lsgogroup.blog.csdn.net/ 讲课目录 常考的搜索算法项目制作:“小猫钓鱼”项目制作:“统计身高”项目制作:“找出出现次数最多的数字”搜索算法 搜索算法常用于列表的题目中,包括: (1)…

LabVIEW开发RS422通信

LabVIEW开发RS422通信 项目围绕LabVIEW软件开发的程序在RS422通信技术检测方面的应用进行展开,通过软件编程将上位计算机虚拟化为检测设备,控制其通信端口与被测产品进行RS422通信,以此检验产品的性能优劣。该虚拟检测仪器在实际测试中表现出…

c++红黑树的模拟实现

目录 1. 红黑树的概念 ​编辑 2. 红黑树的性质 3. 红黑树的模拟实现 3.1 红黑树节点的定义 3.2 红黑树的插入 旋转代码 插入主逻辑代码 验证是否平衡 4. 红黑树与AVL树的比较 1. 红黑树的概念 红黑树,是一种二叉搜索树,但在每个结点上增加一…

嵌入式中STM32上模拟启动Linux自动初始化

Linux中有很多编程思想可以学习,很多大佬把这些思想、机制运用到单片机的编程上。 下文,在STM32上模拟Linux kernel自动初始化流程。 通常我们写程序都是按照这个套路,一个函数一个函数按照顺序逻辑一个一个的执行下去。 如果逻辑非常复杂,涉及的模块比较多,那么这种顺…

Quests system for Unity

一个简单而灵活的任务系统将帮助你实现所有的想法,而不需要事件和逻辑中的一堆额外代码! 我的资产是一个用于执行任务的独立系统。 特征: 任务逻辑不需要继承MonoBehaviour。 在一行中完成所需任务的激活/进度/完成。 易于理解的界面,包含项目中所有任务的列表。 不需要连接…

解锁!智能代码助手 Baidu Comate 硬核能力

近日,在全球软件开发大会上暨智能软件开发生态展上,来自 Baidu Comate 的资深研发工程师分享了精彩的专题演讲,小编整理了演讲精华,和大家一起玩转“大模型软件研发”。 今天带来——吴玮琦《智能代码助手 Baidu Comate 的核心能…

【Python时序预测系列】灰狼算法(GWO)优化LSTM实现单变量时间序列预测(案例+源码)

这是我的第279篇原创文章。 一、引言 灰狼算法(GWO)是一种新型的优化算法,灵感来源于灰狼群体中的社会行为。在灰狼算法中,每只灰狼都有自己的位置和适应度值,通过模拟灰狼群体的行为来搜索最优解。将灰狼算法应用于优…

支持不同业务模式与安全要求的跨网传输解决方案,了解一下

对于科技研发型企业来说,最值钱的是研发代码这类数据资产。因此很多企业会想将这些数据“困”在内部,防止数据泄露。最常见的做法是通过防火墙、DMZ区、双网卡主机、虚拟机、网闸/光闸等隔离方式,将网络划分为企业内外网,较为常见…

职校智慧校园现状及问题解决

近年来,智慧校园已经可以满足学校日常办公的需要,但是还是存在缺乏整体规划、缺乏统一技术标准、原有应用陈旧、多重身份和密码体系、业务系统的开发和维护模式不统一、现有应用重管理轻服务现象严重、数据资产利用不足等问题。 职校智慧校园现状及问题分…

Redis详解(二)

事务 什么是事务? 事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。 事务是一个原子操作:事务中的命令要么全部被执行,要么全部都…

怎么批量下载视频?DY视频爬虫在线提取采集工具

短视频批量下载工具,具有多种模块和功能,方便用户快速批量下载短视频。该软件的详细介绍: 功能模块介绍: 一. 搜索词批量搜索下载 视频关键词添加:支持添加多个视频关键词Q530269148进行全平台视频搜索。历史去重&a…

【全网瞩目】OpenAI春季发布会结束,一夜过后又惊喜——GPT4O,新的 LLM 标准诞生了

虽然昨天我就一直关注到OpenAI的主页提示,即将发布春季直播,而且也有很多媒体透露没有Sora,可能是AI Search等等,但是没想到结果还是这么惊喜。就连OpenAI方面也在直播前几天透露,不是搜索引擎,而是GPT的优…

vwmare虚拟机迁移磁盘方法

前言 欢迎来到我的博客 个人主页:北岭敲键盘的荒漠猫-CSDN博客 本文整理 虚拟机迁移磁盘的方法 简单方便快上手 当前目标 当前迁移文件: 当前位置: 目的地: e盘虚拟机文件夹 迁移到当前目录。 实际操作 先打开虚拟机的设置,找到这个虚拟机当前的位置…

渗透测试工具及插件第二期

一、OWASP Penetration Testing Kit 这个工具他集成了中间件,等版本信息,漏洞信息,url,标识头等信息,WAF/CDN识别,密匙等信息,多种信息的功能上集合的插件。 说明书:https://micros…

照明灯具十大排名都有哪些?市面上比较流行的十大护眼台灯品牌推荐

照明灯具十大排名都有哪些?护眼台灯排名当中靠前的主要有书客、飞利浦、松下等品牌。照明灯具作为家居与办公环境中不可或缺的元素,其品质与选择直接关系到人们的视觉健康与舒适度。本文将为大家揭示照明灯具的十大排名,让大家了解市场上最受…

SQL Server中怎么排查死锁问题

一、背景 我们在UAT环境压测的时候,遇到了如下的死锁异常。 Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Transaction (Process ID 82) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Re…

Spring Cloud Alibaba 分布式配置中心(9)

项目的源码地址 Spring Cloud Alibaba 工程搭建(1) Spring Cloud Alibaba 工程搭建连接数据库(2) Spring Cloud Alibaba 集成 nacos 以及整合 Ribbon 与 Feign 实现负载调用(3) Spring Cloud Alibaba Ribbo…

C++深度解析教程笔记8

C深度解析教程笔记8 第17课 - 对象的构造(上)类定义中成员变量i和j的初始值?实验-成员变量的初始值对象初始化解决方案1实验-手动调用函数初始化对象对象初始化解决方案2:构造函数实验-构造函数小结 第18课 - 对象的构造&#xff…