【高频】从输入URL到页面展示到底发生了什么?

news2024/10/6 13:25:36

一、相关衍生面试问题:

浏览器输入美团网站,从回车到浏览器展示经历了哪些过程 ?

http输入网页之后的流程?

百度搜索页面,从点开搜索框,到显示搜索页面经历了什么?

二、探究各个过程:

(以下回答针对问题1回答)

1. DNS 解析

  • 浏览器首先会检查本地 DNS 缓存,看是否有美团网站的 IP 地址。如果没有,则会向本地 DNS 服务器发送请求,查询美团网站的域名对应的 IP 地址。
  • 本地 DNS 服务器可能无法直接找到美团网站的 IP 地址,它会向根域名服务器发送请求,根域名服务器会指引本地 DNS 服务器去查询 .com 域名的顶级域名服务器。
  • 顶级域名服务器会指引本地 DNS 服务器去查询美团网站的域名服务器。
  • 美团网站的域名服务器会最终返回美团网站的 IP 地址给本地 DNS 服务器。
  • 本地 DNS 服务器将 IP 地址返回给浏览器,并将其缓存起来。

【涉及到的相关知识:

1.DNS缓存:存储近期浏览、连接过的网站服务器的IP用的一个缓存系统。浏览器会尽可能利用缓存来提高性能,减少不必要的网络请求和DNS解析。

2.域名服务器:根域名服务器、顶级域名服务器(org\com\edu)、权限域名服务器、本地域名服务器[迭代查询(常用) | | 递归查询]。

3.DNS解析:用来把便于人们记忆的主机域名和电子邮件地址映射为计算机易于识别的IP地址。

2. 建立 TCP 连接

  • 浏览器使用获得的 IP 地址,尝试与美团网站的服务器建立 TCP 连接。
  • 浏览器会发送一个 SYN 包(同步请求)到服务器,服务器收到后会回复一个 SYN-ACK 包(同步确认)。
  • 浏览器收到 SYN-ACK 包后,会发送一个 ACK 包(确认),完成三次握手过程,建立 TCP 连接。

【相关知识点:

1.三次握手的原因:首要原因是为了防止旧的重复连接初始化造成混乱,最主要原因就是防止「历史连接」初始化了连接

2.每次建立 TCP 连接时,初始化的序列号都要求不一样:为了防止历史报文被下一个相同四元组的连接接收(主要方面);为了安全性,防止黑客伪造的相同序列号的 TCP 报文被对方接收。

3.SYN攻击属于DDoS攻击的一种,它利用TCP协议缺陷,通过发送大量的半连接请求,耗费CPU和内存资源。【最直接的表现就会把 TCP 半连接队列打满,这样当 TCP 半连接队列满了,后续再在收到 SYN 报文就会丢弃,导致客户端无法和服务端建立连接。】

  • 半连接队列,也称 SYN 队列;
  • 全连接队列,也称 accept 队列;

4.避免办法:

  • 调大 netdev_max_backlog;
  • 增大 TCP 半连接队列;
  • 开启 tcp_syncookies;
  • 减少 SYN+ACK 重传次数

3. 发送 HTTP 请求

  • 浏览器向美团网站的服务器发送一个 HTTP 请求,包含以下信息:
    • 请求方法:GET
    • 请求 URL:美团网站的首页地址
    • 请求头:包含一些浏览器信息、语言信息、Cookie 信息等。
  • 服务器收到请求后,会根据请求信息进行处理。

【相关知识点:

1.post、get、put、delete就是对这个资源进行增、删、改、查的操作!

2.URI 用字符串标识某一互联网资源【身份证号】,而 URL 表示资源的地点【居住地址】

3.Cookie为“小型文本文件”,是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息

4. 服务器处理请求

  • 服务器会根据请求 URL,找到对应的页面文件。
  • 服务器会根据页面文件的内容,生成 HTML 代码。
  • 服务器会根据请求头中的 Cookie 信息,判断用户是否已登录,并根据用户状态,添加一些个性化的内容到 HTML 代码中。
  • 服务器会根据请求头中的语言信息,选择合适的语言版本。

【相关知识点:

1.跨站请求伪造(Cross-Site Request Forgery,简称CSRF)是指,攻击者可能利用网页中的恶意代码强迫受害者浏览器向被攻击的Web站点发送伪造的请求,篡夺受害者的认证Cookie等身份信息,从而假冒受害者对目标站点执行指定的操作。

2.保护措施主要有:(1 )加入MAC以进行完整性校验;(2)防止非法用户非法截获后的重放,可以让用户对相关信息进行数字签名,加强有效性验证;(3)对Cookie本身进行随机密钥加密,保证Cookie本身的信息安全。

5. 服务器返回响应

  • 服务器将生成的 HTML 代码,以及一些其他信息(例如图片、CSS、JavaScript 文件等),打包成 HTTP 响应,发送回浏览器。
  • 响应头包含一些状态码、内容类型、缓存信息等。

6. 浏览器解析响应

  • 浏览器收到响应后,会解析响应头中的状态码。
    • 如果状态码为 200,表示请求成功,浏览器会继续解析响应内容。
    • 如果状态码为 404,表示页面未找到,浏览器会显示错误页面。
  • 浏览器会解析响应内容中的 HTML 代码,并将其渲染成网页。
  • 浏览器会加载响应内容中的图片、CSS、JavaScript 文件,并将其应用到网页中。

【相关知识点:

  • 1xx(信息性状态码):表示接收的请求正在处理。
  • 2xx(成功状态码):表示请求正常处理完毕。
  • 3xx(重定向状态码):需要后续操作才能完成这一请求。
  • 4xx(客户端错误状态码):表示请求包含语法错误或无法完成。
  • 5xx(服务器错误状态码):服务器在处理请求的过程中发生了错误。

7. 网页展示

  • 浏览器将渲染好的网页展示给用户。

8. 持续交互

  • 用户在网页上进行操作,例如点击链接、提交表单等,浏览器会发送新的 HTTP 请求到服务器,服务器会根据请求进行处理,并返回新的响应,浏览器会继续更新网页内容。

三、面试回答:

  1. 用户在浏览器地址栏输入"meituan.com"并按下回车键。

  2. 浏览器首先会查看自己的缓存,看是否之前已经访问过这个网站并缓存了相关资源。如果缓存中有相关的资源,浏览器就可以直接使用缓存中的内容,无需进行其他操作。

  3. 如果缓存中没有找到所需的资源,浏览器就需要进行DNS解析,查找"meituan.com"对应的IP地址。这个过程中,浏览器会先查看本地DNS缓存,如果没有找到就会向DNS服务器发起查询请求。

  4. 获得IP地址后,浏览器会向该IP地址发起HTTP请求,向web服务器请求获取"meituan.com"网页的内容。

  5. web服务器收到请求后,会处理并生成相应的HTML页面内容,然后将其返回给浏览器。

  6. 浏览器收到HTML页面内容后,会对其进行解析和渲染,构建出网页的DOM树并显示出来。

  7. 在渲染网页的过程中,还可能需要加载额外的资源,如CSS文件、JavaScript文件、图片等。对于这些资源,浏览器也会遵循之前的流程,先检查缓存,再进行DNS解析和网络请求。

  8. 当所有必需的资源都加载完毕后,浏览器就能将完整的网页呈现给用户。

【下图为代码随想录推荐回答:】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1689080.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

起底震网病毒的来龙去脉

2010年,震网病毒被发现,引起世界哗然,在后续的10年间,陆陆续续有更多关于该病毒的背景和细节曝光。今年,《以色列时报》和《荷兰日报》又披露了关于此事件的更多信息,基于这些信息,我们重新梳理…

【数据结构】第七节:堆

个人主页: 深情秋刀鱼-CSDN博客 数据结构专栏:数据结构与算法 源码获取:数据结构: 上传我写的关于数据结构的代码 (gitee.com) ​ 目录 一、堆 1.堆的概念 2.堆的定义 二、堆的实现 1.初始化和销毁 2.插入 向上调整算法 3.删除 向下调整算法…

短剧系统源码解析与应用

在数字化时代,短剧作为一种新兴的娱乐形式,因其内容紧凑、节奏快速而受到广大年轻群体的喜爱。短剧系统源码的开发和应用,不仅为创作者提供了一个展示才华的平台,也为观众带来了全新的观看体验。本文将对短剧系统源码进行解析&…

get和post的区别,二者是幂等的吗?

一、什么是幂等 所谓幂等性通俗的将就是一次请求和多次请求同一个资源产生相同的副作用。 维基百科定义:幂等(idempotent、idempotence)是一个数学与计算机学概念,常见于抽象代数中。 在编程中一个幂等操作的特点是其任意多次执…

win32-鼠标消息、键盘消息、计时器消息、菜单资源

承接前文: win32窗口编程windows 开发基础win32-注册窗口类、创建窗口win32-显示窗口、消息循环、消息队列 本文目录 键盘消息键盘消息的分类WM_CHAR 字符消息 鼠标消息鼠标消息附带信息 定时器消息 WM_TIMER创建销毁定时器 菜单资源资源相关菜单资源使用命令消息的…

人类交互2 听觉处理和语言中枢

人类听觉概述 人类听觉是指通过耳朵接收声音并将其转化为神经信号,从而使我们能够感知和理解声音信息的能力。听觉是人类五种感觉之一,对我们的日常生活和交流至关重要。 听觉是人类交流和沟通的重要工具。通过听觉,我们能够听到他人的语言…

