计算机网络之应用层

news2024/11/18 15:43:25

文章目录

  • 应用层
      • 1. 应用层协议原理
        • 1.1 网络应用程序体系结构
        • 1.2 进程通信
        • 1.3 可供程序使用的运输服务
        • 1.4 因特网提供的运输服务
        • 1.5 应用层协议
      • 2.Web应用和HTTP协议
        • 2.1 HTTP概况
        • 2.2 非持久连接和持久连接
        • 2.3 HTTP报文格式
        • 2.4 用户服务器的交互:cookie
        • 2.5 Web缓存器
      • 3、文件传输协议:FTP
      • 4、因特网中的电子邮件
        • 4.1 SMTP
        • 4.2 与HTTP的对比
        • 4.3 邮件访问协议
      • 4、DNS因特网的目录服务
          • 5.1 DNS提供的服务
          • 5.2 DNS工作机理

这篇文章我们主要说的是计算机网络中的应用层,尽量用简单有逻辑的语言让大家对应用层有一个更深入的了解~
在本篇文章中我们会使用大量的例子来帮助大家理解

应用层

应用层是网络应用程序及其应用层协议存留的地方。因特网的应用层包含了许多协议,例如HTTP(它为Web文档提供了传送和请求)、SMTP(它提供了电子邮件保温的传输)和FTP(它提供了两个端系统之间的文件的传送)。

1. 应用层协议原理

研发网络应用程序的核心就是能写出在不同的端系统下能运行且能够通过网络相互通信的程序。例如在Web应用程序中,两个相互通信的不同程序:一个运行在用户机上的浏览器程序;另一个是运行在Web服务器主机上的Web服务器程序。在研发新的应用程序时,开发者需要写出能在多台端系统上运行的软件。

1.1 网络应用程序体系结构

网络应用体系结构是固定的,并为应用程序提供特定的服务集合。应用程序体系结构由应用研发者所确定,规定了如何在各种端系统上组织该应用程序。应用程序研发者很有可能利用现代网络程序中所使用的的两种主流体系结构之一:客户机/服务器体系结构或对等(P2P)体系结构。

∙ \bullet   客户机/服务器体系结构:在这种体系结构中,有一个总是打开的服务器,它服务于来自客户机的请求。这种结构其中一个特征是客户机之间是不能相互通信的。另一个特征就是每台服务器都有一个固定的、周知的地址,成为IP地址。因为服务器的地址是周知的,并且总是打开的,所以客户机总是可以通过向服务器的IP地址发送请求联系到服务器。使用这种体系、结构的应用程序包括Web、FTP、Telent和电子邮件。

∙ \bullet   P2P体系结构:对总是打开的基础设施服务器有最小的依赖。但是呢,任意间断连接的主机对——称为对等方,直接相互通信。目前很多的流行的流量密集型应用程序基本都是用的P2P结构,包括文件分发、文件搜索/共享、因特网电话。P2P有一个很突出的特性就是自扩展性。因为客户机之间可以进行相互通信,那么对于服务器的压力就会变得很小。虽然每个对等方都由请求文件产生负载,但是每个对等方向其它对等方发文件也为系统增加了服务能力。

1.2 进程通信

∙ \bullet   客户机和服务器进程:网络应用程序是由进程对组成的,这些进程通过网络相互发送报文。对每对通信进程我们总是能指定一个为客户机,一个为服务器。在给定的每对进程通信会话中,发起通信(即在该话开始时与其他进程联系)的进程被标识为客户机,在会话开始时等待联系的进程是服务器

∙ \bullet   进程与计算机网络之间的接口:如上所述,多数应用程序是由通信进程对组成,每对中的两个进程相互发送报文。从一个进程向另一个进程发送报文必须通过下面的网络。进程通过一个称为套接字的软件接口在网络上发送和接受报文。我们现在举个例子,我们把进程看做是房子,而它的套接字相当于它的门。当进程想向位于另外一台主机上的另外一个进程发送报文时,它把报文推出门(套接字)。套接字是同一台主机内应用层与运输层之间的接口。

1.3 可供程序使用的运输服务

