北碚网站建设,开发一套软件app,建盏十大高端客户,国家三大外贸平台1. http/https 协议
1.0 协议缺陷:
⽆法复⽤链接#xff0c;完成即断开#xff0c;重新慢启动和 TCP 3 次握⼿head of line blocking : 线头阻塞#xff0c;导致请求之间互相影响
1.1 改进:
⻓连接(默认 keep-alive )#xff0c;复⽤host 字段指定对应的虚拟站点新增功…1. http/https 协议
1.0 协议缺陷:
⽆法复⽤链接完成即断开重新慢启动和 TCP 3 次握⼿head of line blocking : 线头阻塞导致请求之间互相影响
1.1 改进:
⻓连接(默认 keep-alive )复⽤host 字段指定对应的虚拟站点新增功能: 断点续传身份认证状态管理cache 缓存 Cache-ControlExpiresLast-ModifiedEtag
2.0:
多路复⽤⼆进制分帧层: 应⽤层和传输层之间⾸部压缩服务端推送
https: 较为安全的⽹络传输协议
证书(公钥)SSL 加密端⼝ 443
TCP:
三次握⼿四次挥⼿滑动窗⼝: 流量控制拥塞处理 慢开始拥塞避免快速重传快速恢复
缓存策略: 可分为 强缓存 和 协商缓存
Cache-Control/Expires : 浏览器判断缓存是否过期未过期时直接使⽤强缓存Cache-Control 的 max-age 优先级⾼于 Expires当缓存已经过期时使⽤协商缓存 唯⼀标识⽅案: Etag ( response 携带) If-None-Match ( request 携带上⼀次返回的 Etag ): 服务器判断资源是否被修改最后⼀次修改时间: Last-Modified(response) If-Modified-Since ( request 上⼀次返回的 Last-Modified ) 如果⼀致则直接返回 304 通知浏览器使⽤缓存如不⼀致则服务端返回新的资源 Last-Modified 缺点 周期性修改但内容未变时会导致缓存失效最⼩粒度只到 s s 以内的改动⽆法检测到 Etag 的优先级⾼于 Last-Modified
2. 常⻅状态码
1xx : 接受继续处理200 : 成功并返回数据201 : 已创建202 : 已接受203 : 成为但未授权204 : 成功⽆内容205 : 成功重置内容206 : 成功部分内容301 : 永久移动重定向302 : 临时移动可使⽤原有URI304 : 资源未修改可使⽤缓存305 : 需代理访问400 : 请求语法错误401 : 要求身份认证403 : 拒绝请求404 : 资源不存在500 : 服务器错误
3. get / post
get : 缓存、请求⻓度受限、会被历史保存记录 ⽆副作⽤(不修改资源)幂等(请求次数与资源⽆关)的场景 post : 安全、⼤数据、更多编码类型
4. Websocket
Websocket 是⼀个 持久化的协议 基于 http 服务端可以 主动 push
兼容
FLASH Socket⻓轮询 定时发送 ajaxlong poll 发送 -- 有消息时再 response
new WebSocket(url)
ws.onerror fn
ws.onclose fn
ws.onopen fn
ws.onmessage fn
ws.send()5. TCP三次握⼿
建⽴连接前客户端和服务端需要通过握⼿来确认对⽅:客户端发送 syn (同步序列编号) 请求进⼊ syn_send 状态等待确认服务端接收并确认 syn 包后发送 synack 包进⼊ syn_recv 状态客户端接收 synack 包后发送 ack 包双⽅进⼊ established 状态
6. TCP四次挥⼿
客户端 – FIN -- 服务端 FIN—WAIT服务端 – ACK -- 客户端 CLOSE-WAIT服务端 – ACK,FIN -- 客户端 LAST-ACK客户端 – ACK -- 服务端CLOSED
7. Node 的 Event Loop: 6个阶段
timer 阶段: 执⾏到期的 setTimeout / setInterval 队列回调I/O 阶段: 执⾏上轮循环残流的 callbackidle , preparepoll : 等待回调 执⾏回调 执⾏定时器 如有到期的 setTimeout / setInterval 则返回 timer 阶段如有 setImmediate 则前往 check 阶段 check 执⾏ setImmediate close callbacks
8. 跨域
JSONP : 利⽤
function jsonp(url, jsonpCallback, success) {
const script document.createElement(script)
script.src url
script.async true
script.type text/javascript
window[jsonpCallback] function(data) {
success success(data)
}
document.body.appendChild(script)
}设置 CORS: Access-Control-Allow-Origin*postMessage
9. 安全
XSS 攻击: 注⼊恶意代码 cookie 设置 httpOnly转义⻚⾯上的输⼊内容和输出内容 CSRF : 跨站请求伪造防护: get 不修改数据不被第三⽅⽹站访问到⽤户的 cookie设置⽩名单不被第三⽅⽹站请求请求校验