Http超文本传输协议

首先了解浏览器网络通信的过程:
  1. 浏览器分析连接指向页面的URL;
  2. 浏览器想DNS系统请求解析URL的IP地址;
  3. 域名系统DNS解析获取IP地址;
  4. 浏览器与服务器建立TCP连接;
  5. 浏览器发出资源请求指令;
  6. 服务器做出响应;
  7. 释放TCP连接;
  8. 浏览器显示服务器返回响应;


HTTP协议是使用TCP作为传输层协议,保证了数据传输的可靠性。HTTP协议本身是无连接的,就是双方交换HTTP报文之前不需要先建立http连接。在浏览器和服务器建立了TCP连接之后(两次握手之后),在第三次握手时,浏览器就会将数据封装成HTTP报文,一起发送给服务器。

HTTP报文:
            



    

由图可以看出,请求报文跟响应报文的区别就是开始行的不同。

请求报文:
请求报文的开始行就只有三个内容: 方法、请求资源的URL、以及HTTP的版本.

其中 方法 就是所谓的restful风格的接口:
GET     请求获取Request-URI所标识的资源
POST    在Request-URI所标识的资源后附加新的数据
HEAD    请求获取由Request-URI所标识的资源的响应消息报头
PUT     请求服务器存储一个资源,并用Request-URI作为其标识
DELETE  请求服务器删除Request-URI所标识的资源
TRACE   请求服务器回送收到的请求信息,主要用于测试或诊断
CONNECT 保留将来使用
OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求

请求报文的示例:
POST /reg.jsp HTTP/ (CRLF)
Accept:image/gif,image/x-xbit,... (CRLF)
...
HOST:www.xxx.com (CRLF)
Content-Length:22 (CRLF)
Connection:Keep-Alive (CRLF)
Cache-Control:no-cache (CRLF)
(CRLF)         //该CRLF表示消息报头已经结束,在此之前为消息报头
user=jeffrey&pwd=1234  //此行以下为提交的数据


响应报文:
响应报文中的第一行是状态栏,包括三个内容:http版本,状态码,以及状态吗的解释短语

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

常见的状态码:
常见状态代码、状态描述、说明:
200 OK      //客户端请求成功
400 Bad Request  //客户端请求有语法错误,不能被服务器所理解
401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用 
403 Forbidden  //服务器收到请求,但是拒绝提供服务
404 Not Found  //请求资源不存在,eg:输入了错误的URL
500 Internal Server Error //服务器发生不可预期的错误
503 Server Unavailable  //服务器当前不能处理客户端的请求,一段时间后可能恢复正常



Http 与 Https 的区别:
  1. https协议需要申请证书;
  2. http是明文传输,而https是通过ssl加密的。
  3. http与https的默认端口不同,前者是80,后者是443;
  4. 其实https就是在http协议的基础上,添加上ssl进行进行加密传输和身份认证。


客户端在使用HTTPS方式与web服务器通信时的步骤:
  1. 客户使用https的URL访问Web服务器,要求与Web服务器建立SSL连接。
  2. Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。
  3. 客户端的浏览器与Web服务器开始协商SSL连接的安全等级,也就是信息加密的等级。
  4. 客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。
  5. Web服务器利用自己的私钥解密出会话密钥。
  6. Web服务器利用会话密钥加密与客户端之间的通信。

                                                             









猜你喜欢

转载自blog.csdn.net/q410654146/article/details/78886922
今日推荐