浏览器中输入 Baidu.com 并且按下回车之后发生了什么?
2022/8/29 23:23:01
本文主要是介绍浏览器中输入 Baidu.com 并且按下回车之后发生了什么?,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、客户端做了些什么?
1、解析URL:首先对URL进行解析,分析所需要使用的传输协议和请求的资源的路径。如果输入的URL中的协议或者主机名不合法,会传给搜索引擎。
如果没有问题,浏览器会检查URL中是否出现了非法字符,如果存在,则对非法字符进行转移后进行下一过程。
二、DNS解析:下一步首先需要获取的是输入的URL的域名IP地址,
1、首先会判断本地是否有该域名的IP地址缓存
2、如果有则使用,如果没有则向本地DNS服务器发出请求,本地DNS服务器会检查是否存在缓存。
3、如果没有就向根域名服务器发起请求,获得负责的顶级域名服务器地址后,再向顶级域名服务器请求,然后获得负责的权威域名服务器的地址后。
4、再向权威域名服务器发送请求,最终获得域名的ip地址后,本地服务器将这个IP地址返回给请求的用户。用户向本地DNS服务器发起请求属于递归,本地DNS向各级域名属于顶戴
三、获取MAC地址:当浏览器得到IP以后,数据传输还需要知道目的主机的MAC地址,因为应用层下发数据到传输层,TCP协议会指定源端口和目的端口,
然后下发给网络层。网络层:会将本地地址作为源地址,获取的IP地址作为目的地址。
然后下发给数据链路层,数据链路层的发送需要加入通信双方的MAC地址,本机的MAC地址作为源MAC地址,目的MAC地址分情况创立。
通过将IP地址与本机的子网掩码相与,可以判断是否与请求主机在一个子网中,如果在同一个子网中,可以使用ARP协议获取到目的主机的MAC地址,如果不在一个子网
那么请求转发给网关,由它代为转发(找目的MAC地址),此时同样可以通过ARP协议来获取网关的MAC地址,此时目的主机的MAC地址应该为网关的地址。
四、TCP三次握手:下面是TCP建立连接的三次握手的过程,首先客户端向服务器发送一个SYN连接请求报文段和一个随机序号,服务端接收到请求后向服务端发送一个SYN ACK报文段
确认连接请求,并且向客户端发送一个随机序号。客户端接收服务器的确认应答后,进入连接建立状态,同时向服务器也发送一个ACK确认报文段,服务器端接收到确认后,也进入了连接建立状态。
五、HTTPS握手:如果使用HTTPS协议,在通信前还存在还存在TLS的一个四次握手。首先由客户端向服务端发送使用的协议版本号、一个随机数和key使用的加密方法。服务端收到后
确认加密方法,也向服务端发送协议版本号、一个随机数和key使用的加密方法。服务端收到后,确认加密方法,也向客户端发送一个随机数和自己的数字证书。客户端收到后,首先检查数字
证书是否有效,如果有效,则生成一个随机数,并使用证书中的公钥对对随机数加密,然后发送给服务端,并且还会提供给一个签名所有内容的hash值供服务端检查验。服务端接收后,使用自己的
私钥解密,同时向客户端发送一个签名所有内容的hash值供客户端检验,这个时候是双方都有了三个随机数,按照之前所约定的加密方式,使用三个随机数生成一把秘钥,以后双方通信就靠这个秘钥对数据加密后传输。
六、返回数据:当页面请求发送到服务端后,服务端会返回一个html文件作为响应,浏览器收到后解析html
七、页面渲染:浏览器建立DOM树、CSSOM树
八、TCP四次挥手。
这篇关于浏览器中输入 Baidu.com 并且按下回车之后发生了什么?的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-09flutter3.x_macos桌面os实战
- 2024-05-09Rust中的并发性:Sync 和 Send Traits
- 2024-05-08使用Ollama和OpenWebUI在CPU上玩转Meta Llama3-8B
- 2024-05-08完工标准(DoD)与验收条件(AC)究竟有什么不同?
- 2024-05-084万 star 的 NocoDB 在 sealos 上一键起,轻松把数据库编程智能表格
- 2024-05-08Mac 版Stable Diffusion WebUI的安装
- 2024-05-08解锁CodeGeeX智能问答中3项独有的隐藏技能
- 2024-05-08RAG算法优化+新增代码仓库支持,CodeGeeX的@repo功能效果提升
- 2024-05-08代码报错不用愁,CodeGeeX一键完成代码修复、错误解释的功能上线了!
- 2024-05-08今天开始程序员不用再发愁写commit message了,全部由CodeGeeX自动完成!