在一个HTTPS连接的网络中,输入账号和密码并单击登陆按钮后,到服务器返回这个请求前,这期间经历了什么?
答:具体经历了一下8步:
- 客户端打包请求。其中包括URL、端口、账号和密码等。使用账号和密码登陆应该用的是POST方式,所以相关的用户信息会被加载到body中。这个请求应该包含3个方面:网络地址、协议和资源路径。注意:这里用的是HTTPS,即HTTP+SSL/TLS,在HTTP上又加了一层处理加密信息的模块(相当于加了一个锁)。这个过程相当于客户端请求钥匙。
- 服务器端接受请求。一般客户端的请求会先被发送到DNS服务器中。DNS服务器负责将网络地址解析成IP地址,这个IP地址对应网上的一台计算机。这其中可能发生Hosts Hijack和ISP failure的问题。过了DNS这一关,信息就到服务器端,此时客户端和服务端的端口之间会建立一个socket连接。socket一般都是以file descriptor的方式解析请求的。这个过程相当于服务器端分析是否要想客户端发送钥匙模板。
- 服务器端返回数字证书。服务器端会有一套数字证书(相当于一个钥匙模板),这个证书会先被发送个客户端。这个过程相当于服务端向可独断发送钥匙模板。
- 客户端生成加密信息。根据收到的数字证书(钥匙模板),客户端就会生成钥匙,并把内容锁起来,此时信息已经被加密。这个过程相当于客户端生成钥匙并锁上请求。
- 客户端方发送加密信息。服务器端会收到由自己发送的数字证书加密的信息。这个时候生成的钥匙也一并被发送到服务端。这个过程相当于客户端发送请求。
- 服务端解锁加密信息。服务端收到加密信息后,会根据得到的钥匙进行解密,并把要返回的数据进行对称加密。这个过程相当于服务器端解锁请求,生成、加锁回应信息。
- 服务器端向客户端返回信息。客户端会收到相应的加密信息。这个过程相当于服务器端向客户端发送回应信息。
- 客户端解锁返回信息。客户端会用刚刚生成的钥匙进行解密,将内容显示在浏览器上。