前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >应用层

应用层

作者头像
20岁爱吃必胜客
发布2022-11-12 17:47:53
1.4K0
发布2022-11-12 17:47:53
举报
文章被收录于专栏:进步集

应用层位于运输层之上,主要功能为通过应用进程间的交互来完成特定网络应用。

文章目录 1、应用层概述 2、网络应用模型 2.1 C/S模型 2.2 P2P模型 3、DNS系统 3.1 域名 3.2 域名服务器 3.3 域名解析过程 4、文件传输协议FTP 4.1 FTP工作原理 5、电子邮件 5.1 电子邮件系统的组成结构 5.2 SMTP协议 5.3 POP3协议、IMAP协议 6、万维网和HTTP协议 6.1 万维网概述 6.2 超文本传输协议HTTP

1、应用层概述

应用层对应用程序的通信提供服务。

应用层的功能:

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

2、网络应用模型

2.1 C/S模型 2.2 P2P模型

4.1 FTP工作原理

用户首先要登录 ftp地址+用户名&密码 或匿名登陆

控制连接始终保持,数据连接不是始终保持

是否使用TCP 20端口建立数据连接与传输模式有关

主动方式使用TCP 20端口

被动方式由服务器和客户端自行协商决定(端口>1024)

FTP传输模式:

文本模式: ASCII模式, 以文本序列传输数据; 二进制模式: Binary模式, 以二进制序列传输数据。

5、电子邮件 5

.1 电子邮件系统的组成结构

在这里插入图片描述

1、SMTP介绍 基本概念 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件 的规则,由它来控制信件的中转方式。SMTP协议属于TCP/IP协议簇,它帮助每台计算机在发送或中转信件 时找到下一个目的地。通过SMTP协议所指定的服务器,就可以把E-mail寄到收信人的服务器上了,整个过程 只要几分钟。SMTP服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转发出的电子邮件。SMTP 是一种TCP协议支持的提供可靠且有效电子邮件传输的应用层协议。

工作过程 首先,运行在发送端邮件服务器主机上的SMTP客户,发起建立一个到运行在接收端邮件服务器主机上的 SMTP服务器端口号25之间的TCP连接。如果接收邮件服务器当前不在工作,SMTP客户就等待一段时间后再 尝试建立该连接。

5.2 SMTP协议

SMTP规定了在两个相互通信的SMTP进程之间应如何交换信息。 负责发送邮件的SMTP进程就是SMTP客户,负责接收邮件的进程就是SMTP服务器。 SMTP规定了14条命令(几个字母)和21种应答信息(三位数字代码+简单文字说明)。 TCP连接、端口号25、C/S SMTP通信的三个阶段

连接建立:

每隔一段时间对服务器里的邮件缓存进行扫描,如果有要发送的文件,使用SMTP协议与接收方服务器建立端口号为25的TCP连接 接收方发送 “220 Service ready"表明连接已经建立好了 发送方会发送一个"HELLO"命令,并附上发送方的主机名 接收方若有能力接收邮件,回答“250 OK”,否则,回答“421 Service not available 邮件发送(A表示发送方,B表示接收方):

A: MAIL FROM: wangdao@163.com B: 250 OK/B:451 (452或500…) SMTP服务器是否已经准备好接收邮件 A: RCPT TO:mooc@163.com 可以有多个RCPT命令 B: 250 OK /B: 550 No such user here SMTP服务器确定是否有这个用户 A: DATA 要开始传输邮件的内容了 B: 354 start mail input; end with . SMTP服务器同意传输 A: Date… 开始传输邮件内容 B: 250 OK 接收结束 连接释放:连接释放邮件发完, SMTP客户发送QUIT命令,SMTP服务器返回“221” ,表示同意释放TCP连接。

SMTP的缺点: SMTP不能传送可执行文件或者其他二进制对象。 SMTP仅限于传送7位ASCII码,不能传送其他非英语国家的文字。 SMTP服务器会拒绝超过一定长度的邮件。 通过因特网邮件扩充(MIME):使电子邮件系统可以支持声音、图像、视频、多种国家语言等等。

5.3 POP3协议、IMAP协议 ​ POP3使用TCP连接,端口号110,C/S模式

​ POP3工作方式:下载并保留、下载并删除

​ IMAP协议:IMAP协议比POP协议复杂。当用户PC上的IMAP客户程序打开IMAP服务器的邮箱时,用户可以看到邮箱的首部,若用户需要打开某个邮件,该邮件才上传到用户的计算机上。

​ 基于万维网的电子邮件

