当在浏览器地址栏输入一个URL按回车键后发生了什么

HTTP工作原理
HTTP协议定义Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL、协议版本、请求头部和请求数据。服务器以一个状态行作为响应,响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据
HTTP 请求/响应的步骤:

  1. 客户端连接到Web服务器
    一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接。例如,http://www.luffycity.com。
  2. 发送HTTP请求
    通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成。
  3. 服务器接受请求并返回HTTP响应
    Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据4部分组成。
  4. 释放连接TCP连接
    若connection 模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;
  5. 客户端浏览器解析HTML内容
    客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。

在浏览器地址栏键入URL,按下回车之后会经历以下流程

  • 浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址;
  • 解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立TCP连接;
  • 浏览器发出读取文件(URL 中域名后面部分对应的文件)的HTTP 请求,该 请求报文作为 TCP 三次握手的第三个报文的数据发送给服务器;
  • 服务器对浏览器请求作出响应,并把对应的 html 文本发送给浏览器;
  • 释放 TCP连接;
  • 浏览器将该 html 文本并显示内容;  
    一.浏览器解析出url中的域名
    URL由通信协议+域名地址+端口号+资源路径组成,浏览器需要从url中解析要请求的域名
    网站的URL会分为两部分:通信协议和域名地址。
    域名地址都很好理解,不同的域名地址表示网站中不同的页面。而通信协议,简单来说就是浏览器和服务器之间沟通的语言。网站中的通信协议一般就是HTTP协议和HTTPS协议。
    二.DNS解析
    找到域名对应的IP地址,该过程分为如下10步:
    1.查询浏览器的DNS缓存
    2.若浏览器缓存中未找到该域名对应的ip,则查找操作系统的DNS缓存,即hosts文件中的域名与ip的映射关系
    3.若在操作系统缓存中也没有找到,则查找本地DNS服务器缓存。
    4.若本地DNS缓存中仍然没有找到,则直接请求Root Server域名服务器
    5.根域名服务器返回给本地服务器一个所查询域的主域名服务器(gTLD Server)地址,gTLD是顶级域名服务器,如.com、.cn、.org等。
    6,.本地域名服务器向上一步返回的gTLD服务器发送解析请求。
    7.gTLD接受请求查找并返回此域名对应的Name Server域名服务器的地址
    8.本地域名服务器向Name Server域名服务器发送解析请求,Name Server域名服务器找到该域名对应的ip,连同一个TTL值返回给本地域名服务器。
    9.本地域名服务器缓存该域名和ip的对应关系,缓存时间由TTL的值控制
    10.把解析结果返回给用户,用户根据TTL值进行缓存。
    三.客户端与服务器建立TCP连接
    通过三次握手,建立了客户端和服务器之间的连接,首先是客户端向服务器发送请求是否可以建立链接,服务器返回同意后,客户端回馈服务器的响应,即完成3次通话。
    四.浏览器与服务器进行数据传输
    浏览器向服务器发送http的请求报文,浏览器从服务器读取响应报文,然后浏览器关闭连接。
    五.浏览器渲染页面
    客户端拿到服务器端传输来的文件,找到HTML和MIME文件,通过MIME文件,浏览器知道要用页面渲染引擎来处理HTML文件。
    1.浏览器会解析html源码,然后创建一个 DOM树。
    在DOM树中,每一个HTML标签都有一个对应的节点,并且每一个文本也都会有一个对应的文本节点。
    2.浏览器解析CSS代码,计算出最终的样式数据,形成css对象模型CSSOM。
    首先会忽略非法的CSS代码,之后按照浏览器默认设置——用户设置——外链样式——内联样式——HTML中的style样式顺序进行渲染。
    3.利用DOM和CSSOM构建一个渲染树(rendering tree)。
    渲染树和DOM树有点像,但是是有区别的。
    DOM树完全和html标签一一对应,但是渲染树会忽略掉不需要渲染的元素,比如head、display:none的元素等。
    而且一大段文本中的每一个行在渲染树中都是独立的一个节点。
    渲染树中的每一个节点都存储有对应的css属性。
    4.浏览器就根据渲染树直接把页面绘制到屏幕上。

参考:https://www.cnblogs.com/an-wen/p/11180076.html
https://blog.csdn.net/weixin_43814020/article/details/104215281

当用户在浏览器地址栏输入内容并按下回车键时,浏览器会经历以下步骤来打开网页: 1. 解析URL浏览器会解析用户输入URL(统一资源定位符),URL包含了要访问的网页的地址和其他参数。 2. DNS解析:浏览器会向域名系统(DNS)服务器发送一个请求,以获取输入URL中所包含的网址的IP地址。DNS服务器将返回对应的IP地址,使得浏览器能够与服务器建立连接。 3. 建立连接:浏览器使用HTTP或HTTPS协议与服务器建立连接。对于HTTPS协议,还会进行SSL/TLS握手过程来建立安全连接。 4. 发送请求:浏览器会向服务器发送一个HTTP请求,其中包含了用户请求的网页和其他相关信息,如请求方法(GET、POST等)和请求头部(包含浏览器的信息、支持的数据格式等)。 5. 服务器处理请求:服务器接收到浏览器发送的请求后,会根据请求的内容进行处理。这可能包括读取数据库、执行动态代码等操作。 6. 响应生成:服务器处理完成后,会生成一个HTTP响应。响应中包含了网页的内容、状态码(表示请求成功或失败的数字代码)和其他相关信息。 7. 接收响应:浏览器接收到服务器发送的HTTP响应后,会开始解析响应。浏览器会根据响应头部的信息来判断如何处理响应内容。 8. 渲染页面:如果响应中的状态码表示成功(例如200),浏览器会开始渲染页面。它会解析HTML、CSS和JavaScript代码,构建DOM树和渲染树,并将网页内容显示在浏览器窗口中。 9. 下载资源:在渲染页面的过程中,浏览器可能会发现页面中引用了其他资源,如图像、样式表、脚本文件等。浏览器会发送请求来下载这些资源,并将其添加到页面中。 10. 执行脚本:如果页面包含了JavaScript代码,浏览器会执行这些脚本,以实现交互和动态效果。 11. 网页加载完成:当所有的资源都被下载并且页面完成渲染时,浏览器会触发页面加载完成的事件。 这是一个简要的描述,实际上,浏览器的工作过程还涉及到缓存机制、安全策略、优化算法等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值