一些八股性质的东西,作记录用,但是也会补充一些实验。基础部分就不再赘述,记录一些容易遗忘、经常被忽视的点。
再度赘述,常见的部分在这里不会去涉及。
状态码的作用是快速反应请求的解决,以准确通用的形式传递访问状态及结果。
常见状态码:
Host、Content—Length、Accapt、Connect、Content-Type、Content-Encoding
值的一聊的话题,HTTP缓存分为两类,一类是强制缓存,一类是协商缓存。
强制缓存是不与服务端交互的,只要浏览器判断缓存没有过期,则直接使用浏览器的本地缓存,决定是否使用缓存的主动性在于浏览器这边。
这主要通过两个头部来实现:
Cache-Control,相对时间,通过当前时间和相对时间计算出是否过期,优先级高于Expires;
Expires,是一个绝对时间;
与服务器交互,服务器告知如果没有过期则使用缓存。304报文的作用。
也是通过两个头部实现:
If-None-Match,带上浏览器之前返回的Etag,由浏览器判断资源是否过期,优先级高于下者。
If-Modified-Scene,带上本地缓存时间,由浏览器判断资源是否过期
总共分为四个步骤
ClientHello: 客户端发送加密通信请求,附带一个TLS版本、随机数、可供选择密码套件
SeverHello: 服务端确认TLS版本号,若不支持则关闭加密通信。
若支持则返回响应报文,附带随机数、密码套件、自己的CA证书
ClientResp: 首先使用CA机构的公钥解密CA证书,获取服务端公钥。
生成随机数,用服务端公钥加密它,与摘要之前的数据一同返回
用三个随机数拼接出会话密钥,此后只使用会话密钥加密
ServerResp:
解密客户端随机数,三个随机数拼接出会话密钥,告知客户端握手结束
如何实现一个扫码登陆呢?用户手机扫了客户端的码,服务端如果告知客户端呢?有两种方法。
客户端不断轮训服务端用户是否扫码
长轮询:客户端请求服务端,超时时间设置为30s,如果在这个期间,服务端感知到用户扫码了,立刻返回。
一款面向连接的协议,客户端和服务端建立起双向的WebSocket协议。
可以通过Http协议升级得到:
Connection: Upgrade
Upgrade: WebSocket
Sec-WebSocket-Key: T2a6wZlAwhgQNqruZ2YUyg==\r\n
这时候如果切换成功,服务端会返回报文:
HTTP/1.1 101 Switching Protocols\r\n
Sec-WebSocket-Accept: iBJKv/ALIW2DobfoA4dmr3JHBCY=\r\n
Upgrade: WebSocket\r\n
Connection: Upgrade\r\n
之后就可以互相以ws形式发送ws消息 本文将持续更新,欢迎补充和指正。