6、万维网和HTTP协议 6.1 万维网概述 ​  万维网www (World Wide Web)是一个大规模的、联机式的信息储藏所/资料空间,是无数个网络站点和网页的集合。

​ 统一资源定位符URL:用来唯一标识每一个资源

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

​ URL不区分大小写

​ 用户通过点击超链接获取资源,这些资源通过超文本传输协议(HTTP) 传送给使用者。

​  万维网以客户/服务器方式工作,用户使用的浏览器就是万维网客户程序,万维网文档所驻留的主机运行服务器程序

6.2 超文本传输协议HTTP

​ 用户使用URL访问资源的具体过程:

浏览器分析URL 浏览器向DNS请求解析IP地址 DNS解析出IP地址 浏览器与服务器建立TCP连接 浏览器发出取文件命令 服务器响应 释放TCP连接 浏览器显示 HTTP协议的特点:

HTTP协议是无状态的。 Cookie是存储在用户主机中的文本文件,记录一段时间内某用户(使用识别码识别,如“123456”)的访问记录。 HTTP采用TCP作为运输层协议,但HTTP协议本身是无连接的(通信双方在交换HTTP报文之前不需要先建立HTTP连接) HTTP的连接方式:持久连接(非流水线、流水线)和非持久连接 HTTP的连接方式

​ 非持久连接

​ 持久连接

HTTP的报文格式

​ HTTP报文分为请求报文和响应报文

​ HTTP报文是面向文本的,因此在报文中的每一个字段都是一些ASCII码串。

状态码

1xx表示通知信息的,如请求收到了或正在处理。 2xx表示成功,如接受或知道了。 3xx表示重定向,如要完成请求还必须采取进一步的行动。 4xx表示客户的差错,如请求中有错误的语法或不能完成。 5xx表示服务器的差错,如服务器失效无法完成请求。 ———————————————— 版权声明:本文为CSDN博主「LFuser.」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_41596568/article/details/105855644

**

SMTP简单通讯过程

**

通过telnet程序来测试一个SMTP服务器,并进行简单说明,如下所示:

$telnet smtp.example.com 25 < ------------------------- 进行了tcp连接

220 smtp.example.com ESMTP Service(Lotus Domino Release 8.5.3FP6) ready a

t Thu, 23 Jul 2015 20:48:17 +0800

HELO zjf <------------------------- HELO命令标记自己的身份

250 smtp.example.com Hello zjf([10.10.34.22]), pleased to meet you

auth login <------------------------- 进行身份认证

334 VXNlcm5hbWU6

base64加密后的用户名

334 UGFzc3dvcmQ6

base64加密后的密码

235 Authentication successful

mail from:xxx@example.com < ------------------------- 说明发件人邮箱

250 xxx@example.com… SenderOK

rcpt to:yyy@example.com < ------------------------- (确认接收方是否已做好准备,防止邮件发送了,却发现无此人,或空间不足等造成资源浪费)

250 yyy@example.com…Recipient OK

DATA <------------------------- 表示开始传送邮件的内容

354 Please start mail input.

<邮件内容>

. <------------------------- 两个回车换行中间用一个点隔开表示邮件内容结束

250 Mail queued for delivery. <------------------------- 邮件放入了发送服务器队列

quit <------------------------- 退出

221 Closing connection. Good bye.

说明:

1、25端口是SMTP的标准服务端口,数据不经过加密处理,以明文方式发送。

当然也支持加密方式SSL/TLS,另有些发送邮箱服务器支持STARTTLS协议。下图是他们之间的区别(并没有详细描述中间的交互过程)

需要注意的是:

1) 不加密默认使用25端口;如明确使用SSL/TLS加密,则使用465端口

2) 在启用STARTTLS协议的时候,使用25端口较好,虽然587主要是针对STARTTLS协议的,但支持该协议的并不一定开放该端口,如网易邮箱。

3) STARTTLS协议不是说只能用TLS加密,也可以使用SSL加密。

————————————————

DNS协议

我们之前已经了解过ARP协议。 如果说ARP协议是用来将IP地址转换为MAC地址,那么DNS协议则是用来将域名转换为IP地址(也可以将IP地址转换为相应的域名地址)。 我们都知道,TCP/IP中使用的是IP地址和端口号来确定网络上某一台主机上的某一个程序,不免有人有疑问,为什么不用域名来直接进行通信呢?

  1. 因为IP地址是固定长度的,IPv4是32位,IPv6是128位,而域名是变长的,不便于计算机处理。
  2. IP地址对于用户来说不方便记忆,但域名便于用户使用,例如www.baidu.com这是百度的域名。 总结一点就是IP地址是面向主机的,而域名则是面向用户的。 hosts文件 域名和IP的对应关系保存在一个叫hosts文件中。 最初,通过互联网信息中心来管理这个文件,如果有一个新的计算机想接入网络,或者某个计算IP变更都需要到信息中心申请变更hosts文件。其他计算机也需要定期更新,才能上网。 但是这样太麻烦了,就出现了DNS系统。

DNS系统 一个组织的系统管理机构, 维护系统内的每个主机的IP和主机名的对应关系 如果新计算机接入网络,将这个信息注册到数据库中 用户输入域名的时候,会自动查询DNS服务器,由DNS服务器检索数据库,得到对应的IP地址 我们可以通过命令查看自己的hosts文件:

在域名解析的过程中仍然会优先查找hosts文件的内容。 DNS理论知识 一、DNS域名结构 1、域名的层次结构 域名系统必须要保持唯一性。 为了达到唯一性的目的,因特网在命名的时候采用了层次结构的命名方法:

  1. 每一个域名(本文只讨论英文域名)都是一个标号序列(labels),用字母(A-Z,a-z,大小写等价)、数字(0-9)和连接符(-)组成
  2. 标号序列总长度不能超过255个字符,它由点号分割成一个个的标号(label)
  3. 每个标号应该在63个字符之内,每个标号都可以看成一个层次的域名。
  4. 级别最低的域名写在左边,级别最高的域名写在右边。 域名服务主要是基于UDP实现的,服务器的端口号为53。

三、域名解析过程 域名解析总体可分为一下过程: (1) 输入域名后, 先查找自己主机对应的域名服务器,域名服务器先查找自己的数据库中的数据. (2) 如果没有, 就向上级域名服务器进行查找, 依次类推 (3) 最多回溯到根域名服务器, 肯定能找到这个域名的IP地址 (4) 域名服务器自身也会进行一些缓存, 把曾经访问过的域名和对应的IP地址缓存起来, 可以加速查找过程 具体可描述如下:

  1. 主机先向本地域名服务器进行递归查询
  2. 本地域名服务器采用迭代查询,向一个根域名服务器进行查询
  3. 根域名服务器告诉本地域名服务器,下一次应该查询的顶级域名服务器的IP地址
  4. 本地域名服务器向顶级域名服务器进行查询
  5. 顶级域名服务器告诉本地域名服务器,下一步查询权限服务器的IP地址
  6. 本地域名服务器向权限服务器进行查询
  7. 权限服务器告诉本地域名服务器所查询的主机的IP地址
  8. 本地域名服务器最后把查询结果告诉主机 如图所示:

上文我们提出了两个概念:递归查询和迭代查询

(1)递归查询:本机向本地域名服务器发出一次查询请求,就静待最终的结果。如果本地域名服务器无法解析,自己会以DNS客户机的身份向其它域名服务器查询,直到得到最终的IP地址告诉本机 (2)迭代查询:本地域名服务 一、主机向本地域名服务器的查询一般都是采用递归查询。

代码语言:javascript
复制
    所谓递归查询就是:如果主机所询问的本地域名服务器不知道被查询的域名的IP地址,那么本地域名服务器就以DNS客户的身份,

    向其它根域名服务器继续发出查询请求报文(即替主机继续查询),而不是让主机自己进行下一步查询。

    因此,递归查询返回的查询结果或者是所要查询的IP地址,或者是报错,表示无法查询到所需的IP地址。

二、本地域名服务器向根域名服务器的查询

的迭代查询。

代码语言:javascript
复制
   迭代查询的特点:当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,**要么给出所要查询的IP地址,要么告诉本地服务器:“你下一步应当向哪一个域名服务器进行查询”。**

    然后让本地服务器进行后续的查询。**根域名服务器通常是把自己知道的顶级域名服务器的IP地址告诉本地域名服务器,让本地域名服务器再向顶级域名服务器查询。**

    **顶级域名服务器在收到本地域名服务器的查询请求后,要么给出所要查询的IP地址,要么告诉本地服务器下一步应当向哪一个权限域名服务器进行查询。**

    最后,知道了所要解析的IP地址或报错,然后把这个结果返回给发起查询的主机
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-06-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、应用层概述
  • 2、网络应用模型
  • 5、电子邮件 5
  • 5.2 SMTP协议
  • ​ 基于万维网的电子邮件
  • 6.2 超文本传输协议HTTP
  • SMTP简单通讯过程
  • DNS协议
  • 上文我们提出了两个概念:递归查询和迭代查询
  • 的迭代查询。
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档