当前位置:网站首页 > 技术博客 > 正文

应用层协议主要有哪些?



这里总结了三种常见的应用层协议:HTTP、FTP、SMTP。供自己复习使用,也供大家参考!

一、HTTP协议

1、HTTP简介

—超文本传输协议(Hypertext transfer protocol)。是一种详细规定了浏览器和万维网(WWW = World Wide Web)服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。

—HTTP协议作为TCP/IP模型中应用层的协议也不例外。HTTP协议通常承载于TCP协议之上,有时也承载于TLS或SSL协议层之上,这个时候,就成了我们常说的HTTPS。如下图:

—HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。HTTP是一个无状态的协议。

—HTTP默认的端口号为80,HTTPS的端口号为443;

—浏览网页是HTTP的主要应用,但是这并不代表HTTP就只能应用于网页的浏览。HTTP是一种协议,只要通信的双方都遵守这个协议,HTTP就能有用武之地。比如常用的,迅雷这些软件,都会使用HTTP协议(还包括其他的协议)。

2、HTTP的特点

—简单快速:客户像服务器请求服务时,只需传送请求方法和路径。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。

—灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。

—HTTP 0.9和1.0使用非持续连接:限制每次连接只处理一个请求,服务器处理完客户的请求,并收到客户的应答后,即断开连接。HTTP 1.1使用持续连接:不必为每个web对象创建一个新的连接,一个连接可以传送多个对象,采用这种方式可以节省传输时间。

—无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

—支持B/S及C/S模式。即浏览器/服务器模式和客户端/服务端模式。

3、HTTP工作流程

一次HTTP操作称为一个事务,其工作过程可分为四步:

—首先客户机与服务器需要建立连接。只要单击某个超级链接,HTTP的工作开始。

—建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。

—服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。

—客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。

如果在以上过程中的某一步出现错误,那么产生错误的信息将返回到客户端,有显示屏输出。对于用户来说,这些过程是由HTTP自己完成的,用户只要用鼠标点击,等待信息显示就可以了。

4、HTTP请求消息Request

客户端发送一个HTTP请求到服务器的请求消息包括以下格式:

请求行、请求头部、空行和请求数据四个部分组成。

(1)GET请求

第一部分:请求行,用来说明请求类型,要访问的资源以及所使用的HTTP版本.

这个例子的请求数据为空。

POST请求

第一部分:请求行,第一行明了是post请求,以及http1.1版本。
第二部分:请求头部,第二行至第六行。
第三部分:空行,第七行的空行。

第四部分:请求数据,第八行。

5、HTTP响应消息Reponse

一般情况下,服务器接收并处理客户端发过来的请求后会返回一个HTTP的响应消息。

HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。

第一部分:状态行,由HTTP协议版本号, 状态码, 状态消息 三部分组成。

第二行和第三行和第四行为消息报头,
Date:生成响应的日期和时间;Content-Type:指定了MIME类型的HTML(text/html),编码类型是ISO-8859-1
第三部分:空行,消息报头后面的空行是必须的
第四部分:响应正文,服务器返回给客户端的文本信息。

空行后面的html部分为响应正文。

6、HTTP状态码

状态代码有三位数字组成,第一个数字定义了响应的类别,共分五种类别:

1xx:指示信息–表示请求已接收,继续处理

2xx:成功–表示请求已被成功接收、理解、接受

3xx:重定向–要完成请求必须进行更进一步的操作

4xx:客户端错误–请求有语法错误或请求无法实现

5xx:服务器端错误–服务器未能实现合法的请求

常见状态码:

7、HTTP请求方法

HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。

8、HTTP工作原理

HTTP协议定义Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL、协议版本、请求头部和请求数据。服务器以一个状态行作为响应,响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据。

以下是 HTTP 请求/响应的步骤:

1、客户端连接到Web服务器

一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接。

2、发送HTTP请求

通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成。

