HTTP协议

1、什么是HTTP协议

定义了客户端与服务器之间数据传输的规约,称为超文本传输协议。

2、HTTP协议与TCP/IP协议的关系

HTTP协议是应用层协议,TCP/IP协议是传输层和网络层协议,HTTP协议使用TCP/IP为其传送数据。

3、长链接与短链接

长链接:建立链接直到数据传输完毕关闭链接,适用于QQ通信等经常连续发送消息的情况。

短链接:一次传输建立关闭一次链接,适用于高并发的情况避免长链接长时间占用资源。

4、HTTP协议的特征

支持客户端服务器模式

简单方便,所以不安全,提供任何数据加密措施

无状态

5、怎样理解HTTP的无状态

是指HTTP协议对事物的处理没有记忆能力,服务端不记得客户端之前发送过什么请求,也不记得回应过什么,它只知道来了请求就处理,客户端同理。

6、URI与URL

URI:统一资源标识符,唯一的标识互联网上的资源

URL:统一资源定位符,支出资源所在的位置,URL是URI的子集

7、HTTP协议中的方法

get:从服务器获取指定URI的资源

post:向服务器传送资源

put:将报文的主体内容保存在相应的URI上,由于任何都可以上传文件,不安全,一般不用

delete:删除文件删除对应URI上的资源,同put

head:与get方法类似,只获得响应报文首部,用于探测资源的有效性

trace:可以探测发出去的请求报文是怎样被修改的,设置Max-Forwords字段,每经过一个服务器减一

options:用来询问服务器支持的方法

connect:要求与代理服务器通信时建立隧道

 

幂等性:方法调用一次或者多次产生相同的结果,换句话说方法的调用不会产生任何影响。

比如用get方法获取当前时间,获取多次,每次得到结果都不一样,但是get方法本身并没有对结果产生任何影响,所以get是幂等的

post方法每调用一次,都会产生新的资源,所以不是幂等的

幂等方法:get,head,put,delete,options

8、get与post方法的区别

①get是从服务器上获取数据,post是向服务器上传送数据

②get要请求的数据在URI后,通过浏览器地址即可看到,安全性差;post请求传送的数据在报文主体中,地址栏中看不到

③get请求会保存在浏览器的浏览记录中;post不会

④get传送的数据大小有限制;post没有

⑤get发送一个tcp报,post发送两个TCP包(header+data)

9、HTTP请求与响应报文格式

 

请求行:请求方法+URI+HTTP版本号

通用首部字段

Cache-Control:缓存控制

Connect:管理持久链接,控制代理不在转发的字段

Date:表明创建报文的日期

Transfer-Encoding:传输报文主体的编码方式

Via:记录中转服务器,追踪报文转发路径

Trailer:报文主体后记录了那些字段

Update:是否有可用的更高协议版本

请求首部字段

Accept:可接受的媒体类型以及相对优先级

Accept-Charset:支持的字符集

Aceept-Encoding:支持的内容编码

Accept-Language:支持的语言

Host:主机名

Range:部分资源范围请求

Max-Forword:最大跳数

各种条件请求

实体首部字段

Allow:本资源支持的方法

Content-Type:主体类型

Content-Encoding:主体内容编码方式

Content-Language:主体使用的语言

Content-Length:主体的长度

Content-MD5:只能保证主体在传输过程的完整性、

 

状态行:版本+状态码+原因短语

响应首部字段

Accept-Ranges:告诉客户端是否能处理范围请求

Etag:实体标记

Location:提供重定向的URI

Server:服务器的信息

WWW-Authenticate:HTTP访问认证

Proxy-Authenticate:代理访问认证

10、状态码

1XX:请求正在处理

2XX:请求正常处理完毕

200 OK:请求已正常处理

204 No Content:请求正常处理,但没资源可返回

206 Partial Content:范围请求响应

3XX:重定向

301 Moved Permanently:永久重定向

302 Found:临时重定向

303 See Other:临时重定向,指明get方法

304 Not Modified:未满足附带条件

307 Temporary Redirect:临时重定向,强制使用post

4XX:客户端错误

400 Bad Request:请求报文中存在语法错误

401 Unauthorized:请求需要认证信息

403 Forbidden:请求禁止访问

404 Not Found:没有找到请求的资源

405 Method Not Allowed 方法不支持

5XX:服务器端错误

500 Internal Server Error:服务器内部错误

503 Service Unavailable:服务器正忙

11、HTTP1.0与HTTP1.1与HTTP2.0区别于改进

HTTP1.1相比于HTTP1.0增加如下功能

  • 支持长链接
  • 支持管线化
  • 支持缓存处理
  • 支持分块编码传输
  • 支持Host、虚拟主机

HTTP2.0相比于HTTP1.X

  • 二进制分和多路复用支持了并行传输
  • 头部压缩
  • 服务器推送

12、HTTP与HTTPS

HTTP自身存在以下缺点

  • 使用明文,容易被窃听
  • 不验证身份,容易遭遇伪装
  • 不验证完整性,内容被篡改

因此引入了HTTPS = HTTP + 认证 + 加密 + 完整性

对称加密:难以保证安全的传送秘钥,秘钥被监听任何人都可以破解

非对称加密:(公有秘钥加密,私有秘钥解密)复杂处理速度慢 

HTTPS使用非对称加密传送对称加密秘钥,数据传送则使用对称加密。

传送过程

①浏览器内嵌有服务器的公钥证书

②服务器发送证书和公钥,浏览器验证

③浏览器使用公钥加密,服务器使用私钥解密

13、浏览器输入一个URL的执行过程

①浏览器通过DNS解析URL的IP地址

②在传输层将数据分成报文段,如果服务器使用80端口监听,客户端随机选择一个端口通信。

③在网络层将报文段封装成IP数据报由路由器转发

④在链路层,使用ARP协议解析MAC地址,封装成帧。

 

posted @ 2019-11-19 13:01  卑微芒果  Views(170)  Comments(0Edit  收藏  举报