浏览器输入url后发生了什么?

2023-11-07

在浏览器输入url后会发生的过程:

1.DNS对域名进行解析;
2.建立TCP连接(三次握手);
3.发送HTTP请求;
4.服务器处理请求;
5.返回响应结果;
6.关闭TCP连接(四次挥手);
7.浏览器解析HTML;
8.浏览器布局渲染;

1.浏览器对输入的地址补全,然后DNS域名解析

 如果你搜索的是baidu.com的时候,实际访问的还是http://www.baidu.com,浏览器会将你没输入全的地址进行补充。

2、找到服务器地址,建立TCP连接(三次握手)

这里举个简单例子来了解什么是三次握手;

我(用户)去银行取钱,对银行的工作人员(服务器)说我要取一个亿(发送一个SYN),工作人员会说确定吗(这里接收到了请求,并且返回一个ACK+SYN),之后我(用户)就会说确定(接收到了返回的信息并且会返回一个ACK),然后就开始服务。这就是三次握手。

为何是三次握手不是两次四次?
在工作人员对你说"你确定吗?"的时候你没有回复,它们是不会继续进行操作的,这样你就会继续问,“我要取钱”,就又会来一个工作人员,这样一直持续下去,钱没取出来人站了一排,服务器就会宕机。所以一定要三次握手。

3.发送HTTP请求

浏览器会将请求包装成请求报文,如 GET / HTTP/1.0 (请求的方法 请求的URL 请求所使用的协议)
头部信息:User-Agent Host等成对出现的值
主体:请求头部和主体之间有一个回车换行。如果是get请求,则没有主体部分,post请求有主体部分。

4、服务器处理请求

服务器接收到请求后,就会返回数据,比如一个html页面。

5、返回响应结果

如果服务器返回的content-type是accept中的任何一个,浏览器都能解析,并直接展示在网页上。
浏览器能直接处理很多种格式,并直接呈现在网页中,并不限于accept中规定的字段。

6.关闭TCP连接(四次挥手)

还是上面的例子:
客户说我处理完我要做的事情了(发送一个FIN),工作人员说收到(发送ACK),我也处理完我要做的事情了,然后客户会说我没有想办理的业务了,再见吧;工作人员说好的。至此进入TIME_WAIT状态(保留现场业务信息),等到2MSL后,才把这个柜台信息清理了(连接最终关闭,并且把业务信息都清理了)。

7.浏览器解析HTML

浏览器通过解析HTML,生成DOM树,解析CSS,生成CSS规则树,然后通过DOM树和CSS规则树生成渲染树。渲染树与DOM树不同,渲染树中并没有head、display为none等不必显示的节点。

8.浏览器布局渲染

html解析->外部样式、脚本加载->外部样式执行->外部脚本执行->html继续解析->dom树构建完成->加载图片->页面加载完成

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

