网络-6【http版本、关闭TCP、四次挥手、同源策略】
一.HTTP协议版本
(1).HTTP/0.9
(2).HTTP/1.0
早期HTTP/1.0不支持keep-alive长连接,只支持串行连接
后期HTTP/1.0增加Connection:keep-alive字段(非标准字段),开始支持长连接
(3).HTTP/1.1
增加持久连接(默认开启Connection:keep-alive)
增加PUT/PATCH/OPTION/DELETE等请求方式
(4).HTTP/2.0
增加双工模式(客户端同时发送多个请求,服务端同时处理多个请求)
服务器推送(服务器会把客户端需要的资源一起推送到客户端,合适加载静态资源)
头信息压缩机制(每次请求都会带上所有信息发送给服务端【http协议不带状态】)
多工(先发送已处理好的部分,再响应其他请求,最后再解决没有处理好的的部分)
二.关闭TCP
(1).状态
Fin-wait-1: 等待远程TCP的连接中断请求,或先前的连接中断请求的确认
Last-ACK: 等待原来发向远程TCP的连接中断请求的确认
Time-wait: 等待足够的时间以确保远程TCP接收到连接中断请求的确认
三.四次挥手
(1).流程图
(2).流程
1.客户端发送连接关闭报文(此时已停止发送数据)(第一次挥手)
报文首部:ACK=1 ack=u+1(确认FIN)(***seq=v)
说明:连接半关闭状态,客户端没有数据要发送,但服务器如果还要发送数据,客户端依然要接收
3.客户端收到服务器的确认请求后进入终止等待2(Fin-wait-2)
(服务器在这期间还要确认客户端所需要的数据是否发送完毕了,否则继续发送)
4.服务器确认数据已发送完毕后,向客户端发送连接关闭报文(第三次挥手),服务器进入最后的确认(Last-ACK)状态
报文首部: FIn=1 ACK=1 ack=u+1(确认上一次发送的数据包)***seq=w
5.客户端收到服务器的连接关闭报文后,发出接收确认报文(第四次挥手),客户端进入时间等待(Time-wait)状态
报文首部:ACK=1 ack=w+1(确认上一次数据包) ***seq=u+1
6.服务器收到客户端发出的确认,立即进入TCP关闭状态(close)TCP连接结束
Time-wait时长:2msl Maximum Segment Lifetime最大报文生存时间
MSL的值根据不同的情况而不同,一般是30秒,1分钟,2分钟
目的:保证客户端发送的最后一个报文能够到达服务器,一旦报文丢失,服务器会认为,自己最后一次的包客户端没有收到(第三次挥手),此时服务器会重新发送一次,而客户端可以在2MSL的时间内第四次挥手,重启2Msl计时器
(3).总结
第一次挥手的时候发送了fin包,服务器接收到以后,表示客户端不再发送数据了,但还能接收数据。这时服务器先向客户端发送确认报,确认自己是否还有数据没有发送给客户端,这个确认阶段是CLOSE-WAIT,所以在终止等待1的开始和结束需要各发送一个报,状态最开始向客户端发送的包是确认收到来自客户端的包,状态结束时发送的是确认数据已经完整发送。
Tcp保活计时器:客户端如果出现故障,服务器每收到一次客户端请求后都会重新复位保活计时器,通常是2小时,若两小时还没有收到客户端的数据,服务器就会发送一个报文探测报文段,以后每隔75分钟发送一次,如果一连发送10个都没有反应,服务器就确认出故障了,关闭连接
四.同源策略
web浏览器只允许在两个页面有相同源时,第一个页面的脚本访问第二个页面里的数据
(1).报错解析

(2).同源示例
(3).跨域操作
同源策略是浏览器的一个安全功能,不同源的客户端脚本在没有明确授权的情况下,不能读写对方资源,只有同一个源的脚本赋予dom.读写cookiesession,ajax等操作权限