1.简述https建立连接的过程
-
1.client浏览器发出安全请求(https前缀url)
-
2.server返回数字证书(包含server的publicKey)
-
3.client使用预置CA列表验证证书,如果有问题则提示风险
-
4.client生成随机对称密钥,用server的publicKey加密
-
5.server用自己的privateKey解密,得到对称密钥
-
6.双方都使用对称密钥加密通信
-
数字证书的原理:
(1){RSA(hash(message))+message} (message中包含publicKey)(前半部分为数字签名sign)
(2)比对reRSA(sign) == hash(message)
(3)reRSA使用CA的公钥来解密
2.cookie—session—token
- 目的:解决http无连接的问题,提供连接中继;安全性
- cookie:缓存http登录信息等,保存在客户端,client与服务端通信时服务端根据cookie解析出数据(有失效期)
- session:服务端分配给客户端,客户端通信时加上session,服务端比对自己存储的session,一致则认为是同一请求—session需要集中存储(存储在服务端或者分布式缓存)(一般会把sessionId放在cookie中,client取出sessionId然后请求服务器获取session)
- token:server给client分配token,接收请求时根据token用密钥生成签名,与token中的签名比对即可—不要专门存储token,每次使用算法计算
对于一个分布式集群,如何保存session?
- 使用分布式存储专门保存
3. 简述TCP建立连接和关闭连接的过程
- 建立连接-3次握手:(seq=x ===> A与B可以连接上)(seq=y,ACK=x+1 ===>B确认接收并且获取传输序列号)(ACK=y+1 ===> A确认接收并且获取传输序列号)
- 只有AB双方都确认接收并获取到传输序列号,才能实现双方可靠的收发数据,所以需要3次握手
- 断开连接-4次挥手:(fin=x ===> A对B说没有数据可发送了,之后A进入FIN_WAIT_1状态)(ACK=x+1 ===> B同意A的请求)(fin=y ===> B向A请求关闭连接,之后B进入LAST_ACK状态)(ACK=y+1 ===> A回复B可以关闭,之后A进入TIME_WAIT状态,B立即关闭连接,A再等2MSL后如果没有回复再关闭连接)
- 为什么需要4次:除了确保连接关闭之外,还要确保数据传输完结,所以增加了一次握手,TCP全双工工作模式决定的。
4. 简述http状态码
- 1XX:接收的请求正在处理
- 2XX:处理成功
- 3XX:需要进行附加操作来完成请求(重定向)
- 4XX:服务器无法处理请求(401-请求需要认证 403-请求被服务器拒绝–权限出问题 404-找不到资源)
- 5XX:服务器错误(500-服务器处理出错 503–服务器正忙,如负载高等)
5.http的连接是持久连接吗?是有状态的吗?
- http1.1默认采用持久连接,只要任意一方没有提出断开,就保持TCP连接
- http是无状态的,为了保存状态,会使用cooki和session来实现
6.当你用浏览器打开一个链接的时候,计算机做了哪些工作步骤。
- Dns解析(域名-IP)->IP寻址(NAT,负载均衡) –>tcp连接(三次握手)–>服务器处理请求–>服务器返回响应(分布式缓存)–>浏览器解析(静态资源存储在CDN)—>链接关闭(四次挥手)
DNS域名解析的大体过程是什么样的?
- (1)查找浏览器是否有缓存(是否失效)
- (2)查找操作系统是否有缓存(如hosts文件)
- (3)查找本地区域名服务器(LDNS)是否有缓存
- (4)LDNS查询RootServer请求解析,RootServer返回域名对应的主域名服务器
- (5)LDNS请求主域名服务器,获取域名对应的NameServer,NameServer查到映射关系和TTL
- (6)LDNS缓存获取的映射数据,然后把解析结果返回给用户