浏览器输入url后发生了什么? 的相关文章

  • 我在全局数组上设置的字段不会持续存在

    在我的 PHP 网页上 我有一个全局数组 test array 然后我调用这个函数 function f global test init test test foo Error undefined index foo 这又调用这个函数 f
  • document.querySelectorAll("input[type=checkbox") 的结果数组的顺序是否有保证?

    我在页面正文中有以下 HTML 这些是此 HTML 页面上类型复选框的唯一输入 fieldset legend North Face legend N A1 fieldset
  • 多单元元素的 FPDF 高度

    我使用 FPDF 库将一些文档文件导出为 PDF 一个文档包含一系列具有不同长度的字符串 我将所有字符串打印为 pdf gt MultiCell 现在 我希望该 MultiCell 的当前高度具有相同的行间距 以防它们只有一行或多行 代码示
  • Mongodb 数据库上的 SASL 身份验证失败

    我在尝试使用 PHP Mongodb 驱动程序连接到 Mongodb 时遇到问题 实际上我有一个名为 LRS 的数据库 它有一个名为 juano 的用户 在我的设置文件中带有密码 12345 我确信我编写了正确的配置 但是当我在 Larav
  • PHP、htaccess:在 URL 中应用页面标题

    我想在 URL 中应用页面 HTML 标题 例如 在这里 stackoverflow url 是这样的 http stackoverflow com questions 10000000 get the title of a page ur
  • 通过删除空 GET 变量并简化变量名称来缩短 URL

    我正在开发一个网站 在提交后组成一个 URLGET form 表单值作为一组变量传递 其中必须至少定义一个变量才能在数据库上进行搜索 我想将网址缩短为删除空表单元素并使其更加用户友好简化变量名称 目前 URL 如下所示 只是带有更多变量 我
  • 使用 fgetcsv 循环遍历 csv

    我有一个包含 3 列的 csv 文件 电子邮件地址 名 and 姓 我已经到了可以使用以下代码打印数组的阶段 这会打印数组 因此每个字段都在一行中 我希望它打印的只是该行第一列中的值 这是如何完成的 关于 fgetcsv 的文档对我 相对初
  • php simpleXMLElement 到数组:空值

    我有以下 XML
  • 将记录分成两列

    我的数据库中有一个 学生 表 其中包含大约 5 000 条记录 我想将这些记录显示在two分区 如何在不执行查询两次的情况下做到这一点 仅使用单个查询 显示示例http www freeimagehosting net uploads f1
  • 如何使用 PHP SDK 在 AWS SES 发送的电子邮件中实现 List-Unsubscribe 标头

    我尝试使用 AWS PHP SDK 添加自定义标头 以便可以实现 List unsubscribe 标头 问题是我找不到任何地方如何实现它 我已阅读文档但什么也没有 http docs aws amazon com aws sdk php
  • Codeigniter:重置表单值

    在我看来 我想要做的是在用户成功注册后清除表单字段 这里一切正常 即用户正在注册 成功消息正在向用户显示 除了我想要做的是清除表单字段的值 我正在使用这个 Clear the form validation field data so th
  • 覆盖默认标识符生成策略对关联没有影响

    交响乐 2 7 2 学说 ORM 2 4 7 MySQL 5 6 12 PHP 5 5 0 我有一个具有自定义 ID 生成器策略的实体 它工作完美 在某些情况下 我必须使用 手工制作 的 ID 来覆盖此策略 当主实体在没有关联的情况下被刷新
  • 从 XML 节点 PHP DOM 中删除所有子节点

    我想使用 PHP DOM 从 XML 节点中删除所有子节点 以下之间有什么区别 A while parentNode gt hasChildNodes parentNode gt removeChild parentNode gt chil
  • PHP 检查字符串是否只包含任何语言的字母、数字和空格

    我如何检查字符串是否只包含任何语言中的字母 数字和空格 我已经尝试过 但它不检查像 这样的特殊字符 preg match p L u string preg match p N u string 您可以使用 preg match p L p
  • 比较表中的行以了解字段之间的差异

    我有一个包含 20 多列的表 客户端 其中大部分是历史数据 就像是 id clientID field1 field2 etc updateDate 如果我的数据如下所示 10 12 A A 2009 03 01 11 12 A B 200
  • PDO SQLSRV 和 PDO MySQL 在获取 int 或 float 时返回字符串

    当您获取时 PDO MS SQL Server 和 PDO MySQL 都会返回一个字符串数组 即使列的 SQL 类型本应是数字类型 例如 int 或 float 我设法解决了这个问题 但我想了解为什么它们一开始就这样设计 是不是因为PDO
  • PHP - Filter_var 替代方案?

    我构建了一个 php 脚本来输出以表单形式发布的数据 但遇到了问题 网站将运行的服务器运行 PHP 5 1 6 此版本的 PHP 不支持 filter var 我需要知道短期内的替代方案 最好是昨天 但在 Google 或 Stack Ov
  • 如何复制 ArrayIterator 以保留其当前迭代位置?

    因为这似乎是我必须做的才能达到这种效果 arr a gt first b gt second iter new ArrayIterator arr Do a bunch of iterations iter gt next new iter
  • WooCommerce 使用 AJAX 设置购物车数量?

    我已经为此绞尽脑汁好几天了 需要一些指导 我正在为 WooCommerce 网站完全从头开始制作自定义主题 现在我正在尝试让购物车功能正常工作 我一直试图使用按钮 来更新购物车中产品的数量 对我来说问题似乎是WC 我在functions p
  • facebook php - 如何获取专辑封面照片

    我需要使用 PHP SDK Facebook 获取专辑封面照片 我尝试 https graph facebook com ALBUM ID picture type album 但我得到默认图像 例如 获取用户 https graph fa

