HTTP缓存有什么好处?
缓存是一种保存资源副本并在下次请求时直接使用该副本的技术。当 web 缓存发现请求的资源已经被存储,它会拦截请求,返回该资源的拷贝,而不会去源服务器重新下载。这样带来的好处有:缓解服务器端压力,提升性能(获取资源的耗时更短了)。
HTTP & HTTPS区别?
HTTP使用明文传输,无加密,使用80端口;HTTPS也是HTTP协议,使用了TLS/SSL加密。
SSL工作流程:
1. 协商加密算法
2. 服务器鉴别
3. 会话密钥计算
4. 安全数据传输
TCP是什么,握手与挥手过程?
关注同步位和确认位置1,序号,确认号,AB状态变化:
三报文握手:Bob 给 Alice 的 ACK ,可以和 Bob 向 Alice 发起的 SYN 合并,称为一条 SYN-ACK 消息。TCP 协议以此来减少握手的次数,减少数据的传输,于是 TCP 就变成了三次握手。
四挥手释放:第 2 步和 第 3 步在挥手的过程中不能合并为 FIN-ACK。原因是在挥手的过程中,Alice 和 Bob 都可能有未完成的工作。比如对 Bob 而言,可能还存在之前发给 Alice 但是还没有收到 ACK 的请求。
第二次挥手后,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区别?
UDP用户数据报协议:
1. 无连接
2. 不可靠连接,尽最大努力交付
3. 没有拥堵控制
TCP传输控制协议:
1. 通过套接字的点对点连接
2. 可靠连接,有握手和挥手
3.有拥堵控制
HTTP状态码?
序号 | 意义 | 说明 |
---|---|---|
1xx | 通知信息 | 表示请求收到了或正在处理 |
2xx | 成功 | 表示接受或知道了 |
3xx | 重定向 | 表示完成请求还要采取必须的行动 |
4xx | 客户端错误 | 表示语法错误、不能完成 |
5xx | 服务器错误 | 表示服务器失效 |
抓包工具,怎么抓包HTTPS?
Charles 伪装为CA,Charles 通过自己的 CA 签名了一个自己的公钥,发送给客户端,客户端就误以为是服务器了,这样之后的流程都会先走到 Charles 然后才会走到目标服务器。
用UDP实现TCP?
模仿TCP,或者使用RUDP,RTP
1. 增加类似握手挥手过程,添加seq/ack机制
2. 增加发送接收缓存
3. 超时重传机制
HTTP分段上传文件怎么保证正确?
分段就是断点续传。增强校验,比如实现 Last-Modified 来标识文件的最后修改时间,也可以使用 ETag 头来放置文件的唯一标识。
计算机网络有哪几层,分别对应什么协议?
计算机网络五层
IP/TCP传输的都是什么数据?
IP传运输层TCP和UDP传过来的数据
TCP传应用层的HTTP、SMTP、FTP、DNS等的数据
DNS是什么,有什么作用?
域名系统,从域名解析出IP地址
对称/非对称加密?
对称:两边使用一样的密钥,例如AES
非对称:两边不一样密钥,一个公钥,向外公开,一个私钥,要保存好。例如RSA