∙ \bullet   可靠数据传输:分组可能在网络的传输中丢失,但是我们有些需求是不能丢失的如果出现丢失的情况那将造成严重的后果,这就需要一种协议提供确保数据交付的服务,这种传输就被称为可靠数据传输。运输层的协议可以潜在的向应用程序提供一个重要的服务是进程到进程的可靠传输服务。当一个运输层协议不提供可靠数据传输时,由发送进程的数据可能到达不了接受的进程,这对于可容忍丢失的应用来说是可以接受的。

∙ \bullet   吞吐量:可用吞吐量就是发送进程能够向接收进程交付的比特率。那么这就可以激发另一种服务就是保证吞吐量的服务,这个服务也是考运输层上的协议实现的。具有吞吐量有要求的应用被称为带宽敏感的应用。弹性应用则与之相反它可以充分利用当前的吞吐量。

∙ \bullet   定时:当然有的应用对吞吐量有要求那么自然有的应用对时间有要求。
这就要保证时延在一定的范围内。

∙ \bullet   安全性:最后运输层协议能够提供的服务还能保证数据的安全性,

1.4 因特网提供的运输服务

1、TCP服务
TCP服务包括面向连接服务和可靠性数据传输。
∙ \bullet   面向连接服务:这个就是在应用层的报文数据开始流动之前,其客户机程序和服务器程序先相互交换运输层控制信息,为相互传输信息做准备。在这个所谓的“握手”过程之后,两个进程的套接字之间就会建立一个TCP连接。这个连接是全双工的,也就是说这个连接双方可以同时进行报文收发。当应用程序结束报文的发送时必须拆除改连接。

∙ \bullet   可靠性数据传输:进程通信可以通过TCP协议的服务,无差错、适当顺序交付发送的数据,没有字节的丢失和冗余。

∙ \bullet   TCP协议还有拥塞控制机制,当发送方和接收方之间的网络出现拥堵的时候,这个机制会及时的抑制发送进程。由于这个原因,TCP通常会试图限制每个TCP的连接,以此来达到到带宽平因的这种目的。但是对有最低带宽限制的某些实时应用来说这种机制就十分的不好,因此很多的实时的应用通常就是使用UDP协议进行服务。

2、UDP服务
UDP是一种不提供不必要服务的轻量级运输协议层,它仅提供最小服务。UDP是无连接的,因此在两个进程相互通信时是没有“握手” 的过程的。UDP协议提供的是不可靠数据传输服务,也就是说,进程通过UDP套接字发送报文时,接收方不一定能够收到。并且UDP没有拥塞控制机制,所以发送端可以以任何速率向其下层(网络层)传输数据。

3、因特网运输层协议所不提供的服务
前面我们说过TCP和UDP其实可以提供可靠数据传输,我们还可以通过SSL来提供安全服务。但是TCP和UDP其实是不提供保证吞吐量和时间的服务,总之现在因特网只能提供较为满意的服务,但是并不能作出保证。

4、进程寻址
我们为了识别和接收信息我们需要定义两种信息:(1)、该主机的名称或地址(2)、用来指定目的主机上接收进程的标识。在因特网中主机使用IP地址进行标识的。我们除了可以识别主机的IP地址外,发送程序必须还能识别运行在主机上的接收进程。。目的端口号就是服务于这个目的的。每一个网络应用程序都有一个特定的端口号,所以当研发者开发了新的应用程序,那么就必须为这个应用程序分配一个新的端口号。

1.5 应用层协议

应用层协议定义了运行在不同端系统上的应用程序进程如何相互传递报文。
(1)交换的报文类型,如请求报文和相应报文
(2)各种报文的语法,如报文中的各个字段及其详细描述
(3)字段的语义,即包含在字段中的信息的含义
(4)进程何时、如何发送报文及时对报文进行响应的规则
应用层的协议只是网络应用的一部分。

2.Web应用和HTTP协议

2.1 HTTP概况

Web的应用层的协议是超文本传输协议及HTTP协议。HTTP协议由两部分协议组成,一个是运行在客户端上的程序,一个是运行在服务器上的程序,它们两个运行在不同的端系统中,然后通过HTTP报文进行会话。HTTP协议定义了报文的格式以及客户机和服务器是如何进行报文交换的。

