HTTP
从输入url到显示主页的过程
参考:segmentfault.com/a/119000000…
DNS解析:网址到ip地址的转换
TCP连接: HTTP协议使用TCP作为传输层协议
发送HTTP请求
服务器处理请求并返回HTTP报文
浏览器解析渲染页面
连接结束
HTTP和HTTPS的区别
HTTP报文是包裹在TCP报文中发送的,服务器端收到TCP报文时会解包提取出HTTP报文。但是HTTP报文是明文,如果中间被截取的话会存在一些信息泄露的风险。
HTTPS协议的本质就是HTTP + SSL(or TLS)。在HTTP报文进入TCP报文之前,先使用SSL对HTTP报文进行加密。
HTTPS在传输数据之前需要客户端与服务器进行一个握手(TLS/SSL握手),在握手过程中将确立双方加密传输数据的密码信息(第二次握手服务器会发送一个SSL证书,客户端对其验证)。
TLS/SSL使用了非对称加密、对称加密以及hash等。具体过程请参考经典的阮一峰先生的博客TLS/SSL握手过程 。
SSL加密过程: 需要注意的是非对称加解密算法的效率要比对称加解密要低的多。 所以SSL在握手过程中使用非对称密码算法来协商密钥,实际使用对称加解密的方法对http内容加密传输。
Https的好处
所有信息都是加密传播,黑客无法窃听。
具有校验机制,一旦被篡改,通信双方会立刻发现。
配备身份证书,防止身份被冒充。
缺点
SSL证书维护麻烦。
握手次数增加,降低访问速度。
Http跳转到Https的方式增加了用户访问耗时。
Https涉及的算法会消耗CPU资源。
常见的状态码
200 ok 服务器已成功处理了请求并提供了请求的网页
202 Accepted 已经接受请求,但处理尚未完成
204 No Content 没有新文档,浏览器应该继续显示原来的文档
206 Partial Content 客户端进行了范围请求(实现断点续传)
301 Moved Permanently 永久性重定向
302(或307) 临时性重定向
304 Not Modified 未修改,自从上次请求后,请求的内容未修改过
401 未经授权
403 Forbidden 服务器拒绝请求
404 Not Found 服务器不存在客户端所请求的资源
500 服务器遇到一个错误,使其无法请求提供服务
HTTP长连接、短连接
HTTP 2.0
问题
GET 与 POST 比较:作用、参数、安全性、幂等性、可缓存。
参考
HTTP 状态码
Cookie和Session
什么是Cookie和Session
Sesssion在服务端生成,存在客户端。客户端访问某个地址时,服务器会根据页面的头部信息生成coolkie(字符串),然后cookie会加在http响应头中,发往客户端并保存在浏览器。在下次客户端请求时,请求中会附带存储的Cookie。
Session 是在服务器端生成的,存储在服务器端,即存在内存中。可以对生成的 Session 设置过期时间,如果不设置过期时间,默认的 Session 过期时间是30 分钟。但是,Sesssion 的生成的同时,会生成一个与之相关联的的 SessionID ,此SessionID的存储是需要 Cookie来完成的。SessionID 是以名称为 JSESSIONID,其值应该是一个既不会重复,又不容易被找到规律以仿造的字符串。SessionID会随着此次Http响应,一并返回到客户端,并保存在客户端中(Cookie)。到当前请求再次发出后,该 SessionID会随着 Http 头部,传到服务器中,服务器依据当前 SessionID 得到与之对应的 Session.
注意:一个域,在客户端建立的所有的Cookie都是可以共享的,只要 Cookie 没有过期。
为什么需要cookie和Seesion
在网站中,http请求是无状态的。也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户。Cookie和Session的出现就是为了解决这个问题。
Cookie使用场景:有些网站有记住用户名的功能,当你勾这个的时候,下次进入该网站时,就会保存上一次登录的用户名
Seesion使用场景:利用Seesion来验证用户是否已登录,利用Session来保存验证码。
Cookie和Session的区别
Cookie是存在客户端,Session存在服务器
安全性要求高的用Session,要求低用Cookie
Cookie只能存储字符串,Session可以存储任何信息
Cookie如果不设置时间,当关闭浏览器时,Cookie就失效,不会在本地保存;Session的生命周期是一个会话(当启动浏览器到关闭浏览器)
在存储相对持久的信息时,应考虑使用 Cookie,因为 Cookie 可以以文件的形式,存储在客户端。在进行一些登录的验证及信息拦截的时候,可以使用 Session。
参见:www.cnblogs.com/xiaoshitout…
cookie和session结合使用
web开发发展至今,cookie和session的使用已经出现了一些非常成熟的方案。在如今的市场或者企业里,一般有两种存储方式:
存储在服务端:通过cookie存储一个session_id,然后具体的数据则是保存在session中。如果用户已经登录,则服务器会在cookie中保存一个session_id,下次再次请求的时候,会把该session_id携带上来,服务器根据session_id在session库中获取用户的session数据。就能知道该用户到底是谁,以及之前保存的一些状态信息。这种专业术语叫做server side session。
将session数据加密,然后存储在cookie中。这种专业术语叫做client side session。
参见博客:www.cnblogs.com/xxtalhr/p/9…
如何客户端禁用了Cookie,如何存储用户的信息
如果客户端禁用了 Cookie 的话,很多网站任然可以存储用户的信息。一种处理的方式是URL 重写,将 SesseionID 直接附加在请求地址的后面。另一种处理的方式是,使用隐藏自动的方式。就是服务器自动的在表单中,添加一个隐藏字段,以便在表单提交时,将 SesseionID 一起传到服务器,进行识别。
Session的问题
session是存在服务器的内存中的,如果session过多会影响服务器的性能
session只在一台服务器里,当有多台服务器的时候,访问别的服务器肯定会失败(需考虑Session共享)
4. 长连接与短连接原理以及使用场景,流水线。
5. HTTP/1.x 的缺陷,以及 HTTP/2 的特点。
6. HTTP/1.1 的特性。
7. HTTP 与 FTP 的比较。
转载于:https://juejin.im/post/5c8a5ba151882542860a52a2