应用层位于运输层之上,主要功能为通过应用进程间的交互来完成特定网络应用。
文章目录 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
应用层对应用程序的通信提供服务。
应用层的功能:
文件传输、访问和管理(FTP) 电子邮件(SMTP、POP3) 虚拟终端(HTTP) 查询服务和远程作业登录
2.1 C/S模型 2.2 P2P模型
4.1 FTP工作原理
用户首先要登录 ftp地址+用户名&密码 或匿名登陆
控制连接始终保持,数据连接不是始终保持
是否使用TCP 20端口建立数据连接与传输模式有关
主动方式使用TCP 20端口
被动方式由服务器和客户端自行协商决定(端口>1024)
FTP传输模式:
文本模式: ASCII模式, 以文本序列传输数据; 二进制模式: Binary模式, 以二进制序列传输数据。
.1 电子邮件系统的组成结构
在这里插入图片描述
1、SMTP介绍 基本概念 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件 的规则,由它来控制信件的中转方式。SMTP协议属于TCP/IP协议簇,它帮助每台计算机在发送或中转信件 时找到下一个目的地。通过SMTP协议所指定的服务器,就可以把E-mail寄到收信人的服务器上了,整个过程 只要几分钟。SMTP服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转发出的电子邮件。SMTP 是一种TCP协议支持的提供可靠且有效电子邮件传输的应用层协议。
工作过程 首先,运行在发送端邮件服务器主机上的SMTP客户,发起建立一个到运行在接收端邮件服务器主机上的 SMTP服务器端口号25之间的TCP连接。如果接收邮件服务器当前不在工作,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) 传送给使用者。
万维网以客户/服务器方式工作,用户使用的浏览器就是万维网客户程序,万维网文档所驻留的主机运行服务器程序。
用户使用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
**
**
通过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加密。
————————————————
我们之前已经了解过ARP协议。 如果说ARP协议是用来将IP地址转换为MAC地址,那么DNS协议则是用来将域名转换为IP地址(也可以将IP地址转换为相应的域名地址)。 我们都知道,TCP/IP中使用的是IP地址和端口号来确定网络上某一台主机上的某一个程序,不免有人有疑问,为什么不用域名来直接进行通信呢?
DNS系统 一个组织的系统管理机构, 维护系统内的每个主机的IP和主机名的对应关系 如果新计算机接入网络,将这个信息注册到数据库中 用户输入域名的时候,会自动查询DNS服务器,由DNS服务器检索数据库,得到对应的IP地址 我们可以通过命令查看自己的hosts文件:
在域名解析的过程中仍然会优先查找hosts文件的内容。 DNS理论知识 一、DNS域名结构 1、域名的层次结构 域名系统必须要保持唯一性。 为了达到唯一性的目的,因特网在命名的时候采用了层次结构的命名方法:
三、域名解析过程 域名解析总体可分为一下过程: (1) 输入域名后, 先查找自己主机对应的域名服务器,域名服务器先查找自己的数据库中的数据. (2) 如果没有, 就向上级域名服务器进行查找, 依次类推 (3) 最多回溯到根域名服务器, 肯定能找到这个域名的IP地址 (4) 域名服务器自身也会进行一些缓存, 把曾经访问过的域名和对应的IP地址缓存起来, 可以加速查找过程 具体可描述如下:
(1)递归查询:本机向本地域名服务器发出一次查询请求,就静待最终的结果。如果本地域名服务器无法解析,自己会以DNS客户机的身份向其它域名服务器查询,直到得到最终的IP地址告诉本机 (2)迭代查询:本地域名服务 一、主机向本地域名服务器的查询一般都是采用递归查询。
所谓递归查询就是:如果主机所询问的本地域名服务器不知道被查询的域名的IP地址,那么本地域名服务器就以DNS客户的身份,
向其它根域名服务器继续发出查询请求报文(即替主机继续查询),而不是让主机自己进行下一步查询。
因此,递归查询返回的查询结果或者是所要查询的IP地址,或者是报错,表示无法查询到所需的IP地址。
二、本地域名服务器向根域名服务器的查询
迭代查询的特点:当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,**要么给出所要查询的IP地址,要么告诉本地服务器:“你下一步应当向哪一个域名服务器进行查询”。**
然后让本地服务器进行后续的查询。**根域名服务器通常是把自己知道的顶级域名服务器的IP地址告诉本地域名服务器,让本地域名服务器再向顶级域名服务器查询。**
**顶级域名服务器在收到本地域名服务器的查询请求后,要么给出所要查询的IP地址,要么告诉本地服务器下一步应当向哪一个权限域名服务器进行查询。**
最后,知道了所要解析的IP地址或报错,然后把这个结果返回给发起查询的主机