美文网首页
http协议学习

http协议学习

作者: hekirakuno | 来源:发表于2019-10-06 15:36 被阅读0次

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

什么是无状态的协议
无状态的协议指的是每次的请求都是独立的,<它的执行情况和结果>与<前面的请求>和<之后的请求>是无直接关系的。
(所以,TCP是一种有状态,有连接的协议 ,因为他需要对方应答,需要之前的状态。)

URL格式
http://www.mywebsite.com/sj/test/test.aspx?name=sviergn&x=true#stuff

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对比图

参考资料:
http详解
慕课网
菜鸟教程
http的无状态与无连接
url到响应页面的过程
DNS解析
session和cookie的使用和区别

相关文章

  • http协议学习

    简介: http协议是提供发布和接收html的方法。 优点: 1、支持客户端服务器协议 2、简单快速 3、灵活 4...

  • HTTP协议学习

    看了一篇《HTTP协议详解》(原博主找不到了,这里是转载的地址),以下是阅读的时候整理的知识点:

  • HTTP协议学习

    简介: HTTP协议叫:超文本传输协议从万维网服务器传输超文本到本地浏览器的传送协议。HTTP是一个基于TCP/I...

  • http协议学习

    什么是http协议?HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写...

  • http协议学习

    今天学了下http协议,总结了以下几个问题。 1. 什么是http协议 http协议是基于TCP/IP通信协议来传...

  • 2018-10-13

    学习http协议

  • http协议缓存机制

    2.1、学习http协议,理解http请求-响应模式2.2、理解http是应用层协议,它是构建在TCP/IP协议上...

  • 期末总结

    #期末总结 ---------- + 了解学习了HTTP协议和有关HTTP协议的一些知识,例如:HTTP首部、报文...

  • RPC学习笔记-协议

    RPC协议 RPC协议同HTTP协议一样,都是属于应用层的协议,可以通过学习HTTP的协议来理解RPC协议. HT...

  • D14 HTTP协议

    HTTP协议 HTTP协议是学习java web 开发的基石,不深入了解HTTP协议,就不能说掌握了WEB开发,更...

网友评论

      本文标题:http协议学习

      本文链接:https://www.haomeiwen.com/subject/jfnnyctx.html