HTTP缓存有什么好处?
缓存是一种保存资源副本并在下次请求时直接使用该副本的技术。当 web 缓存发现请求的资源已经被存储,它会拦截请求,返回该资源的拷贝,而不会去源服务器重新下载。这样带来的好处有:缓解服务器端压力,提升性能(获取资源的耗时更短了)。
HTTP & HTTPS区别?
HTTP使用明文传输,无加密,使用80端口;HTTPS也是HTTP协议,使用了TLS/SSL加密。
SSL工作流程:
1. 协商加密算法
2. 服务器鉴别
3. 会话密钥计算
4. 安全数据传输
TCP是什么,握手与挥手过程?
运输层的传输控制协议,面向连接的,有两个端点,通过socker连接,可靠交付, 全双工通信,面向字节流。
关注同步位和确认位置1,序号,确认号,AB状态变化:
三报文握手:
四挥手释放:
第二次挥手后,TCP 连接处于半关闭(half-dose)状态,B 可以向A传输数据
HTTP是长连接还是短连接?
http1.0:
1. 客户端发出的报文header有“Connection:keep-alive”的请求。
2. 服务器接收后发现要求长连接,就在response的header中增加“Connection:keep-alive”,且不关闭连接。
3. 客户端收到服务端的response后,发现其中包含”Connection:keep-alive“,确认是一个长连接,不关闭这个连接。并用该连接再发送request。
4. 转到第一步,循环
http1.1:
1. 客户端直接发送http1.1,服务器自动判定为长连接,在response的header中增加“Connection:keep-alive”,且不关闭连接。
2. 客户端发现response中header有Connection:keep-alive,继续用这个连接发送请求。
4. 转到第一步,循环
服务器推送怎么实现?
这种技术是将所有的工作都交给服务器。服务器不断地运行与动态文档相 关联的应 用程序,定期更新信息,并发送更新过的文档。
TCP/UDP/HTTP区别?
UDP用户数据报协议:
1. 无连接
2. 不可靠连接,尽最大努力交付
3. 面向报文
4. 没有拥堵控制
TCP传输控制协议:
1. 面向连接
2. 通过套接字的点对点连接
3. 可靠连接,有握手和挥手
4. 使用无结构字节流
HTTP超文本传输协议:
1. HTTP位于运输层上面的应用层,TCP、UDP都处于运输层
2. HTTP使用TCP连接
HTTP状态码?
| 序号 | 意义 | 说明 |
|---|---|---|
| 1xx | 通知信息 | 表示请求收到了或正在处理 |
| 2xx | 成功 | 表示接受或知道了 |
| 3xx | 重定向 | 表示完成请求还要采取必须的行动 |
| 4xx | 客户端错误 | 表示语法错误、不能完成 |
| 5xx | 服务器错误 | 表示服务器失效 |
抓包工具,怎么抓包HTTPS?
Charles 伪装为CA,Charles 通过自己的 CA 签名了一个自己的公钥,发送给客户端,客户端就误以为是服务器了,这样之后的流程都会先走到 Charles 然后才会走到目标服务器。
TCP滑动窗口?
作用:确保可靠传输
1. A->B发送报文,B返回确认,说好窗口字节数和确认号。
2. A可以生成下一个窗口值大小窗口,B目标窗口是确认号。A再发送窗口,B返回最高位确认序号。
3. A对最高序号确认,根据确认号向前移动,B也向前移动。
用UDP实现TCP?
就模仿TCP嘛,或者使用RUDP,RTP
1. 增加类似握手挥手过程,添加seq/ack机制
2. 增加发送接收缓存
3. 超时重传机制
HTTPS公钥暴露怎么办?
公钥本来就是暴露,私钥才要保存好。现在一般使用RSA非堆成算法,私钥不暴露。
HTTP分段上传文件怎么保证正确?
分段就是断点续传。增强校验,比如实现 Last-Modified 来标识文件的最后修改时间,也可以使用 ETag 头来放置文件的唯一标识。
计算机网络有哪几层,分别对应什么协议?
OSI七层,TCP四层,计算机网络五层
IP/TCP传输的都是什么数据?
IP传运输层TCP和UDP传过来的数据
TCP传应用层的HTTP、SMTP、FTP、DNS等的数据
DNS是什么,有什么作用?
域名系统,从域名解析出IP地址
对称/非对称加密?
对称:两边使用一样的密钥,例如AES
非对称:两边不一样密钥,一个公钥,向外公开,一个私钥,要保存好。例如RSA