http协议报文体_http协议学习

什么是http协议?

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。它是一种无状态的,无连接的协议。

什么是无状态的协议

无状态的协议指的是每次的请求都是独立的,与和是无直接关系的。

(所以,TCP是一种有状态,有连接的协议 ,因为他需要对方应答,需要之前的状态。)

Schema: http

host: www.mywebsite.com

path: /sj/test/test.aspx

Query String: name=sviergn&x=true

Anchor: stuff

HTTP请求报文

请求报文格式

一次完整的url请求过程

1、DNS解析

浏览器缓存-->操作系统缓存-->路由器缓存-->IPS服务器缓存-->根域名服务器缓存-->递归查询。

2、建立TCP连接(三次握手)

3、浏览器发起HTTP请求

4、服务器响应HTTP请求

5、浏览器渲染收到的信息

6、释放连接(四次挥手)

HTTP状态码

GET和POST的区别

1、报文:

get的参数拼接直接放在url中,但是url是有长度的,如果参数太长了就很无力,

post的参数没有限制,会在报文体中;

2、数据库:

get符合幂等性和安全性(因为它是单纯的查询操作),

post不符合;

3、其他:

get请求可以被缓存,

post不能,必须交给服务器处理;

cookie与session的区别

目的:让http具备状态

cookie是客户端的解决方案,cookie分为两种:

1,以文件方式(以域名为文件名)存在硬盘空间上的长期性的cookie

2,停留在浏览器所占内存中的临时性的cookie

浏览网站时,你会经常发现网站登录的地方,会有提示,问你是不是要记住自己的登录状态,像这种情况,登录时填写的一些信息会被以文件的方式存放在客户端的硬盘上。

当用户登录后,session会在cookie端产生一个session_id,这个session_id是存于浏览器所占用的内存当中。当你关闭浏览器后,session_id也要消失了。可以借助于cookie机制来保存session_id,这样就可以解决HTTP协议无状态的缺陷。

session缓存在内存中,如果服务器重启会失效。

当在负载均衡情况下,

因为session是服务器生成的。

所以访问服务器1的时候拿到的sessionid1存在了cookie中,

第二次访问,因为负载均衡,轮询到了服务器2,服务器2没有之前用户的登录信息的session,所以要求重新登陆,重新登陆之后返回了新的sessionid2,我存入了cookie中替代了之前的sessionid[因为cookie用域名命名,所以它的名字是ng暴露的端口,服务器1和服务器2都对应浏览器的同一个cookie],第三次请求,我带着新的sessionid2请求到了服务器1,然而它里面的session对应的是sessionid1,不匹配,要求重新登陆。

结果就是,你无论如何都登录不进去系统了。

解决方法:

(1)Iphash算法

(2)session复制

(3)session共享

cookie机制

session机制,借助cookie机制

负载均衡下session失效

为什么使用token

首先,cookie是浏览器机制,如果是一个应用,那么cookie就会失效了。

于是token应运而生。

token认证的方法本质上逻辑与cookie+session的方法很像。

但是它更加灵活。

首先它可以放在非cookie的位置的其他请求头上。一般放在auth中。

其次,token的生成方式很多样,可以使用jsessionId做token,可以使用jwt做token,还有各种自定义的方式,都可以。

再者,可以结合redis数据库做集群的token共享。降低服务器负载,并且可以处理负载均衡下的session失效问题。(同上(3)方法)

HTTP与HTTPS的区别

HTTPS就是安全版的HTTP

SSL采用身份验证与数据加密保障了网络通信的安全性与数据的完整性

1、HTTPS需要申请CA证书;

2、HTTPS使用密文传输;

3、HTTPS默认使用443端口;

4、(不输入前缀时,浏览器默认填充默认http,所以可能会被劫持。)

HTTP与HTTPS对比图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值