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地址,封装成帧。