1. HTTP协议和HTTPS协议

1. HTTP协议和HTTPS协议

一. HTTP协议

 

1. 定义

HTTP(Hypertext Transfer Protocol,超文本传输协议)是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)的超文本传输协议。

HTTP协议工作于客户端-服务端架构上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后,向客户端发送响应信息。

 

1. HTTP协议和HTTPS协议

 

HTTP是一种不保存状态,即无状态(stateless)协议。HTTP协议自身不对请求和响应之间的通信状态进行保存。也就是说在HTTP这个级别,协议对于发送过的请求或响应都不做持久化处理。

 

1. HTTP协议和HTTPS协议

 

2. 运行流程

(1)客户端连接到Web服务器;

(2)客户端向服务器发送HTTP请求;

(3)服务器接受请求,并根据请求返回相应的文件作为应答;

(4)客户端与服务器关闭连接;

(5)客户端浏览器解析HTML内容。

 

3. 请求格式

客户端发送一个HTTP请求到服务器的请求消息包括以下格式:请求行(request line)、请求头部(header)、空行和请求数据四个部分组成

(1)请求行:用来说明请求类型,要访问的资源以及所使用的HTTP版本;

(2)请求头部:紧接着请求行(即第一行)之后的部分,用来说明服务器要使用的附加信息;

(3)空行:请求头部后面的空行是必须的;

(4)请求数据:也叫主体,可以添加任意的其他数据。

 

4. 响应格式

一般情况下,服务器接收并处理客户端发过来的请求后会返回一个HTTP的响应消息,HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。

(1)状态行:由HTTP协议版本号, 状态码, 状态消息 三部分组成;

(2)消息报头:用来说明客户端要使用的一些附加信息;

(3)空行:消息报头后面的空行是必须的;

(4)响应正文:服务器返回给客户端的文本信息。

 

5. 状态码

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

  • 1xx:指示信息--表示请求已接收,继续处理。
  • 2xx:成功--表示请求已被成功接收、理解、接受。
  • 3xx:重定向--要完成请求必须进行更进一步的操作。
  • 4xx:客户端错误--请求有语法错误或请求无法实现。
  • 5xx:服务器端错误--服务器未能实现合法的请求。

 

常见的状态码:

  • 200 OK:客户端请求成功。
  • 302 Moved temporarily(redirect):重定向。
  • 304 Not Modified:对客户端js/css/image采取缓存机制,再次请求时若页面数据不变,返回错误。
  • 400 Bad Request:客户端请求有语法错误,不能被服务器所理解。
  • 401 Unauthorized:请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用。
  • 403 Forbidden:服务器收到请求,但是拒绝提供服务。
  • 404 Not Found:请求资源不存在,eg:输入了错误的URL。
  • 500 Internal Server Error:服务器发生不可预期的错误。
  • 503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常。

 

6. 请求方式

HTTP/1.1协议中共定义了八种方法(也叫“动作”)来以不同方式操作指定的资源:

(1)GET

向指定的资源发出“显示”请求。使用GET方法应该只用在读取数据,而不应当被用于产生“副作用”的操作中,例如在Web Application中。其中一个原因是GET可能会被网络蜘蛛等随意访问。

(2)HEAD

与GET方法一样,都是向服务器发出指定资源的请求。只不过服务器将不传回资源的本文部分。它的好处在于,使用这个方法可以在不必传输全部内容的情况下,就可以获取其中“关于该资源的信息”(元信息或称元数据)。

(3)POST

向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。

(4)PUT

向指定资源位置上传其最新内容。

(5)DELETE

请求服务器删除指定的页面。 CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。 (6)OPTIONS

这个方法可使服务器传回该资源所支持的所有HTTP请求方法。用'*'来代替资源名称,向Web服务器发送OPTIONS请求,可以测试服务器功能是否正常运作。

(7)TRACE

回显服务器收到的请求,主要用于测试或诊断。

(8)CONNECT

HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。通常用于SSL加密服务器的链接(经由非加密的HTTP代理服务器)。

 

7. 在浏览器地址栏键入URL,按下回车之后经历什么

(1)浏览器向DNS服务器请求解析该URL中的域名所对应的IP地址;

(2)解析出IP地址后,根据该IP地址和默认端口80,和服务器建立TCP连接

(3)浏览器发出读取文件(URL中域名后面部分对应的文件)的HTTP请求,该请求报文作为TCP三次握手的第三个报文的数据发送给服务器;

(4)服务器对浏览器请求作出响应,并把对应的HTML文本发送给浏览器;

(5)释放TCP连接

(6)浏览器将该HTML文本并显示内容。

 

二. HTTPS协议

1. HTTP的缺点

(1)通信使用明文( 不加密) , 内容可能会被窃听

(2)不验证通信方的身份, 因此有可能遭遇伪装

(3)无法证明报文的完整性, 所以有可能已遭篡改

 

2. 什么是HTTPS协议

HTTPS是身披SSL外壳的HTTP。HTTPS是一种通过计算机网络进行安全通信的传输协议,经由HTTP进行通信,利用SSL/TLS建立全信道,加密数据包。HTTPS使用的主要目的是提供对网站服务器的身份认证,同时保护交换数据的隐私与完整性。

 

3. HTTPS协议的特点

(1)内容加密:采用混合加密技术,中间者无法直接查看明文内容;

(2)验证身份:通过证书认证客户端访问的是自己的服务器;

(3)保护数据完整性:防止传输的内容被中间人冒充或者篡改。

 

三. URL相关

1.URL:统一资源定位符

URL全称是Uniform Resource Locator, 统一资源定位符,是互联网上用来标识某一处资源的地址。http://www.aspxfans.com:8080/news/index.asp?boardID=5&ID=24618&page=1#name

分为以下几个部分:

(1)协议部分:http://

(2)域名部分:www.aspxfans.com

(3)端口部分::8080

(4)虚拟目录部分:/news

(5)文件名部分:/index.asp?

(6)参数部分:从?到#部分

(7)锚部分:#name

 

2.URI:统一资源标识符

uniform resource identifier,统一资源标识符,用来唯一的标识一个资源,一般由三部组成:

  • 访问资源的命名机制
  • 存放资源的主机名
  • 资源自身的名称,由路径表示,着重强调于资源。

 

3.URN:统一资源命名

uniform resource name,统一资源命名,是通过名字来标识资源,比如mailto:[email protected]

URI是以一种抽象的,高层次概念定义统一资源标识,而URL和URN则是具体的资源标识的方式。URL和URN都是一种URI。笼统地说,每个 URL 都是 URI,但不一定每个 URI 都是 URL。这是因为 URI 还包括一个子类,即统一资源名称 (URN),它命名资源但不指定如何定位资源。上面的 mailto、news 和 isbn URI 都是 URN 的示例。