提纲:

🔥HTTP与HTTPS

  • 概念

  • 1.0/1.1/2.0

  • Session与Cookie

  • 一次HTTP请求全过程

  • Header

🎈面试八股真题——【Java八股-第十九期】Socket 统一总结

一、HTTP与HTTPS

1. 概念

  • 用于客户端与服务端间的通信协议,是一种基于TCP传输协议、简单快速、无状态的明文通信协议

2.1.0/1.1/2.0

  • 1.0

    • 短连接:每一次HTTP数据传输都需要新建TCP连接

  • 1.1

    • 长连接:通过HTTP Header当中的connection:keep-alive属性,多次HTTP连接可以共享同一个TCP连接,节约带宽

    • 管线化:客户端一次可以发出多个HTTP请求

    • 断点续传:HTTP Header中存在一个Range字段,表示传输数据范围,若传输中意外中断,可以从中断处继续传输,避免从头传输的开销,或是数据量过大可以分段传输

  • 2.0

    • 传输多路复用,多个请求可以共用同一个HTTP连接并发的传输

    • 首部压缩:对HTTP首部进行压缩,减小数据包大小

    • 采用二进制格式而不是文本格式(ASCII) # HTTP/1.1 也可以使用二进制传输,例如传输类型为 image/jpg 等文件类型时

3.Session与Cookie

  • 无状态指协议对于请求处理没有记忆能力,即服务端无法确认客户端状态,可以通过Session与Cookie可以解决HTTP协议无状态的问题

  • 区别

    • 1、Cookie存储在客户端中,Session数据存储在服务端中,通过SessionID的方式存储为一个Cookie进行传输

    • 2、Cookie大小限制为4kb,且最多为20个,Session大小数量无限制

    • 3、Cookie可以本地化存储,并设置存活时间,默认-1表示关闭浏览器就清除,大于0表示持久化到磁盘的存储时间,而Session存储SessionID的Cookie的存活时间是默认的-1,即关闭浏览器后就失效

    • 4、Cookie不支持跨域访问,且需要浏览器支持,若浏览器不支持,则Cookie失效,而Session可以通过修改URL的方式存储SessionID

4.一次HTTP请求全过程

  • 1、解析请求URL,获得请求的域名——URL:统一资源定位符,协议 + 域名 + 端口 + 资源虚拟路径 + 资源名称 + 参数

  • 2、通过DNS服务解析得到域名对应的IP地址

    • ps:解析过程中采用 UDP 协议进行通信;DNS 服务器间采用 TCP 协议通信

    • ①首先查找本地Host文件、浏览器缓存、系统缓存

    • ②从本地DNS服务器进行查询

    • ③访问DNS根服务器,获取org,com等顶级域名服务器列表

    • ④从列表中任选一个顶级域名服务器访问,获取域名对应的权威服务器列表

    • ⑤任选一个域名权威服务器,获取域名对应的具体IP地址

    • ⑥将获取到的IP地址存储到本地DNS服务器中,并开始传输

  • 3、与访问的服务端口,三次握手四次挥手后建立传输层TCP协议,进行数据传输

  • 4、服务器接收到请求,并调用对应资源或方法进行处理,并返回视图

  • 5、浏览器解析视图并显示

    • 构建DOM树,构建CSSOM树,执行JS,渲染

5.Header

  • Request

    • 1、请求行:请求方法 + URL + HTTP版本

    • 2、首部: