1. HTTP原理
http请求封装在应用层数据包中,再封装到tcp数据包中,再封装到ip数据包中,再封装到以太网数据包中,如果过大,可能会拆成几个包,走以太网协议 + 交换机,经过广播网关到目标机器,再一层一层的拆包,得到http请求报文传递给tomcat,返回一个http响应报文按原路径回去。
2. http 1.0、1.1、2.0
- http1.0默认是短连接的,若要开启长连接则要指定keep-alive,浏览器每次请求都要建立一次tcp连接,结束了就释放tcp连接。
- http1.1默认支持长连接,浏览器第一次去请求一个网站的一个页面的时候,就会打开tcp连接,接着一段时间都不关闭。
- 短连接
连接->传输数据->关闭连接 - 长连接
连接->传输数据->保持连接 -> 传输数据-> 。。。 ->关闭连接。
- http2.0支持多路复用,基于一个tcp连接并行发送多个请求和接受响应。
3. HTTP和HTTPS的区别
- https协议需要到ca(电子认证服务)申请证书,一般免费证书较少,因而需要一定费用。
- http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
- http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
- http的连接很简单,是无状态的;HTTPS协议是由SSL(Secure Sockets Layer 安全套接字协议)+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
4. Cookie Session 的比较
- 存储位置:cookie在客户端浏览器上,session在服务器上。
- 服务器压力:cookie保存在客户端,不需要消耗服务器资源,session会消耗大量的内存。
- 存储容量:单个cookie保存的数据<=4kb,一个站点最多存储20个cookie,session一般来说没有上限。
- 隐私策略:cookie对客户端可见,不安全,session对用户透明,不存在信息泄露的风险。
- 有效时间:cookie长期有效,session关闭窗口就会失效,达不到长期有效的效果。
- 跨域支持:cookie支持跨域名访问,session不支持。
5. GET/POST以及幂等性
HTTP幂等方法,是指无论调用这个URL多少次,都不会有不同的结果的HTTP方法。值得注意,幂等性指的是作用于结果而非资源本身。可能某个方法可能每次会得到不同的返回内容,但并不影响资源,这样的也满足幂等性,例如get服务器当前时间。
HTTP GET方法
- 用于获取资源,不管调用多少次接口,结果都不会改变,所以是幂等的。
- 若接口用于获取当前时间,它获取的是服务器当前时间,本身不会对资源产生影响,因此满足幂等性
- 把参数包含在URL中,不安全,传送的参数是有长度限制的
HTTP POST方法 - POST是一个非幂等方法,它会对资源本身产生影响,每次调用都会有新的资源产生,因此不满足幂等性
- 通过request body传递参数,参数长度没有限制,更加安全。
网友评论