学习资料链接
HTTP面试篇
1.http请求头和响应头里有哪些参数
Request Headers
- Accept: 客户端能接收的资源类型
- Accept-language: 客户端能接收的语言类型
- Accept-Encoding: 客户端能接收的压缩数据类型
- connection: 客户端和服务端的连接关系
- Host: 目标主机和端口号(用于虚拟主机)
- User-Agent: 客户端版本号名字
- Cookie: 客户端暂存服务端的信息
- Date: 客户端请求服务端的时间
Response Headers
- Connection: 客户端和服务端保持的连接关系
- Content-Encoding: 服务端压缩编码类型
- Content-Type: 资源类型 application/json;charset=utf-8 ; text/css; application/javascript;
- Content-Length: 压缩数据的长度
- Cache-Control
- Last-Modified: 上次修改时间
- Etag: 上次修改时间
- Access-Control-Allow-Credentials
- Access-Control-Allow-Origin
- Access-Control-Allow-Methids
- Date: 服务端响应时间
2. cookie选项
一文看懂cookie
- Name
- Value
- Domin
- Path
- Expires/MaxAge
- Size
- HttpOnly: 禁止js读取cookie
- Secure: 只有https能携带cookie信息
- SameSite: 禁止跨域,防止
- Priority: 优先级
3.什么是HTTP,HTTPS和HTTP的区别
HTTP协议
超文本传输协议,是实现网络通信的一种规范
- 灵活:支持客户端/服务端模式
- 简单快速:客户端请求服务器时,只需要传送请求方法和路径
- 无连接:每次连接只处理一个请求,随后断开
- 无状态:HTTP请求无法根据以前的状态处理本次请求
HTTPS协议
由于HTTP是以明文的形式进行数据传输,不安全,HTTPS = HTTP + SSL/TLS,让HTTP协议运行在安全的SSL/TLS协议上,通过SSL证书来验证服务器的身份,并为浏览器和服务器之间的通信进行加密
SSL/TLS协议运行在TCP/IP协议和应用层协议之间,浏览器和服务器建立SSL连接时需要选择一组恰当的加密算法来实现安全通信,为数据通信提供安全支持
区别
- http是明文传输不安全
- 默认端口不一样,http是80, https是443
- https需要SSL证书,证书要钱,费用高
4.HTTPS如何保证安全
HTTP协议存在的问题
- 使用明文通信,内容可能被窃听
- 不验证身份,因此可能遭到伪装
HTTPS
使HTTP协议运行在SSL/TSL协议之上,安全性由SST来保证
SSL:Secure Socket Layer 安全套接字协议 TSL: 传输层协议
优势
信息加密、完整性校验、身份验证
实现
SSL的实现主要依赖于以下几种手段
- 对称加密: 采用协商的密钥对数据加密
- 非对称加密: 实现身份认证和密钥协商
- 摘要算法: 验证信息的完整性
- 数字签名: 身份验证
对称加密
加密和解密的密钥是同一个。只要保证了对称密钥是安全的,就可以保证通信安全,而如何保证对方拿到安全的对称密钥,使用到了非对称加密技术。
非对称加密
公钥加密和私钥解密,公钥可公开给任何人使用,私钥保密
混合加密
在HTTPS通信过程中,使用的是对称加密+非对称加密。
发送密文的一方使用对方的公钥进行加密处理“对称的密钥”,这样对方用自己的私钥拿到了对称的密钥,之后就可以通过这个对称的密钥进行加密通信
摘要算法
一种特俗的压缩算法,常说的散列函数、哈希函数,给数据生成了一个数字指纹。发送一段数据的时候,附上她的摘要,对方接收到数据之后进行对比,就知道数据有没有被修改。
数字签名
数字签名可以确定消息是由发送方签名发出来的,因为别人假冒不了发送方的签名。
原理是利用私钥加密,公钥解密。
签名和公钥一样公开。
CA验证机构
引入第三方机构,确保安全性
5.如何理解UDP和TCP, 区别,应用场景
TCP
传输控制协议。
UDP
用户数据包协议,简单的面向数据包的通信协议,即对应用层交下来的报问,不合并,不拆分,只是在上面加了首部之后就交给了下面的网络层。
区别
- 可靠性: TCP可靠(面向连接、不丢失)、UDP不可靠(面向无连接、存在丢失的可能)
- 连接性: TCP面向连接、UDP无连接
- 报文: TCP面向字节流、UDP面向报文
- 双共性: TCP全双工、UDP一对一/一对多/多对多
- 流量控制:TCP滑动窗口、UDP无
- 拥塞控制: TCP慢开始/拥塞避免/快重传、UDP无
- 传输效率: TCP慢、UDP快
应用场景
TCP:邮件、QQ文件传输、浏览器 UDP:QQ语音、QQ视频、直播
6.OSI七层模型
从下往上:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层
TCP/UDP位于传输层
IP位于网络层
7.DNS协议是什么?DNS查询完整过程
DNS
域名系统,是互联网的一项服务, 是进行域名和与之对应的ip地址进行转换的服务器。
域名
域名是具有层次的结构,从上到下分为根域名、顶级域名(net、com、org、edu、cn)、二级域名、三级域名、、、、
www.xxx.com: www为三级域名、xxx为二级域名、com为顶级域名
在域名的每一层都有一个域名服务器,除此之外,还有电脑默认的本地域名服务器
DNS查询方式
-
递归查询
-
迭代查询
域名缓存
两种缓存方式
- 浏览器缓存
- 操作系统缓存(用户自己配置的host文件)
域名解析过程
- 搜索DNS缓存,先浏览器缓存,再操作系统缓存
- 请求本地域名服务器,本地域名符预期递归查询自己的DNS缓存,查找成功则返回结果
- 向上迭代查询,本地域名服务器向根域名服务器发起请求,根服务器返回顶级域名服务器的地址给本地服务器
- 本地服务器向顶级域名服务器发送请求,获取权限服务器的地址
- 本地服务器向权限服务器发送请求,获得最终的IP地址
- 本地服务器拿到IP地址,返回给操作系统,同时将自己的IP地址缓存
- 操作系统将IP地址返回给浏览器,同时缓存
- 浏览器获得IP地址,缓存
8.CDN
内容分发网络。构建在现有的网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。
关键技术
- 负载均衡
- 缓存技术
原理分析
没有应用CDN之前,DNS查询返回的是目标服务器的IP地址
应用CDN之后,DNS查询返回的是一个CNAME(Cannonical Name)别名记录,指向CDN的全局负载均衡
CNAME在域名解析中承担了中间人的角色,是实现CDN的关键
负载均衡系统
由于没有返回IP地址,于是本地DNS会向负载均衡系统发送请求,全局负载均衡系统进行智能调度
- 根据用户的IP地址,查表得知地理位置,找到最近的边缘节点
- 看用户所在的运营商网络,找到相同网络的边缘节点
- 检查边缘节点的负载情况,找负载较轻的节点
综合找到最合适的边缘节点,把这个节点返回给用户,用户就能就近访问CDN的缓存
缓存代理
缓存系统可以划分层次,分为一级缓存节点、二级缓存节点。一级缓存节点配置高一些,直连源站;二级缓存节点配置低一些,直连用户。
回源的时候二级缓存只找一级缓存,一级缓存没有才回源站,可以有效的减少真正的回源。
CDN服务质量指标
- 回源率
- 命中率
9. HTTP1.0/1.1/2.0的区别
HTTP1.0
- 无连接、无状态(每次请求与服务器建立一个TCP连接,请求结束后关闭)
- 只支持GET、POST请求
HTTP1.1
- 默认支持长连接(Connection: Keep-Alive)(一个TCP连接上可以传送多个HTTP请求和响应)
- 允许客户端一个请求未完成就发送下一个请求,但是服务端必须按照客户端请求的顺序先后返回结果
- 增加了更多的请求头和响应头(Last-Modified、If-Modified-Since、Etag、If-None-Match等缓存头来控制缓存策略)
- 引入range,允许请求资源的某一部分
- 引入host,虚拟主机
- 增加了put、delete、option请求
HTTP2.0
- 多路复用
HTTP1.1,一个TCP链接上发送多个请求,有先后顺序规定。但是HTTP2.0,在一个TCP连接里,客户端和服务器都可以发送请求,而且不要求按照顺序,避免了“对头堵塞”
- 二进制分帧
帧是HTTP2.0中最小的通信单位。HTTP2.0才用二进制格式传输数据,非1.x的文本格式,解析起来更高校
- 首部压缩
减少冗余数据,传输体积减少,降低开销
- 服务器推送
允许服务器向客户端推送消息
10.HTTP状态码
- 100: 用于POST大数据传输,在传输之前先征询服务器情况,是否处理POST数据
- 200: 成功
- 206: 断点续传,视频大文件的加载
- 301: 永久重定向 (常用于新旧域名替换)
- 302: 临时重定向 (常用于未登陆页面重新定向到登陆页面)
- 304:协商缓存 (告诉客户端直接使用缓存中的数据,只返回头部信息,没有内容)
- 400: 参数错误,服务端无法识别
- 401: 未登录
- 403: 禁止访问 (比如只有内网能访问的一些资源)
- 404: 资源路径错误
- 503: 服务器停机维护,使用503响应请求
- 504: 网关超时
11.GET和POST请求
- 请求资源的形式: GET获取资源、POST提交资源
- 携带参数: GET在url上、POST在body中
- 参数大小限制: GET 2kb 、 POST无限制
- 安全性: POST比GET更安全,因为数据在地址栏不可见(但是从传输角度来说,明文传输都不安全)
12.TCP为什么需要三次握手和四次挥手
三次握手
建立一个TCP连接,需要客户端和服务器总共发送3个包
作用是确认双方的接收和发送能力是否正常,指定自己的初始化序列号为后面的可靠性传输做准备
第一次握手: 客户端发送一个SYN报文,并指明客户端的初始化序列号ISN
第二次握手: 服务端役自己的SYN报文应答,为了确认客户端的SYN报文,将客户端的ISN + 1 作为ACK的值
第三次握手:客户端发送ACK报文,值为服务器的ISN + 1
四次挥手
第一次挥手: 客户端发送一个FIN报文,报文中制定一个序列号
第二次挥手: 服务端接收到FIN报文,发送ACK报文,值为客户端序列号+1
第三次挥手:如果服务器也想断开连接,会向客户端发送一个FIN报文,指定一个序列号
第四次挥手: 客户端发送ACK报文应答,值为服务端序列号+1
13. WebSocket的理解
是一种网络协议,应用层协议。可在单个TCP连接上进行全双工通信,能够更好的节省服务器资源和带宽并达到实时通讯
客户端和服务端只需要完成一次握手,就可以建立持久性的通信,并进行双向数据传输
websocket之前实现实时通讯的方式为轮询
引入ws和wss分别代表明文和密文的websocket协议,且默认端口使用80或443,几乎与http一致
优点
相较于HTTP: 更强的实时性、保持连接的状态(不用每次带身份信息)、较小的开销(数据包头部协议较小)
应用场景
- 弹幕
- 媒体聊天
- 体育实况更新
- 股票基金报价的实时更新
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!