应用层

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

文章目录
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张图片

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: [email protected]
B: 250 OK/B:451 (452或500…) SMTP服务器是否已经准备好接收邮件
A: RCPT TO:[email protected] 可以有多个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 接收结束
1
2
3
4
5
6
7
8
连接释放:连接释放邮件发完, 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:[email protected] < ------------------------- 说明发件人邮箱

250 [email protected]… SenderOK

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

250 [email protected]…Recipient OK

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

354 Please start mail input.

<邮件内容>

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

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

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

221 Closing connection. Good bye.

应用层_第2张图片

说明:

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。
    应用层_第3张图片

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

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

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

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

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

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

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

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

的迭代查询。

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

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

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

    最后,知道了所要解析的IP地址或报错,然后把这个结果返回给发起查询的主机

应用层_第5张图片

应用层_第6张图片

你可能感兴趣的:(计算机网络原理)