我的服务开放给用户课程笔记 | 青训营

97 阅读5分钟

问题引入

当我们输入某一个网站域名到加载出来,都经历了什么过程:

1.DNS解析

浏览器首先会将输入的URL发送给DNS服务器,进行域名解析,DNS服务器在缓存中查询到相应的IP,将IP地址返回给浏览器。

注意点

1.如果输入的URL中协议和主机名不合法,会把输入的内容在搜索引擎搜索(这一点可以随便输入一个网址试试)
2.如果两者都没有问题,那么浏览器会继续检查URL中是否有非法的字符,如果有那就进行转义处理。(这里的非法字符包括:“空格#%&{}|^~[]"<>”等)
3.如果在浏览器缓存中没有找到相应的IP地址,浏览器会将请求发送给操作系统,再转发给配置的首页选DNS服务器或者本地DNS缓存器。(根据域名层次结构,如果找不到就向上一级查询)

2.Tcp连接

浏览器与服务器之间建立TCP连接,通过三次握手进行连接的建立。

三次握手

第一次握手(SYN):客户端向服务器发送一个带有SYN标志的连接请求报文段。这个报文段中包含了客户端选择的初始序列号(ISN)。
第二次握手(SYN-ACK):服务器收到客户端的连接请求后,会向客户端回复一个带有SYN和ACK标志的报文段。这个报文段中包含了服务器选择的初始序列号(ISN),以及确认号(ACK)为客户端的ISN加1。
第三次握手(ACK):客户端收到服务器的回复后,会向服务器发送一个带有ACK标志的报文段作为确认。这个报文段中的确认号(ACK)为服务器的ISN加1。\

3.TLS握手(使用HTTPS协议会有)

如果使用了HTTPS协议,在进行通信前就会有TLS四次握手: 第一次握手:客户端向服务器发送一个ClientHello消息(举例),其中包含了支持的TLS版本、加密算法、压缩方法等信息。
第二次握手:服务器收到客户端的ClientHello消息后,会向客户端发送一个ServerHello消息,其中包含了服务器选择的TLS版本、加密算法、压缩方法等信息。服务器还会生成一个随机数作为后续密钥交换的一部分。
第三次握手:服务器向客户端发送一个Certificate消息,其中包含了服务器的数字证书,用于验证服务器的身份和公钥。客户端会对证书进行验证,并生成一个随机数作为后续密钥交换的一部分。
第四次握手:客户端向服务器发送一个ClientKeyExchange消息,其中包含了使用服务器的公钥加密的随机数,用于协商对称密钥。服务器和客户端都会使用各自的随机数和协商的对称密钥生成会话密钥,用于后续的数据加密和解密。

4.HTTP请求

浏览器向服务器发送HTTP请求,格式在上一篇HTTP学习小结中提到过,然后由服务器处理请求,根据内容进行数据库查询,后台逻辑处理等操作,最后服务器将处理结果封装成HTTP响应,回传。

5.渲染

浏览器拿到响应的文本后,解析HTML代码,请求js,css等资源,最后页面渲染

6.Tcp四次挥手

数据传输完成后,就要断开TCP连接,开始发起四次挥手: 1.客户端发送一个请求关闭连接的报文给服务器,这个报文中包含一个Fin标志位,表示客户端没有数据要发送了。客户端进入FIN_WAIT_1状态。
2.服务器收到客户端的关闭请求后,发送一个确认报文给客户端,这个报文中包含一个Ack标志位,表示服务器已经收到了客户端的关闭请求。服务器进入CLOSE_WAIT状态。
3.服务器发送一个请求关闭连接的报文给客户端,这个报文中包含一个Fin标志位,表示服务器没有数据要发送了。服务器进入LAST_ACK状态。
4.客户端收到服务器的关闭请求后,发送一个确认报文给服务器,这个报文中包含一个Ack标志位,表示客户端已经收到了服务器的关闭请求。客户端进入TIME_WAIT状态。
在TIME_WAIT状态,客户端等待一段时间,确保服务器收到了自己的确认报文。等待时间过后,客户端关闭连接,结束TIME_WAIT状态。

注意

这个问题可能会有不同的答案,而且作者给出的流程也不一定完全正确,网络上有很多不同的总结,作者只是参考列举了出来(狗头保命)

杂记

4层负载均衡
基于IP+端口,利用某种算法将报文转发给某个后端服务器,实现负载均衡地落到后端服务器上。其工作在OSI模型地第四层--传输层,常见的四层负载均衡技术包括使用网络地址转换(Network Address Translation,NAT)和使用传输层协议(如传输控制协议,TCP)的负载均衡算法。
七层负载
在应用层(第七层)进行负载均衡的技术。与四层负载均衡不同,七层负载均衡不仅仅关注传输层(第四层)的信息,还会解析应用层协议(如HTTP、HTTPS、SMTP等),并根据应用层的具体内容进行负载均衡的决策。

总结

课程内容的大部分内容我仅仅限于听懂但还不能很好地总结,还要借助各大编程网站的视频和文章理解,也不能做很好的总结,所以这里也没有写出来。