http基础
1 基本认识
1.1 URI:
URI(uniform resource identifier)包含URL(uniform resource locator)和URN(uniform resource name)
URL: 协议名://域名(可以是IP地址):端口号(可省略)/虚拟目录/文件名?参数(中间用&相连)#锚
URI:通过名字来标识资源
1.2 HTTP结构构成:
固定组成: 起始行、头部、空行、数据主体
请求消息Request: 请求行+请求头部+空行+请求数据
响应消息Response: 状态行+消息报头+空行+响应正文
1.3 状态码:
1xx:指示信息--表示请求已接收,继续处理
2xx:成功--表示请求已被成功接收、理解、接受
3xx:重定向--要完成请求必须进行更进一步的操作
4xx:客户端错误--请求有语法错误或请求无法实现
5xx:服务器端错误--服务器未能实现合法的请求
1.4 工作过程:
客户端连接到Web服务器(TCP连接)
——>发送HTTP请求
——>服务器接收请求并返回HTTP响应
——>释放TCP连接
——>客户端浏览器解析HTML内容
1.5 GET 和 POST区别
- (1)提交时请求数据位置:
GET请求数据在起始行中(即在URL中)
POST请求数据放在数据主体中 - (2)传输数据大小:HTTP协议自身没有限制数据大小
GET:特定浏览器和服务器URL长度有限制
POST:各个WEB服务器会规定对POST提交数据大小进行限制 - (3)安全性:POST>GET:比如一个登录页面,通过GET方式提交数据时,用户名和密码将出现在URL上,如果页面可以被缓存或者其他人可以访问这台机器,就可以从历史记录获得该用户的账号和密码.
- (4)前端获取值: GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值。
2 、长连接
即:只需建立一次TCP 请求就可以进行多次HTTP 通信
版本: http/1.1开始默认长连接,如需断开,使用connection:close
Http/1.1. 之前默认短连接,如需使用长连接,则:Connection:Keep-Alive
流水线:流水线是在同一条长连接上连续发出请求,而不用等待响应返回,这样可以减少延迟。
3、session 和 cookie的区别
3.1 cookie: 由于HTTP协议是无状态的,引入cookie保存状态。
服务器发送到浏览器并保存在本地的一小块数据,会在浏览器向同一个服务器再次发起请求时被携带上,用于告知服务端两端两次请求是否来自同一个浏览器
3.2 区别:
3.3 联系
session 的运行依赖 session id,而 session id 是存在 cookie 中
维持一个会话的核心就是客户端的唯一标识,即 session id
4、代理:
4.1 架设位置:
正向代理——客户端
反向代理——服务器
4.2 目的:
共同目的:处于服务器和客户端之前,提高访问速度
正向代理:主要用于解决访问限制问题,如本地访问国外网站
反向代理:提供负载均衡、安全防护等作用。如web开发中用的负载均衡服务器
5、https
HTTP+加密+认证+完整性保护 = HTTPS
5.1 https工作过程:
客户端与web服务器建立SSL 连接——>服务端证书信息(包含)公钥传送给客户端——>客户端与服务器协商SSL连接安全等级——>客户端建立会话密钥,公钥加密会话密钥——>服务器端根据私钥解密会话密钥——>web服务器用会密钥与客户端进行通信
(1)加密: Https混合加密机制:非对称密钥加密用于保证传输密钥的安全性,用对称密钥进行通信保证效率
(2)认证:CA认证。
数字证书认证机构(CA,Certificate Authority)是客户端与服务器双方都可信赖的第三方机构。
服务器的运营人员向 CA 提出公开密钥的申请,CA 在判明提出申请者的身份之后,会对已申请的公开密钥做数字签名,然后分配这个已签名的公开密钥,并将该公开密钥放入公开密钥证书后绑定在一起。
进行 HTTPS 通信时,服务器会把证书发送给客户端。客户端取得其中的公开密钥之后,先使用数字签名进行验证,如果验证通过,就可以开始通信了。
(3)完整性保护
SSL 提供报文摘要功能来进行完整性保护。是因为它结合了加密和认证这两个操作
5.2 https 缺点
速度慢包含加解密;需要支付高额费用
参考链接:推荐链接