3、服务器接受请求并返回HTTP响应

Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据4部分组成。

4、释放连接TCP连接

若connection 模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;

5、客户端浏览器解析HTML内容

客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。

二、FTP协议

 

下图给出了服务器向客户所在数据连接端发布主动打开时的连接状态。服务器的端点是端口20。

 

三、SMTP协议

1、介绍

 

的规则,由它来控制信件的中转方式。SMTP协议属于TCP/IP协议簇,它帮助每台计算机在发送或中转信件
时找到下一个目的地。通过SMTP协议所指定的服务器,就可以把E-mail寄到收信人的服务器上了,整个过程
只要几分钟。SMTP服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转发出的电子邮件。SMTP

是一种TCP协议支持的提供可靠且有效电子邮件传输的应用层协议。

 

SMTP服务器端口号25之间的TCP连接。如果接收邮件服务器当前不在工作,SMTP客户就等待一段时间后再

尝试建立该连接。

2、SMTP命令和应答

 

3、邮件报文的封装和报文形式

SMTP协议可以将互联网邮件报文封装在邮件对象中。SMTP协议的邮件对象由两个部分组成:信封和内容。

信封其实是一种SMTP命令;

邮件报文是邮件对象中的内容,由首部和主体两个部分。

对报文格式的定义:

—所有报文都是由ASCII码组成;

—由报文行组成,各行之间用回车(CR)、换行(LF)符分隔

——报文的长度不能超过998个字符

——报文行的长度≤78个字符之内(不包括回车换行符)

——报文中可包括多个首部字段和首部内容

——报文可包括一个主体,主体必须用一个空行与其首部分隔

——除非需要使用回车与换行符,否则报文中不使用回车与换行符

4、邮件报文的传送过程

连接建立

SMTP客户和SMTP服务器首先要建立TCP连接。

  1. 从客户端使用熟知端口号25建立与服务器的TCP连接,SMTP服务器向该客户送回应答码220,并且还为客户端提供了服务器的域名
  2. 客户端收到应答码后,发送HELO命令,启动客户端和服务器之间的SMTP会话。该客户端发送的HELO用来向服务器提供客户端的标识信息
  3. 服务器端回应应答码250,通知客户端:请求建立邮件服务会话已经实现

报文发送

在SMTP客户与SMTP服务器之间的连接建立之后,发信的用户就可以与一个或多个收信人交换邮件报文了。

  1. 客户用“MAIL FROM”向服务器报告发信人的邮箱与域名
  2. 服务器向客户回应应答码“250”,代表请求命令完成
  3. 客户用“RCPT TO”命令向服务器报告收信人的邮箱与域名
  4. 服务器向客户回应应答码“250”,代表请求命令完成
  5. 客户用“DTAT”命令对报文的传送进行初始化
  6. 服务器回应“354”,表示可以进行邮件输入了
  7. 客户用连续的行向服务器传送报文的内容,每行以两字符的行结束标识(CR与LF)终止。报文以只有一个“.”的行结束
  8. 服务器向客户回应应答码“250”,代表请求命令完成

连接终止

报文发送完毕后终止本次SMTP会话。

—客户端发送QUIT命令;

——服务器收到命令后,回应应答码“221”,并结束会话。

模拟上述三个步骤:

建立连接

传输报文

终止连接

版权声明


相关文章:

  • win10突然什么软件都打不开2025-01-18 11:30:01
  • 数据库左连接和右连接2025-01-18 11:30:01
  • java图形界面设计工具2025-01-18 11:30:01
  • ubuntu1804中文输入法安装2025-01-18 11:30:01
  • 串口助手是干什么的2025-01-18 11:30:01
  • libxml2使用2025-01-18 11:30:01
  • redis教程常用命令2025-01-18 11:30:01
  • 梯度提升树分类算法2025-01-18 11:30:01
  • stream.of方法2025-01-18 11:30:01
  • java map集合排序2025-01-18 11:30:01