首先我们来看一下Web中常用的术语。Web页面是由对象组成的对象简单来说就是文件。多数的Web网页含有一个基本的HTML文件以及几个应用对象。在基本的HTML文件中通过对象的URL地址进行引用。每个URL地址由两不份组成:存放对象的服务器主机名和对象的路径名。Web服务器用于存数Web对象,每个对象有URL寻址。

HTTP使用的是TCP协议作为它的支撑运输层协议。HTTP
是一种无状态协议,它不会保存客户机的任何信息,所以即使你请求了一个某个文件两次,那么服务器就会给你发送两次相同的文件。

2.2 非持久连接和持久连接

研发者需要确定每一个请求/响应对是否通过一个单独的TCP连接,还是一系列请求通过一个相同的TCP进行连接。使用前一种方法的话我们就叫做非持久连接使用后一种方法的话我们就叫做非持久连接。持久连接一旦发送进程结束就立即断开TCP连接。
而非持久连接是如果通过一定的时间间隔仍未被使用的话,那HTTP服务器就会断开相应的连接。

RTT。

2.3 HTTP报文格式

典型得请求格式

HTTP请求报文的第一行叫做请求行,其后继行叫做首部行。
在这里插入图片描述
相应报文
在这里插入图片描述
在这里插入图片描述
HTTP响应报文通用格式
在这里插入图片描述

2.4 用户服务器的交互:cookie

我们先看一个cookie的例子
在这里插入图片描述
从上面的图片中我们能看到,cookie可以用于标识用户。 Web站点将产生一个唯一识别码放在set-cookie中:例如是1678,作为一个用户的ID,Web站点并不知道具体的某个人看了那些网页,但是它知道ID为1678的用户访问了哪些网页。这个时候Web将会通过1678访问过的网页推荐相关1678可能感兴趣的网页或者其它东西。

2.5 Web缓存器

Web缓存器也叫代理服务器,它可以代表初始Web服务器来满足网络实体发送的HTTP请求。Web缓存器既是服务器又是客户机。
在这里插入图片描述
在没有Web缓存器的时候我们的分布是如图2-12所示的,我们每次请求都要机构的局域网通过链路连接到公共的因特网,此时我们就会产生三个时延,局域网时延、接入时延、因特网时延我们现在的时延还是相对比较高的。
在这里插入图片描述

但是如果我们采用了Web缓存器的话,我们的Web缓存器是在局域网中,首先我们相对于上面的结构的话,我们只会产生一种时延那就是局域网时延,其余两个时延都没有了,而且局域网时延相对于上述的两个被省略掉的时延还是非常小的。所以大大提高了运行的效率。

3、文件传输协议:FTP

HTTP和FTP都是文件传输协议,并且有很多共同点。例如它们都运行在TCP上。它们也有很多的不同。其中最著名的区别就是FTP是用两个并行的TCP连接来传输文件,一个是控制连接、一个是数据连接。控制连接用于在两个主机之间传输控制信息,数据连接用于实际的问价传输。
FTP是怎么运作的呢?
在这里插入图片描述
上图表示的就是FTP用户代理和FTP服务器的一个交互过程。首先给用户提供远程主机的主机名使本地主机的FTP客户机建立一个到远程FTP服务器的TCP连接。然后该用户提供用户标识和口令作为FTP命令的一部分在该TCP连接上传输。一旦服务器向该用户授权的话,那么用户就可以向远程的文件系统拷贝存放在本地系统的文件。

4、因特网中的电子邮件

因特网中的电子邮件系统中有三个重要的组成部分:用户代理(邮件阅读器)、邮件服务器、简单邮件传输协议(SMTP)。
我们假设一个A给B发送邮件的过程,首先A想给B发送一个邮件时,A会先向A的服务器发送,然后A的服务器会和B的服务器建立一个TCP连接,然后B的服务器收到之后会在发送给B客户代理。A的服务器还要处理B服务器的问题,如果B的服务器并没有接收成功的话,A所发送的报文就会先在A中的报文队列中等待,每间隔一段时间会再发送一次,但是,如果长时间仍然没有发送成功的话,就会将次报文抛弃并通知A。

