浏览器输入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 中的 NOW() 函数

    是否有 PHP 函数以与 MySQL 函数相同的格式返回日期和时间NOW 我知道如何使用date 但我想问是否有专门用于此的功能 例如 返回 2009 12 01 00 00 00 您可以使用date https www php net m
  • 在 Woocommerce 购物车中设置最小小计金额

    我正在尝试将最低订单金额设置为 25 美元 到目前为止 我找到了这段代码 如果未达到最低限度 它似乎可以阻止结账 但它使用的小计包含税费 我需要在总计中排除税费 add action woocommerce checkout process
  • 使用 DOJO 自动完成文本框

    我正在寻找一种使用 DOJO 进行文本框自动建议的简单方法 我将查询的数据库表 使用 PHP 脚本 以 JSON 形式返回 有超过 100 000 条记录 因此这确实不应该采用 FilteringSelect 或 ComboBox 的形式
  • 如何在php中使用preg添加html属性

    我正在寻找在 php 中编写一个脚本来扫描 html 文档并根据它找到的内容向元素添加新标记 更具体地说 我是扫描文档并为每个元素搜索CSS标记 float right left 如果找到它 它会添加align right left 基于它
  • 如何在html中制作多行类型的文本框?

  • 如何从字符串中删除所有数字?

    我想删除字符串 0 9 中的所有数字 我写了这段有效的代码 words preg replace 0 words remove numbers words preg replace 1 words remove numbers words
  • php 表单提交 - Q2

    我对这个虚拟问题感到抱歉 这是我的简单 PHP 表单 其中包含两个 SQL 表和 ADD 提交 按钮 我希望将人员从 Test1 转移到 Test2 很多事情都很好 只有提交按钮不起作用 因此 Test2 表没有反馈 Revised 现在提
  • PHP文件上传

    如果我想在文件名转到服务器的永久位置 而不是临时位置 之前更改文件名 我该如何执行此操作 代码如下
  • 检查文件权限

    我怎样才能检查file permissions 无需通过运行操作系统特定命令passthru or exec Use 文件权限 http php net fileperms功能 clearstatcache echo substr spri
  • “pdo_mysql”已禁用,我无法启用它。我在 iMac 7.1 OSX 10.6.8 上安装了 MAMP v. 3.0.4

    pdo mysql 已禁用 我无法启用它 我在 iMac 7 1 OSX 10 6 8 上安装了 MAMP v 3 0 4 在我的 phpinfo 页面上 我可以看到唯一启用的 PDO 是 sqlite 如果我查看 php 5 5 10 扩
  • 来自本地 XML 的模拟 SoapClient 响应

    我想用文件中的 XML 来模拟 SoapClient 的响应 我如何创建一个 stdClass 对象 就像 SoapClient 从文件返回一样 客户端已经包装了 SoapClient 因此可以轻松模拟响应 我的模拟是这样的 soapCli
  • Laravel 5.4 升级 - 违反完整性约束 - 列不能为空

    奇怪的是 所有这些都在 5 2 中工作 但我不知道可以改变什么来实现这一点 下面是错误和正在插入的数组 SQLSTATE 23000 Integrity constraint violation 1048 Column gender can
  • 创建 Facebook 测试用户时访问令牌出现问题

    我正在尝试为我的 Facebook 应用程序创建测试用户 他们在 11 月份的博客文章 http developers facebook com blog post 429 中宣布了此功能 并在此处记录了该功能 http developer
  • 如何解决 Laravel 8 UI 分页问题?

    我在尝试最近发布的 laravel 8 时遇到了问题 我试图找出变化是什么以及它是如何工作的 当我这样做时 我遇到了分页 laravel 8 UI 变得混乱的问题 不知何故它发生了 有人可以帮助我吗 或者经历过同样的事情 像这样我在 lar
  • Windows iis 7.0 上的 APC 不稳定

    我的 IIS 非常不稳定 因为它总是由于某种与 APC 相关的原因而重新启动 服务器的规格如下 Intel R Xeon CPU 3GHZ 3GHZ 2GB RAM 64bit APC 和服务器规格 3 1 7 dev PHP Versio
  • PHP:在脚本完成之前获取输出

    我有一个名为 data php 的脚本 如下所示 do some stuff echo result do some other stuff eg database operations 我需要在另一个脚本中使用 data php 的输出
  • 更改API数据输出的布局

    我是 API 集成和 PHP 的新手 我最近将 VIN 解码器集成到我的应用程序中 在输入框中输入车辆的 VIN 选择提交 然后就会显示 API 数据库中有关该车辆的所有信息 数据存储为关联数组 其中包含类别及其相应元素 例如 对于 VIN
  • 如何确保在 PHP 的“foreach”循环中重置该值?

    我正在写一个简单的 PHP 页面和一些foreach使用了循环 以下是脚本 arrs array a b c foreach arrs as arr if substr arr 0 1 b echo This is b End of fir
  • PDO语法错误

    我在一个项目中使用 PDO 但提交时出现语法错误 这是我的代码
  • 如何在 PHP 中从字符串类名实例化? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 如何创建返回方法名称的新实例 不幸的是我收到这个错误 错误 类名必须是有效的对象或字符串 这是我的代码 class Foo public f

随机推荐

  • 射击小游戏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 浏览器对输入