小伙伴们在面试过程当中会遇到一些HTTP/网络TCP/IP相关问题web
我大概收集整理了下面试
这些问题咱们均可以在如下文章中找到答案缓存
无状态协议服务器
解决:cookie
websocket
每次请求,从新链接,增长开销cookie
解决:keep-alive
网络
一条链接只能发一个请求并发
解决:管线化
负载均衡
请求只能从客户端开始socket
解决:SPDY/comet/websocket
请求/响应首部未压缩 解决:SPDY
为了提升http性能 SPDY以会话层形式加入 HTTP —> SPDY(会话层) -> SSL -> TCP ... 实现如下功能
利用 tcp 握手挥手 任意一端没有提出断开,则保持链接状态 一个TCP连接能够处理多个http请求
依赖持久化连接 管线化技术 可实现并发请求
多个HTTP请求发送能够一块儿发送
根据 从 服务器端发送的响应报文 set-cookie 首部字段信息,通知客户端保存 cookie 客户端再次请求时,自动在请求报文中加入cookie发出
服务器端有更新,不会等待请求,而是直接返回响应,延迟应答模式
客户端请求,服务端响应挂起,有内容更新时返回,
缺点:为了保留响应,一次链接时间变长,消耗资源
服务端和客户端创建通讯链接,以后可互相发送数据
本文重点不在websocket,不会详细讲解
改善用户使用web速度体验,基于 SPDY 设计
http1.1即使是经过管道同时发送了多个请求,服务端也是按请求的顺序依次给出响应的;而客户端在未收到以前所发出全部请求的响应以前,将会阻塞后面的请求(排队等待),这称为"队头堵塞"
解决 : 多路复用
http2.0虽然依然遵循请求-响应模式,但客户端发送多个请求和服务端给出多个响应的顺序不受限制,这样既避免了"队头堵塞",又能更快获取响应。在复用同一个TCP链接时,服务器同时(或前后)收到了A、B两个请求,先回应A请求,但因为处理过程很是耗时,因而就发送A请求已经处理好的部分, 接着回应B请求,完成后,再发送A请求剩下的部分
HTTP1.x 采用文本格式
HTTP2.0 采用二进制格式
方便且健壮
基于 SPDY
基于 SPDY
TCP链接复用是将多个客户端的HTTP请求复用到一个服务器端TCP链接上:
主要利用负载均衡
技术,