应用层(上篇)

应用层

应用层协议原理

网络应用程序体系解构

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

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

相关文章

图像质量评价指标:了解图像质量的度量方式

图像质量评价指标:了解图像质量的度量方式 在图像处理和计算机视觉领域,评价图像质量的准确性对于许多应用至关重要。通过合适的评价指标,我们可以量化图像的质量,从而更好地了解图像处理算法的效果和改进空间。本文将介绍图像质…

R语言手把手教你进行支持向量机分析

1995年VAPINK 等人在统计学习理论的基础上提出了一种模式识别的新方法—支持向量机 。它根据有限的样本信息在模型的复杂性和学习能力之间寻求一种最佳折衷。 以期获得最好的泛化能力.支持向量机的理论基础决定了它最终求得的是全局最优值而不是局部极小值,从而也保证了它对未知…

从头开始学Spring—02基于XML管理bean

目录 1.实验一:入门案例 2.实验二:获取bean 3.实验三:依赖注入之setter注入 4.实验四:依赖注入之构造器注入 5.实验五:特殊值处理 6.实验六:为类类型属性赋值 7.实验七:为数组类型属性赋值…

【kubeflow文档】kubeflow介绍与架构

1. kubeflow介绍 Kubeflow项目致力于使机器学习(ML)工作流在Kubernetes上的部署变得简单、可移植和可扩展。目标不是重新创建其他服务,而是提供一种直接的方法,将ML的开源系统部署到不同的基础设施中。无论在哪里运行Kubernetes&a…

[windows系统安装/重装系统][step-3]装驱动、打驱动、系统激活

重装系统三部曲 [windows系统安装/重装系统][step-1]U盘启动盘制作,微软官方纯净系统镜像下载-CSDN博客 [windows系统安装/重装系统][step-2]BIOS设置UEFI引导、磁盘分区GPT分区、安装系统[含完整操作拍照图片]-CSDN博客 [windows系统安装/重装系统][step-3]装驱动…

第 397 场 LeetCode 周赛题解

A 两个字符串的排列差 模拟&#xff1a;遍历 s s s 记录各字符出现的位置&#xff0c;然后遍历 t t t 计算排列差 class Solution {public:int findPermutationDifference(string s, string t) {int n s.size();vector<int> loc(26);for (int i 0; i < n; i)loc[s…

了解C++中STL的堆操作:构建、拆解和排序 堆(Heap)

在C中使用STL构建、拆解和排序堆 一、简介二、std::push_heap三、std::pop_heap四、std::sort_heap五、总结 一、简介 首先要要熟悉堆&#xff08;Heap&#xff09;是什么以及它们是如何工作的&#xff0c;如果你不知道什么是堆&#xff08;Heap&#xff09;&#xff0c;可以先…

数据库——SQL SERVER(先学删库跑路)

目录 一&#xff1a;什么是数据库 二&#xff1a;为什么需要数据库 三&#xff1a;数据库的安装 四&#xff1a;学前必备知识 1. 数据库原理 2. 数据库与编程语言 3. 数据库与数据结构的区别 4. 连接 5. 有了编程语言为啥还要数据库 6. 初学者学习数据库的三个方面 …

激光SLAM总结——Fast LIO / Fast LIO2 / Faster LIO

激光SLAM总结——Fast LIO / Fast LIO2 / Faster LIO 在之前的工作中有接触过LOAM&#xff0c;最近在工作中又接触到Faster LIO相关的工作&#xff0c;于是想着对Fast LIO / Fast LIO2 / Faster LIO这一系列工作进行一个简单的总结&#xff0c;以加深自己对激光SLAM算法的理解…

【GlobalMapper精品教程】082:WGS84/CGCS2000转阿尔伯斯(Albers)投影

参考阅读: ArcGIS实验教程——实验十:矢量数据投影变换 【ArcGIS Pro微课1000例】0024:自定义坐标系统—以阿尔伯斯投影(Albers)为例 【ArcGIS风暴】ArcGIS自定义坐标系统案例教程—以阿尔伯斯投影(Albers)为例 文章目录 一、加载实验数据二、设置输出坐标系三、数据导出…

基于C#开发web网页管理系统模板流程-登录界面

前言&#xff0c;首先介绍一下本项目将要实现的功能 &#xff08;一&#xff09;登录界面 实现一个不算特别美观的登录窗口&#xff0c;当然这一步跟开发者本身的设计美学相关&#xff0c;像蒟蒻博主就没啥艺术细胞&#xff0c;勉强能用能看就行…… &#xff08;二&#xff09…

mikefile函数与实用模板

文章目录 0.概述1.函数调用语法2.字符串处理函数2.1 subst&#xff08;字符串替换函数&#xff09;2.2 patsubst&#xff08;模式字符串替换函数&#xff09;2.3 strip&#xff08;去空格函数&#xff09;2.4 findstring&#xff08;查找字符串函数&#xff09;2.5 filter&…