4.1 SMTP

SMTP也是网络中的一个基本的协议,它作用于发送服务器和接受服务器之间。
SMTP规定了报文的主题部分只能采用简单的7位ASCII码表示,在SMTP传送邮件之前必须先把二进制多媒体数据编码为ASCII码,并且在使用SMTP传输之后需要将相应的ASCII码还原为多媒体数据。

4.2 与HTTP的对比

这两种协议都是从一台主机到另一台主机传送文件:HTTP是从Web服务器想Web服务器向Web客户机(通常是浏览器)传送文件;SMTP是从一个邮件服务器向另一个邮件服务器传送文件。HTTP主要是一个拉协议,也就是用户机从服务器上拉去信息。特别是,TCP连接是由文件服务器的机器发起的。另一方面,SMTP是一个推协议,即发送邮件服务器把文件推向接收邮件服务器。

4.3 邮件访问协议

我们根据前面学习过的知识可以知道,给B发送邮件的话,首先应该是A的用户代理通过SMTP推给A的邮件服务器,然后A的邮件服务器在通过SMTP推给B的邮件服务器,那么B此时还是读不到A发送的邮件的,因为SMTP是一推个协议,B的用户代理是无法通过SMTP从B的邮件服务器中获得相应的报文的。那么此时怎么办呢,就需要我们这些小节要了解的邮件访问协议。
∙ \bullet   POP3:这个协议是一个非常简单的协议使用的链路层协议是TCP协议。POP3执行的时候只有3个阶段:特许、事务处理及更新。特许的阶段是,明文的形式发送用户名个口令以鉴别用户。事务处理的阶段是对报文做删除标记和取消删除标记,以及获取邮件的统计信息。更新阶段的话就是结束POP3会话。结束之后服务器会删除那些被标记为删除的报文。POP3有两种模式,一种是“下载并删除”,另一种是“下载并保留”。使用前一种方式的话,一般是不太好的,因为我们收邮件方的用户代理端可能是移动的,比如我们使用前一种方式,我们在公司的PC接收了邮件,但是我们晚上回到家时就不能再次接收同一个邮件了,因为已经被删除了。但是我们使用第二中方式的话我们就能在多个端进行邮件的访问。
∙ \bullet   IMAP:这个协议的话功能是非常的全面的,全面的话自然就相对于POP3来说的话就比较复杂。IMAP可以建立邮件文件夹,并将下载的文件放入该文件夹中,然后用户也可以删除报文,然后把报文在文件夹中移动。IMAP的另一个重要的特性就是它允许用户代理获取报文的组件。例如一个邮件非常的大,用户只想要其中的文字的部分不想要视屏的部分,IMAP可以支持这种操作。
∙ \bullet   基于Web的电子邮件:这种方式就是基于浏览器进行发送。它用的是HTTP协议。由A浏览器到A的邮件服务器用的是HTTP协议,从B的浏览器到B的服务器用的是HTTP,但是服务器之间还是用的SMT协议。

4、DNS因特网的目录服务

5.1 DNS提供的服务

我们在现实生活中有很多的方式去识别一个人,比如记住一个人的名字,计算机呢也有很多的方式去识别别的计算机,其中一种方式就是识别计算机的主机名,但是主机名不定长而且提供的信息有限,所以一般采用的是IP地址来识别。
DNS协议和HTTP、FTP和SMTP协议一样,DNS是应用层的协议,作用就是将主机名转换为它的IP地址。DNS是由一个分层的DNS服务器实现分布式数据库;一个允许主机查询分布式数据库的应用层协议。DNS运行在UDP之上。

DNS除了转换IP地址外还提供的服务是主机别名邮件服务器别名负载分配

5.2 DNS工作机理

DNS一简单的设计方式是一个DNS服务器,一个DNS服务器的话就会出现很多的问题,例如:单点的故障,如果该DNS服务器故障的话,那么整个因特网将随之瘫痪!;通信容量的问题单个的DNS服务器将不得不处理所有的DNS查询;还有就是传输距离的问题,因为只有一个服务器的,要是在北半球的话,那么南半球要是想要发出请求的话,那必须要从南半球发送请求,跨越半个地球;还有维护等等问题。

