网络-6【http版本、关闭TCP、四次挥手、同源策略】

一.HTTP协议版本

(1).HTTP/0.9

仅支持GET请求方式

仅能请求访问HTML格式的资源

(2).HTTP/1.0

增加POST和HEAD请求方式

支持多种数据格式的请求与访问

支持cache缓存功能

新增状态码,多字符集支持,内容编码等

早期HTTP/1.0不支持keep-alive长连接,只支持串行连接

后期HTTP/1.0增加Connection:keep-alive字段(非标准字段),开始支持长连接

(3).HTTP/1.1

增加持久连接(默认开启Connection:keep-alive)

增加管道机制(支持多个请求同时发送)

增加PUT/PATCH/OPTION/DELETE等请求方式

增加Host字段(指定服务器域名)

增加100状态码,支持只发送头信息

增加身份认证机制

支持传送内容的一部分和文件断点续传

新增了24个错误状态码

(4).HTTP/2.0

增加双工模式(客户端同时发送多个请求,服务端同时处理多个请求)

服务器推送(服务器会把客户端需要的资源一起推送到客户端,合适加载静态资源)

头信息压缩机制(每次请求都会带上所有信息发送给服务端【http协议不带状态】)

二进制协议(头信息与数据体使用二进制进行传输)

多工(先发送已处理好的部分,再响应其他请求,最后再解决没有处理好的的部分)

二.关闭TCP

(1).状态

Fin:finish关闭连接

Fin-wait-1: 等待远程TCP的连接中断请求,或先前的连接中断请求的确认

Fin-wait-2: 从远程TCP等待连接中断请求

Close-wait: 等待从本地用户发来的连接中断请求

Last-ACK: 等待原来发向远程TCP的连接中断请求的确认

Time-wait: 等待足够的时间以确保远程TCP接收到连接中断请求的确认

Closed: 没有任何连接状态

三.四次挥手

(1).流程图

(2).流程

1.客户端发送连接关闭报文(此时已停止发送数据)(第一次挥手)

报文首部: Fin=1(序列号seq=u)

此刻:客户端进入终止等待1(fin-wait-1)状态

2.服务器收到连接关闭报文,并发送确认报文(第二次挥手)

报文首部:ACK=1 ack=u+1(确认FIN)(序列号seq=v)

此刻:服务端进入关闭等待(Close-Wait)状态

说明:连接半关闭状态,客户端没有数据要发送,但服务器如果还要发送数据,客户端依然要接收

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连接结束

(Tcp关闭,服务端要比客户端早一些)

Time-wait时长:2msl Maximum Segment Lifetime最大报文生存时间

MSL的值根据不同的情况而不同,一般是30秒,1分钟,2分钟

目的:保证客户端发送的最后一个报文能够到达服务器,一旦报文丢失,服务器会认为,自己最后一次的包客户端没有收到(第三次挥手),此时服务器会重新发送一次,而客户端可以在2MSL的时间内第四次挥手,重启2Msl计时器

(3).总结

为什么是四次挥手:

第一次挥手的时候发送了fin包,服务器接收到以后,表示客户端不再发送数据了,但还能接收数据。这时服务器先向客户端发送确认报,确认自己是否还有数据没有发送给客户端,这个确认阶段是CLOSE-WAIT,所以在终止等待1的开始和结束需要各发送一个报,状态最开始向客户端发送的包是确认收到来自客户端的包,状态结束时发送的是确认数据已经完整发送。

TCP连接建立后,客户端突然故障

Tcp保活计时器:客户端如果出现故障,服务器每收到一次客户端请求后都会重新复位保活计时器,通常是2小时,若两小时还没有收到客户端的数据,服务器就会发送一个报文探测报文段,以后每隔75分钟发送一次,如果一连发送10个都没有反应,服务器就确认出故障了,关闭连接

四.同源策略

Same-Origin-Policy(SOP)

web浏览器只允许在两个页面有相同源时,第一个页面的脚本访问第二个页面里的数据

(1).报错解析

(2).同源示例

源(域名):协议+域名+端口

同源:相同的协议&&相同的域名&&相同的端口

不同源(跨域):不同的协议||不同的域名||不同的端口

(3).跨域操作

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

(4).不受同源策略限制的项

1.页面超连接

2.页面重定向

3.表单提交

4.资源引入scriptsrc/link...

只要有js引擎的浏览器都使用同源策略

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值