有些英文单词加上翻译更好理解,翻译的在()里。
应用层-规定传输协议 传输层-tcp还是udp 网络层-规定ip协议数据传输路线 链路层-物理硬件部分
tcp udp 的区别:
-
tcp是需要三次握手四次挥手,会重传,所以慢,udp快,无状态,udp不保证数据连贯性 -
udp常用语上传文件或者音视频直播等
三次握手:
-
客户端向服务端提出想请求接口的意向 syn = x -
服务端接受到客户端意向 返回 ack = x+1 syn = y -
客户端收到服务端的响应向服务端发送ack = y+1
三次握手的意思是互相确认是否可以发起响应 syn ack的意义是用来做唯一标识的,确保连接一对一
四次挥手:服务端客户端分别断开连接并确认。完成以后客户端会等一个来回的时间确认没有丢包。
-
客户端想断开连接 seq = x -
服务端确认 ack = x -
服务端断开连接 seq = y -
客户端确认 ack = y+1
https中的s就是ssl/TLS: 其实是一个东西,tls是ssl的升级版,是https的特性,目的是保证数据的加密性。 是在应用层之下,传输层之上 了解对称加密算法:
-
原理是相同为0 不同为1 -
通过数据转成二进制,加密算法也是二进制,然后一一对比,比如: -
数据: 0010101 -
对称加密算法: 1010010 -
加密以后的数据就是: 1000111
非对称加密算法常见的有md5,通过函数及特定参数把一个字节转成4位数字的算法,具体不太了解
了解了加密算法后再了解tls,原理是通过证书的公钥私钥加密密钥
-
客户端把公钥及私钥(随机数)发送给服务端,服务端用私钥加密数据(比如对称加密),客户端用公钥解密私钥再解密数据 大致理念就是这样
http1.0 和 1.1 的区别:加了缓存跟长连接
-
缓存方式: 强缓存 > 协商缓存
强缓存:不过服务器,直接从磁盘中拿,返回200 from cache 通过设置请求头的Cache-Control来实现:以下列举Cache-Control的值
-
private(私有的):客户端可以缓存 -
public(公共的) :客户端和代理服务器均可缓存 - max-age=xxx(最大存储时间):缓存的资源将在 xxx 秒后过期 协商缓存:第一次请求时会服务端会返回一个缓存标识,第二次请求时会把缓存标识带着,根据这个标识判断服务端资源是否有更新,如果没有更新就用之前的数据。返回304 用本地缓存
-
通过设置请求头的Cache-Control来实现:以下列举Cache-Control的值
-
etag:文件唯一标识,服务端文件有更改,唯一标识也会跟着变动,如果与客户端不匹配会重新请求 - last-modified:文件最后修改时间,通过判断时间来确认缓存的文件是否是最新的
长连接的概念,Connection(连接,关系)为 keep-alive,就是之前每次请求都需要三次握手四次挥手,长连接可以在三次握手四次挥手之后一直发送请求,减少三四的次数。谷歌浏览器最多可以6个长连接。接口在长连接的样子类似于电线杆上的鸟,若干个请求排队串行化单线程处理,后面的请求等待前面请求的返回才能获得执行机会,一旦有某请求超时等,后续请求只能被阻塞
http1.1 和 2.0 的区别:多路复用,头部压缩,服务端推送, 多路复用和长连接的区别: 长连接会阻塞,多路复用不用等待前面的返回结果,状态是并行的,所以不会阻塞。 头部压缩:把头部信息映射成一个数字id的表 服务端推送:会把请求相关联的内容一起返回,比如请求一个html会把对应的css文件也返回