HTTP协议版本
H
T
T
P
/
0.9
\color{#fa8072}HTTP/0.9
HTTP/0.9
仅支持GET请求方式
仅能访问HTML格式的资源
H
T
T
P
/
1.0
\color{#ff4500}HTTP/1.0
HTTP/1.0
增加POST 和HEAD请求方式
支持多种数据格式的请求与访问
支持cache缓存功能
新增状态码、多字符集支持、内容编码
早期不支持keep-alive长连接,值支持串行连接,后期,增加了Connection:keep-alive字段,开始支持长连接
H
T
T
P
/
1.1
\color{#450f00}HTTP/1.1
HTTP/1.1
增加持久连接默认开启Connection:keep-alive
增加管道机制(支持多个请求同时发送)
增加PUT/PATCH/OPTION/DELETE等请求方式
增加HOST字段指定服务器域名
增加身份认证机制
增加100状态码(continue),支持值发送头信息
支持传送内同的一部分和文件断点续传
新增了24个错误状态码
H
T
T
P
/
2.0
\color{#00bfff}HTTP/2.0
HTTP/2.0
增加双工模式(客户端同时发送多个请求,服务器同时处理多个请求)
服务器推送(服务器会把客户端需要的资源一起推送给客户端,适合加载静态资源)
头信息压缩机制(每次请求都会带上所有的信息发送给服务器)(HTTP协议不带状态)
二进制协议(头信息与数据体使用二进制进行传输)
多工(先发送已经处理好的部分,再响应其它请求,最后再解决没有处理好的部分)
TCP的运输连接管理 TCP的连接建立
TCP是面向连接的协议,它基于运输连接来传送TCP报文段
TCP运输连接的建立和释放是每一次面向连接的通信必不可少的过程
TCP运输连接有以下三个阶段
1、建立TCP连接
2、数据传输
3、释放TCP连接
TCP的连接建立要解决以下三个问题
- 是TCP双方能够确知对方的存在
- 使TCP双方能协商一些参数
- 使TCP双方能对运输实体资源进行分配
TCP标准规定SYN=1的报文段不能携带数据,但要消耗掉一个序号
TCP的标准规定,普通的确认报文段如果不携带数据,则不消耗序号
关闭TCP连接的前奏
FIN:finish 关闭连接
状态:
FIN-WAIT-1:等待远程TCP的连接中断请求,或者先前的连接中断请求的确认
FIN-WAIT-2: 从远程TCP等待连接中断请求
CLOSE-WAIT:等待从本地用户发来的连接中断请求
LAST-ACK:等待足够的时间以确保远程TCP收到连接请求中断确认
CLOSED:没有任何连接状态
TCP客户进程发送完最后一个确认报文后,为什么不直接进入关闭状态而是进入时间等待状态,2MSL后才进入关闭状态,这是否有必要?
上述情况会造成TCP服务器进程对之前所发送的TCP连接释放报文段的超时重传,并仍处于最后确认状态,串串的TCP释放报文段到达TCP客户进程,由于TCP客户进程处于关闭状态,因此不理睬该报文段,从而造成TCP服务器进程反复重传TCP连接释放报文段,并一直处于最后确认状态,无法进入到关闭状态,因此时间等待状态以及处于改状态2MSL时长,可以确保TCP服务器进程,可以收到最后一个TCP确认报文段。而进入关闭状态,TCP客户进程在发送完最后一个TCP确认报文段后再经过2MSL时长,就可以使本次连接持续时间内所产生的所有报文段都从网络中消失,这样就可以使下一个新的TCP连接中不会出现旧连接中的报文段
TCP保活计时器的作用
如果出现这种情况,TCP服务器以后就不能在收到TCP客户进程发来的数据
同源策略
Same-Origin-Policy(SOP)
web浏览器只允许在两个页面有相同的源时,第一个页面的脚本访问第二个页面的数据
源:协议 + 域名 + 端口
**同源:**协议、域名、端口都相同
不同源(跨域): 不同协议 || 不同端口 || 不同域名
同源策略是浏览器的一种安全功能,不同源的客户端脚本在没有明确授权的情况下,不能读写对方资源,只有同一个源的脚本赋予dom、读写cookie、session、ajax等操作的权限
不受同源策略限制的项
- 页面的超链接
- 重定向页面
- 表单的提交
- 资源引入 script src/link href/img iframe src
只要有js引擎的浏览器都使用同源策略