随机推荐

  • 射击小游戏c语言实验报告,C++实现简单射击小游戏

    使用c 制作简单的横板射击小游戏 供大家参考 具体内容如下 include include include class Bullet class Tank class E Bullet class Boss bool dead false
  • k8s-某视频课基础了解

    容器编排 Kubernetes Helm 容器引擎 Containerd Rocket 容器镜像仓库 TUF Harbor Notarv 容器网络CNI 服务网格 服务发现 CoreDNS Linkerd Envoy 容器监控运维 Prom
  • [Ubuntu]使用随机数完全格式化整块优盘

    系统对优盘等存储设备的快速格式化 只是做了简单的标记 如果没有进一步的写入操作 内容大概率都还能恢复找回 那个如何彻底的格式化掉一块优盘呢 使用 Ubuntu 我们可以对全盘进行写零或者写随机数操作 1 找到 U 盘路径 sudo fdis
  • 运维进阶:文件共享服务全攻略

    一 了解一下 1 NFS NFS Network File System 即网络文件系统 是FreeBSD支持的文件系统中的一种 它允许网络中的计算机之间通过TCP IP网络共享资源 在NFS的应用中 本地NFS的客户端应用可以透明地读写位
  • np.maximum()的用法

    一 用法 np maximum A B 用于逐元素比较两个array的大小 二 实例 import numpy as np A np array 1 2 3 4 B np array 5 6 7 8 print np maximum A B
  • WPF随笔(十)--使用AvalonDock实现可停靠式布局

    我们每天使用的许多软件都使用了可停靠式布局 可以方便的打开 关闭 收起 展开 移动选项卡 今天就来说明如何使用AvalonDock实现这种可停靠式布局 AvalonDock安装 最新版本的AvalonDock类库包含在程序包Extended
  • Python packaging tools not found的问题解决

    首先 我用的虚拟机装的linux系统 linux自带的python2 7 所以python的安装工具是python2的 当使用python3 6 也就是在在项目中设置python3 6的时候 系统自动调用的是python2的下载工具 所以就
  • mycat学习01之认识mycat

    转载自 Mycat V1 6 0权威指南 pdf 一书
  • 射雕英雄传ol显示服务器断开,射雕英雄传OL5月28日维护更新内容

    为带来更好的游戏体验 射雕英雄传OL 全体服务器将于5月28日上午9 00 12 00期间进行例行停机维护与版本升级 今天小编就给大家带来 射雕英雄传OL 5月28日维护更新内容 此次版本升级详细内容如下 一 新增装备部位 翅膀 1 玩家升
  • 在线瓦片地图服务资源 总结

    常见的公开在线瓦片地图服务汇总 https www cnblogs com amadoGrowers p 13631127 html
  • Android O中修改NotificationChannel 属性,升级app后该修改不生效,必须卸载app重新安装才能生效

    Android 8 0中修改NotificationChannel 属性 升级app后该修改不生效 必须卸载app重新安装才能生效 原代码如下 public void notifyDownloading long progress long
  • 基于centos7的Openssh版本升级

    一 环境准备 yum y install wget tar gcc make 二 上传升级的软件包 zlib 1 2 11 tar gz openssl 1 1 1d tar gz openssh 9 0p1 tar gz 下载地址 zli
  • angular4-X知识点汇总

    1 生成新项目 ng new my app 生成过程会有点长 主要是需要下载很多的包 2 启动开发服务器 npm run start ng serve open ng serve o 3 NgModule是一个装饰器函数 它接收一个用来描述
  • 数星星(树状数组的理解与应用)

    数星星问题 文章目录 数星星问题 前导 问题详情 问题分析 关键语句分析 方法判断 代码 总结 前导 树状数组的原理详见如下链接 链接 https blog csdn net 2302 77698668 article details 13
  • Leptonica PIX 与 Qt QImage 的相互转换

    最近有个项目需要用到 OCR 功能 研究了一下 感觉 Tesseract 还不错 准备在项目中试试 但是发现 Tesseract 底层图像数据用到了 Leptonica 而我的程序准备用 Qt C 来写 这里就涉及一个问题 如何把 QIma
  • 提示Cannot resolve symbol xxx的解决办法

    今天有读者反映在spring boot项目中 已经导入了所有需要的包 但是提示如下错误 Cannot resolve symbol xxx 该错误的解决办法是 1 单击IDEA开发工具的File gt Invalidate Caches R
  • 数据结构视频教程 -《(东南大学 王茜)数据结构 (64讲)》

    整个视频打包下载地址 史上最全的数据结构视频教程系列分享之 东南大学 王茜 数据结构 64讲 转载请保留出处和链接 更多优秀资源请访问 我是码农 数据结构对于从事计算机系统软件和应用软件设计与开发人员非常重要 程序设计语言为数据结构的描述提
  • 基于Spring Boot开发的社区物业管理系统

    文章目录 项目介绍 主要功能截图 登录 车位收费管理 物业收费管理 投诉信息管理 车位管理 保修统计分析 部分代码展示 设计总结 项目获取方式 作者主页 Java韩立 简介 Java领域优质创作者 简历模板 学习资料 面试题库 关注我 都给
  • 【python教程入门学习】学习Python爬虫前的准备工作

    在使用 Python 编写爬虫程序之前 您需要提前做一些准备工作 这样在后续学习过程中才会得心应手 知识准备 1 Python语言 Python 爬虫作为 Python 编程的进阶知识 要求学习者具备较好的 Python 编程基础 对于没有
  • 浏览器输入url后发生了什么?

    在浏览器输入url后会发生的过程 1 DNS对域名进行解析 2 建立TCP连接 三次握手 3 发送HTTP请求 4 服务器处理请求 5 返回响应结果 6 关闭TCP连接 四次挥手 7 浏览器解析HTML 8 浏览器布局渲染 1 浏览器对输入