jwtcracker下载安装出现错误

1.jwtcracker 用于爆破jwt秘钥 2.下载 ubuntu/kali安装c-jwt-cracker及使用方法-CSDN博客 参考这个大佬写的 但是我在这里出现了这个问题 显示Cannot initialize the default message digest sha256, aborting 我实在找不出来哪里有问题,所以直接换成docker …

Java并发面试题,多线程通关秘籍

【知识点记录】- 不能不知道的知识点 😄生命不息,写作不止 🔥 继续踏上学习之路,学之分享笔记 👊 总有一天我也能像各位大佬一样 🏆 博客首页 怒放吧德德 To记录领地 🌝分享学习心得&#xf…

Go语言(Golang)的开发框架

在Go语言(Golang)的开发中,有多种开发框架可供选择,它们各自具有不同的特点和优势。以下是一些流行的Go语言开发框架,选择Go语言的开发框架时,需要考虑项目需求、团队熟悉度、社区支持、框架性能和可维护性…

Android 共享内存

Parcelable 和 Serializable 区别 Serializable IO完成(通过磁盘文件读写) Parcelable C 对象指针 来实现共享内存 import android.os.Parcel; import androidx.annotation.NonNull;public class ApiResponseBean extends Throwable implements Parce…

小短片创作-组装场景(一)

1、项目基础设置 通过第三人称模板,创建1个项目 1.自动曝光:关闭,因为要做专业的小短片,曝光需要手动控制。 2.扩展自动曝光中的默认亮度范围:启用 3.全局光照系统:选择屏幕空间光照(SSGI&am…

SpringCloudAlibaba:6.3SpringBoot接入RocketMQ

依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 htt…

vue通过for循环生成input框后双向绑定失效问题

有些时候页面上有太多的表单元素&#xff0c;一个个的写太过繁琐&#xff0c;拿 input 框举例&#xff0c;众多的 input 框&#xff0c;无非就是输入框前的说明和 input 框的 name 属性不一样 <el-form :inline"true" :model"formInline" size"mi…

C语言-atoi()库函数的模拟实现

文章目录 前言一、atoi()库函数的介绍及使用1.1 atoi()库函数介绍1.2 atoi()库函数使用 二、atoi()库函数的模拟实现2.1 函数设计2.2 函数实现思路2.3 具体实现2.4 测试 总结 前言 本篇文章介绍c语言中库函数atoi()的使用&#xff0c;以及模拟实现库函数。 一、atoi()库函数的…

allegro 无法删除Xnet

allegro 无法删除Xnet Orcad中打开Constraint Manager之后&#xff0c;再生成网表&#xff0c;导入PCB后就会出现一堆Xnet网络。无法去除Xnet。 解决办法 在原理图ORCAD中&#xff0c; 1、打开Edit Object properties 2、选择Filter by:Capture 3、点击New Property 4、设置…

开源博客项目Blog .NET Core源码学习(25:App.Hosting项目结构分析-13)

本文学习并分析App.Hosting项目中后台管理页面的文章管理页面。   文章管理页面用于显示、检索、新建、编辑、删除文章数据&#xff0c;以便在前台页面的首页、文章专栏、文章详情页面显示文章数据。文章管理页面附带一新建及编辑页面&#xff0c;以支撑新建和编辑文章数据。…

5月20日分割等和子集+最后一块石头的重量Ⅱ

416.分割等和子集 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集&#xff0c;使得两个子集的元素和相等。 示例 1&#xff1a; 输入&#xff1a;nums [1,5,11,5] 输出&#xff1a;true 解释&#xff1a;数组可以分割成 [1, 5, 5] 和…

Qt moc系统的黑魔法?

Qt的元对象系统&#xff08;Meta-Object System&#xff09;是Qt框架的核心功能之一&#xff0c;为C语言增加了一些动态特性&#xff0c;借助元对象系统Qt可以实现以下功能 信号与槽机制&#xff08;Signals and Slots&#xff09;运行时类型信息&#xff08;Run-Time Type In…

激光雷达和相机外参标定

1、外参标定标定什么&#xff1f; 标定激光雷达和相机之间的相对位置&#xff0c;变换矩阵T 2、原理 通过激光扫描出来的轮廓和相机识别出来的栅格的轮廓进行PNP匹配。 3、论文

IDEA的妙用

IDEA 安装破解 复制JetbrainsIdesCrack-4.2.jar到安装目录下 修改安装目录下的bin目录的idea64.exe.vmoptions&#xff1a; 最后一行添加&#xff1a;-javaagent:E:\develop\JetBrains\IntelliJ IDEA 2018.3.5\bin\JetbrainsIdesCrack-4.2.jar(注意&#xff1a;使用自己的路…