面试官问我:从地址栏输入URL到显示页面都发生了什么?(建议收藏)_从输入地址到页面显示发生了什么web面试

本文详细描述了从DNS解析获取IP地址,通过TCP连接建立,再到HTTP请求与响应的过程,包括DNS服务器的响应、TCP三次握手、HTTP协议的应用以及浏览器渲染等步骤。强调了持续学习和技术提升的重要性。
摘要由CSDN通过智能技术生成

在这里插入图片描述
得知目标IP地址之后,DNS服务器会给用户PC发送DNS的响应报文,其内容为域名www.porttest.com 所对应的IP地址是192.168.0.3。

DNS响应报文需要使用运输层的UDP协议封装成UDP用户数据报,其首部中的原端口字段的值设置为熟知端口号53,表明这是DNS 服务器端进程所发送的UDP 用户数据报,目的端口字段的值设置为49152,这是之前用户PC中发送DNS查询请求报文的DNS客户端进程所使用的短暂端口号。

在这里插入图片描述

DNS 服务器之后将UDP用户数据报封装在IP 数据报中,通过以太网发送给用户PC。

在这里插入图片描述

用户PC收到该数据报后,从中解封出UDP用户数据报。UDP首部中的目的端口号为49452,这表明应将该UDP用户数据报的数据载荷部分,也就是DNS的响应报文交付给用户PC中的DNS客户端进程。DNS客户端进程解析DNS响应报文的内容,就可知道自己之前所请求的外部服务器的域名所对应的IP地址为192.168.0.3。

在这里插入图片描述

2、TCP连接

用户PC的浏览器通过 DNS 获取到 Web 服务器真正的 IP 地址后,便向 Web 服务器发起 TCP 连接请求,通过 TCP 三次握手建立好连接后,浏览器便可以将 HTTP 请求数据发送给Web服务器了。

在这里插入图片描述

3、发起HTTP请求

现在用户PC中的HTTP客户端进程可以向Web服务器发送HTTP请求报文了。其内容为首页内容是什么? HTTP请求报文需要使用运输层的TCP协议封装成TCP报文段,其首部中的源端口字段的值在短暂端口号49151~65535中挑选一个未被占用的用来表示HTTP客户端进程。

例如:源端口仍然使用之前用过的49152,目的端口字段的值设置为80,这是HTTP服务器端进程所使用的熟知端口号,之后将TCP报文段封装在数据报中,通过以太网发送给Web服务器。

在这里插入图片描述

4、处理请求

Web服务器收到该数据报后,从中解封出TCP报文段,TCP 首部中的目的端口号为80,,这表明应该将该TCP报文段的数据载荷部分,也就是HTTP请求报文交付给本服务器中的HTTP 服务器端进程。

HTTP服务器端进程解析HTTP请求报文的内容,然后按其要求查找首页内容,之后会给用户PC发送HTTP响应报文,其内容是HTTP 客户端所请求的首页内容。

HTTP 响应报文需要使用运输层的TCP协议封装成TCP报文段,其首部中的源端口号字段的值设置为熟知端口号80,表明这是HTTP服务器端进程所发送的TCP报文段,目的端口字段的值设置为49152,这是之前用户PC中发送HTTP 请求报文的HTTP客户端进程所使用的短暂端口号。

在这里插入图片描述

之后Web服务器将TCP报文段封装在IP数据报文中,通过以太网发送给用户PC。
在这里插入图片描述

5、浏览器渲染

用户PC收到该数据报后,从中解封出TCP报文段。TCP首部中的目的端口号为49152,,这表明应该将该TCP报文段的数据载荷部分,也就是HTTP响应报文交付给用户PC中的HTTP客户端进程,HTTP 客户端进程解析HTTP响应报文的内容,并在网页浏览器中进行显示。

在这里插入图片描述

6、TCP连接断开

最后客户端和服务器通过四次挥手终止 TCP 连接。

在这里插入图片描述

7、总结

我们将上述过程总结成流程图,如下如所示:

文字总结:

DNS 解析:当用户输入一个网址并按下回车键的时候,浏览器获得一个域名,而在实际通信过程中,我们需要的是一个 IP 地址,因此我们需要先把域名转换成相应 IP 地址。

TCP 连接:浏览器通过 DNS 获取到 Web 服务器真正的 IP 地址后,便向 Web 服务器发起 TCP 连接请求,通过 TCP 三次握手建立好连接后,浏览器便可以将 HTTP 请求数据发送给服务器了。

发送 HTTP 请求:浏览器向 Web 服务器发起一个 HTTP 请求,HTTP 协议是建立在 TCP 协议之上的应用层协议,其本质是在建立起的TCP连接中,按照HTTP协议标准发送一个索要网页的请求。在这一过程中,会涉及到负载均衡等操作。

处理请求并返回:服务器获取到客户端的 HTTP 请求后,会根据 HTTP 请求中的内容来决定如何获取相应的文件,并将文件发送给浏览器。

浏览器渲染:浏览器根据响应开始显示页面,首先解析 HTML 文件构建 DOM 树,然后解析 CSS 文件构建渲染树,等到渲染树构建完成后,浏览器开始布局渲染树并将其绘制到屏幕上。

断开连接:客户端和服务器通过四次挥手终止 TCP 连接。


在这里插入图片描述

写在最后

在结束之际,我想重申的是,学习并非如攀登险峻高峰,而是如滴水穿石般的持久累积。尤其当我们步入工作岗位之后,持之以恒的学习变得愈发不易,如同在茫茫大海中独自划舟,稍有松懈便可能被巨浪吞噬。然而,对于我们程序员而言,学习是生存之本,是我们在激烈市场竞争中立于不败之地的关键。一旦停止学习,我们便如同逆水行舟,不进则退,终将被时代的洪流所淘汰。因此,不断汲取新知识,不仅是对自己的提升,更是对自己的一份珍贵投资。让我们不断磨砺自己,与时代共同进步,书写属于我们的辉煌篇章。

需要完整版PDF学习资源私我

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以点击这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值