HTTP1.0 HTTP1.1(持久链接 pipeline host) HTTP2(二进制传输/头信息压缩/提高推送效能) HTTPS的实现:
1.应用层 : HTTP FTP
2.传输层 : TCP协议(更可靠) UDP协议
3.网络层 : 为数据在结点之间传输创建逻辑链路
4.数据链路层 : 在通信的实体间建立数据链路链接
4.物理层 : 定义物理设备如何传输数据
3次握手
client server
同步序列编号SYN=1,Seq=x
SYN=1,确认字符ACK=X+1,Seq=Y
ACK=Y+1,Seq=Z
URI URL URN
URI 用来标识互联网上的信息资源 包含(URL URN)
URL 统一资源定位器
跨域
response.writeHead(200, {
‘Access-Control-Allow-Origin’: ‘*’,
‘Access-Control-Allow-Headers’: ‘X-Test-Cors’,
‘Access-Control-Allow-Methods’: ‘POST, PUT, Delete’,
‘Access-Control-Max-Age’: ‘1000’,
})
-
CORS 预请求
这几个不用预请求
get header post
Content-Type: ‘text/plain’ ‘multipart/form-data’ ‘application/x-www-form-urlencoded’
http 浏览器缓存
可缓存性: Cache-Control: public(任何结点) private(当前浏览器) no-cache(均不能缓存)
Cache-Control: ‘max-age=200, public’ ‘max-age=200, no-cache’ ‘max-age=200, no-store’
缓存验证:
Last-Modified : 对比上次修改时间,验证是否已经被修改 配合 If-Modified-Since If-Unmodified-Since
Etag: 对比资源的数据签名(如:hash),判断是否使用缓存
Cookie
set-cookie : max-age | expired 设置过期时间 | Secure 只在 HTTPS 的时候发送 | HTTPOnly 无法通过document.cookie 访问
‘set-cookie’: [‘id=123;max-age=2’, ‘abc=456; HTTPOnly’, ‘def=678; domain=test.com’]
HTTP长连接
Connection: Keep-Alive | close
数据协商 请求和相应协商数据传输的信息 Accept <> Content
Request Headers
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36
Response Headers
Content-Type: text/html;charset=utf-8
Content-Encoding: gzip
Content-Language
Redirect 302 临时重定向 301 永久重定向
if (request.url === ‘/‘) {
response.writeHead(302, {
‘Location’: ‘/new’
})
}
Content-Security-Policy 内容安全策略CSP 现在src访问的地址
response.writeHead(302, {
‘Content-Security-Policy’: ‘default-src http: ; https: ; form-action \’self\’ ; ‘
})
HTTPS : HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密
公钥私钥
client server
Random-client+支持的加密套件
Random-server+一种加密套件
生成预主密钥 用自己的私钥解密预主密钥
主密钥 —— 主密钥
HTTP2 二进制分帧传输/信道复用/Server Push