应用层位于运输层之上,主要功能为通过应用进程间的交互来完成特定网络应用。
文章目录
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: [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) 传送给使用者。
万维网以客户/服务器方式工作,用户使用的浏览器就是万维网客户程序,万维网文档所驻留的主机运行服务器程序。
用户使用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:[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.
说明:
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地址或报错,然后把这个结果返回给发起查询的主机