∙ \bullet   我们来看一下分布式。层次数据库:通过上面那种设计我们发现了很多的问题。由此优秀的计算机科研领域的人们设计了一种更合理的分布。那就是根DNS服务器顶级域服务器(TLD)权威DNS服务器
总结来说的话其实就是根DNS服务器中存的是要查询的主机名的顶级域名所在的顶级域名服务器的地址。然后顶级服务器存的是对应的权威DNS服务器的地址。权威地址存的就是DNS记录这些记录可以将主机名映射成相应的IP地址。

还有一种非常中要得东西就是本地DNS服务器,他可以帮助我们去转换地址。过程如下
在这里插入图片描述
请求主机发送一个请求给本地DNS服务器,然后根DNS服务器会返回一个对应顶级域名服务器的地址。然后本地DNS服务器会再给顶级域名服务器发送一个请求,然后顶级域名服务器会返回一个权威域名服务器的地址。然后本地DNS服务器会给权威服务器发送一个请求,权威服务器返回一个相应的IP地址。本地DNS服务器会把IP地址返回给请求主机。

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

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

相关文章

数字医疗算法应用创新大赛-食品与疾病关系预测算法赛道top5方案分享

一、比赛地址和背景 1.1 比赛地址 比赛地址 1.2 数据说明及任务 本次算法赛将提供超过 23.5W 的食物、疾病对应关系及其量化得分,其中食物特征超过 200 个,疾病特征由 3 种不同的方式抽取,累积超过 4000 个特征信息。初赛为 0、1 二分类预…

递归递推练习题

1.用递归的方法123…N的值(in:5,out:15) 2.输出斐波那契数列的第N项,0,1,1,2,3,5,8,13…(in:3,out:1) 3.求n!(in:5,out:120)n!123……

STM32启动/下载模式

启动模式 主闪存存储器区存放用户设计的代码,代码烧录到这里,一般情况在正常工作时需要把STM32设置为从这里启动。 系统存储器区用来实现ISP功能的。 内嵌SRAM区用来实现调试器调试功能的。 ISP ISP一般由PC机通过串口把bin/hex文件直接烧写到单片机内…

java并发编程之美第五章读书笔记

java并发包中并发List源码剖析 介绍 CopyOnWriteArrayList 线程安全的ArrayList,对其进行的修改操作都是在底层的一个复制的数组(快照)进行的,也就是写时复制策略 类图 每一个对象里面有一个array数组进行存放具体的元素,ReentrantLock独占锁对象用来保证同时只有一个线程对…

Maven中optional标签详解

这一篇文章应该是全网讲解optional最细致的,因为我都是拿我自己的试验来证明,从试验当中也发现了很多出乎意外的知识!感兴趣的跟着小编一块来学习呀! 目录 一、前言二、依赖传递代码演示三、是否会影响父子工程之间的依赖继承呢&a…

精致女孩必备的6款APP,内外兼修,提升气质

自立自强、敢于追求、内外兼修,这样的女孩不管在哪个时代都是非常有魅力的! 在我看来,自律、上进、情商高、会打扮、会赚钱、独立、落落大方,这才是精致女孩该有的样子。 不墨迹,速速揭开6款宝藏APP的面纱&#xff0…

石头科技2022年营收实现双位数增长,以技术实力打响创新价值战

近日,石头科技披露了2022年度财务报告,报告显示,在在较大内外部压力下,石头科技2022年营收依然实现双位数增长,且境内外销售收入平稳增长。 该公司在近年来不断完善其产品矩阵,目前已推出手持无线吸尘、商…

数据结构 (入门必看)

一、 预备知识 (一)数据结构前言 1、学习C语言是如何写程序,学习数据结构如何简洁高效的写程序 2、遇到一个实际问题,需要写程序,需要解决两个方面的问题 1)如何表达数据之间的逻辑规律以及如何将数据存储到计算机中 数据结构…

多数据源 使用 flyWay 进行数据库管理

文章目录 前言多数据源 使用 flyWay 进行数据库管理1. 环境2. flyway版本 与 MySQL 版本 对应关系3. flyway 脚本文件命名方式4. flyway工作流程5. 知识点补充6. 集成的时候常见错误6.1. user_variables_by_thread没有访问权限6.2. MySQL不支持Flyway社区版,只支持F…

68元工业级双核A7,全新T113核心板震撼上市!

万象奥科全新T113核心板震撼上市,仅68元、工业级品质、双核A7处理器、外设丰富,诠释极致性价比! 参数速递 1.全志T113工业级处理器,主频1.2GHz 2.双核Cortex-A7玄铁C906 RISC-V HiFi4 DSP异构多核 3.内存128MB/256MB/512MB&a…

【Kafka】概述与集群部署

文章目录 Kafka概述定义应用场景缓冲/削峰解耦异步通信 应用模式点对点模式发布/订阅模式 基础架构 Kafka集群部署集群规划下载解压修改配置文件分发安装包hadoop103、hadoop104修改配置文件配置环境变量启动集群先启动Zookeeper集群然后启动Kafka 关闭集群 集群启停脚本脚本编…

QT自学笔记2:使用介绍(函数)

一、 setAttribute(按F1)—>void QWidget::setAttribute(Qt::WidgetAttribute attribute, bool on true) —>Qt::WidgetAttribute attribute(有一个属性) ----> p->setAttribute(Qt::WA_DeleteOnClose); MainWind…

眼见为实,来瞧瞧MySQL中的隐藏列!

在介绍mysql的多版本并发控制MVCC的过程中,我们提到过mysql中存在一些隐藏列,例如行标识、事务ID、回滚指针等,不知道大家是否和我一样好奇过,要怎样才能实际地看到这些隐藏列的值呢? 本文我们就来重点讨论一下诸多隐…

ThingsBoard集群部署之k8s

1、概述 今天终于有时间去搞这个啦,拖了很久了,一直没时间,因为我本地没有那么多机器资源,开虚拟机不够,如果租用阿里云服务器,需要有充值的时间,因为这个费用是按小时付费,需要有连贯的时间来搞才行,今天恰好有时间,就开始搞了,弄成功搞出来了,特地写博客记录下来…

Linux基本指令【Linux操作系统】

本文将开启Linux操作系统学习新篇章,欢迎与博主一起交流学习。 目录 一、ls指令 二、pwd指令 三、mkdir与rm指令 四、cd指令 五、touch指令 六、man指令(重要) 七、cp指令(重要) 八、mv指令(重要&…

keepalived如何手动切换主备

概述 主备部署中使用keepalived可以很方便的实现,安装维护简单,功能稳定。 最近在使用过程中有小的发现,记录一下。 环境 CentOS Linux release 7.9.2009 (Core) keepalived.x86_64 1.3.5-19.el7 安装配置 centos7自带的keepalived版本…

提升自我数据分析能力的根本,是方法论!

很多人问,我是财务,能转行业做BI吗?我该学些什么?该掌握哪些技能?该如何学习?我是学生,在校期间专业不扎实,该怎么办?我是小白,还能学会数据分析吗&#xff1…

第二届“强国青年科学家”获奖者均有海外经历

今天是五四青年节,为了弘扬五四精神,知识人网小编本期专门介绍10名第二届“强国青年科学家”获奖者。特别提示:这些科学家均具有海外留学或研究经历。 五四精神的核心内容为“爱国、进步、民主、科学”。 进一步弘扬科学精神,营造…

找不到vcruntime140.dll,无法继续执行代码,解决方法分享

找不到vcruntime140.dll,无法继续执行代码?vcruntime140.dll 是 Visual Studio 2015 运行库的 Dynamic Link Library 文件,许多 Windows 应用程序需要它才能正常运行。当你尝试安装或运行某些应用程序时,有时可能会遇到找不到 vcruntime140.d…

电压放大器的实际应用有哪些方面

电压放大器是一种电子设备,用于增加信号的电压,使得信号具备更大的电压和功率去驱动负载,或者是更容易被检测、传输和处理。电压放大器的基本原理是将输入信号增加一个固定的电压值,以使得输出信号的幅值与输入信号的幅值相同或更…