输入URL展示过程
一、 输入URL,回车
- 敲击某个键时,键盘内的处理器会先对键矩阵进行分析,然后将数据发送到计算机
- 计算机接收到来自键盘的信号,由键盘控制器(一种集成电路)进行处理,发送给操作系统
- 操作系统会分析,这些数据是否为系统命令,若不是,则将数据传给应用程序。
- 应用程序会分析这些数据是否为命令,如果不是命令,则会将数据作为内容接受,否则忽略
二、浏览器解析URL
- 浏览器会对URL进行检查,是否合法,如果不合法会将输入内容传给默认的搜索引擎
- 针对当前URL检查是否存在本地缓存,如果有缓存就直接跳过请求阶段,从缓存中去取资源
浏览器再得到URL后,调用Socket,使用TCP协议,HTTP请求会被封装,加入本地端口,目标端口等信息
IP地址是在IP协议中被封装的。但光有IP地址是不够的,因为设备是可以移动的,IP地址并不与设备绑定。所以还有一个MAC要被封装,每个网卡的MAC地址都是固定且唯一的
三、DNS解析
DNS实际上是一个域名与IP对应的数据库,DNS解析主要是为了获取到域名对应的IP,用于下一步的连接建立
DNS的解析会按照以下顺序尝试获取IP,任意一步找到直接返回IP:
1. 查询浏览器缓存,浏览器会对最近访问的地址的DNS进行缓存,例如chrome对每个域名会默认缓存60s
2. 检查系统缓存,也就是hosts文件中配置的域名与IP的对应关系
3. 获取路由器的DNS缓存
4. 查询ISP服务商DNS缓存,即本地服务器缓存
5. 最后手段:递归查询,以 根域名服务器 --> 顶级域名服务器 --> 极限域名服务器 的顺序搜索对应域名的IP
通过Socket API发送数据,可以选择TCP或UDP协议
1. Socket(套接字)是计算机之间进行通信的一种约定或一种方式
2. 在应用层和传输层之间的一个抽象层
3. 它把TCP/IP层复杂的操作抽象为几个简单的接口
4. 供应用层调用已实现进程在网络中通信
三、建立连接;
根据上一步获取到的IP地址定位到目标主机,开始于其建立TCP连接,也就是三次握手建立连接:
- 第1次握手:客户端向服务器端发送请求(SYN=1)等待服务器确认;
- 第2次握手:服务器收到请求并确认,回复一个指令(SYN=1,ACK=1);
- 第3次握手:客户端收到服务器的回复指令并返回确认(ACK=1)。
四、服务器如何处理数据并返回数据
用上一步建立的连接发送http request请求命令和请求头信息
服务器收到信息都会返回应答头信息
五、关闭TCP连接,
- http1.1已经支持keep-alive
- 根据Connection请求头,如果是keep-alive服务器就保持住tcp连接
- response传输完后主动关闭tcp连接。
- 当然现在浏览器都是http1.1都默认是keep-alive的,在浏览器tab关闭时,tcp连接关闭。
六、检查状态码
如果response的状态码出现3XX(跳转),未授权(401),错误(4XX和5XX)会有不同的处理。
七、准备呈现
如果response status 为304(内容未更改)浏览器则会从本来缓存加载内容进行呈现
八、 浏览器如何处理服务器的响应
通过MIME类型,浏览器知道要用页面渲染引擎来处理HTML文件,整个渲染过程都由浏览器来处理,主要分为以下步骤:
- 解析资源文件(html)的源代码,构建出一个DOM树
- 解析CSS,形成css对象模型CSSOM,其中非法的css会直接被忽略掉
- 利用DOM和CSSOM构建一个渲染树
- 根据渲染树直接把页面绘制到浏览器窗口中
根据网络模型来的过程
应用层
HTTP、DNS
传输层
TCP/UDP
三网络层
IP
链路层
输入URL展示过程的更多相关文章
- 一次完整的HTTP事务的过程、从输入URL到网页展示,浏览器都经历了什么?
详细介绍:老生常谈-从输入url到页面展示到底发生了什么 (1)一次完整的HTTP事务的过程 基本流程: a. 域名解析 b. 发起TCP的3次握手 c. 建立TCP连接后发起http请求 d. 服务 ...
- 浏览器从输入url 到页面展示完成响应过程
用户从输入 url 到浏览器响应,呈现给用户的具体过程 1.用户在输入栏输入地址 (1) 如果有 beforeunload 事件会先执行判断继续还是跳出操作 (2) 浏览器进程识别是 地址还是关键字检 ...
- 从输入 URL 到浏览器接收的过程中发生了什么事情
从输入 URL 到浏览器接收的过程中发生了什么事情? 原文:http://www.codeceo.com/article/url-cpu-broswer.html 从触屏到 CPU 首先是「输入 U ...
- 【原】老生常谈-从输入url到页面展示到底发生了什么
刚开始写这篇文章还是挺纠结的,因为网上搜索“从输入url到页面展示到底发生了什么”,你可以搜到一大堆的资料.而且面试这道题基本是必考题,二月份面试的时候,虽然知道这个过程发生了什么,不过当面试官一步步 ...
- 【转】老生常谈-从输入url到页面展示到底发生了什么
今天看到了一篇很详细地解释了从输入url到页面展示过程的文章,好文章不能错过,所以转到自己这里来了. 原文地址:老生常谈-从输入url到页面展示到底发生了什么 以下为原文: 刚开始写这篇文章还是挺纠结 ...
- 在浏览器中输入url地址 -> 显示主页的过程
-来自<图解HTTP> 最近在进行前端面试方面的一些准备,看了网上许多相关的文章,发现有一个问题始终绕不开: 在浏览器中输入URL到整个页面显示在用户面前时这个过程中到底发生了什么.仔细思 ...
- (转)老生常谈-从输入url到页面展示到底发生了什么
刚开始写这篇文章还是挺纠结的,因为网上搜索"从输入url到页面展示到底发生了什么",你可以搜到一大堆的资料.而且面试这道题基本是必考题,二月份面试的时候,虽然知道这个过程发生了什么 ...
- [转]从输入url到页面加载完成的过程中都发生了什么事情
第一个问题:从输入 URL 到浏览器接收的过程中发生了什么事情? 从触屏到 CPU 首先是「输入 URL」,大部分人的第一反应会是键盘,不过为了与时俱进,这里将介绍触摸屏设备的交互. 触摸屏一种传感器 ...
- 从输入URL到页面加载完成的过程中都发生了什么事情?
为了便于理解,我将整个过程分为了六个问题来展开. 第一个问题:从输入 URL 到浏览器接收的过程中发生了什么事情? 从触屏到 CPU 首先是「输入 URL」,大部分人的第一反应会是键盘,不过为了与时俱 ...
随机推荐
- Educational Codeforces Round 113 (Rated for Div. 2)题解
\(A,B,C\)顺利签到,还是在\(D\)上面卡住了,之后在睡前还是想出来了,看来还是自己的思维不够敏捷和成熟... D. Inconvenient Pairs 简化题意,在一个直角坐标系中,有一些 ...
- 如何减小微信小程序代码包大小
原作于:https://captnotes.com/how_to_reduce_package_size_of_weapp 这两天被小程序代码包大小暴涨的问题困扰了挺久.简单说说怎么回事吧,就是之前好 ...
- Redis源码分析(sds)
源码版本:redis-4.0.1 源码位置:https://github.com/antirez/sds 一.SDS简介 sds (Simple Dynamic String),Simple的意思是简 ...
- JMeter学习笔记--工具简单介绍
一.JMeter 介绍 Apache JMeter是纯JAVA桌面应用程序,被设计为用于测试客户端/服务端结构的软件(例如web应用程序).它可以用来测试静态和动态资源的性能,例如:静态文件,Java ...
- Linux——搭建FTP服务
一.FTP基本概念: 1.FTP的作用: 实现文件系统的安全匿名访问:包括上传.下载和查看,可以应用于Windows和Linux系统 2.FTP的工作原理 server与client都支持ftp传输协 ...
- 跟着老猫来搞GO-容器(1)
前期回顾 前面的一章主要和大家分享了GO语言的函数的定义,以及GO语言中的指针的简单用法,那么本章,老猫就和大家一起来学习一下GO语言中的容器. 数组 数组的定义 说到容器,大家有编程经验的肯定第一个 ...
- excel (2)
... poi 3.8 import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; ...
- Windows11 如何让开始菜单出现休眠选项(Windows11如何开启休眠功能?)Windows家庭版
1. Windows11新版的菜单找不到调休眠的选项了,所以我们可以用win+r键调出运行,输入control,回车调出「控制面板」 配图: 2. 我的电脑系统是家庭版的Windows11,其它版本这 ...
- difflib模块详解
1.两个字符串对比 import difflib text1=""" test1 #定义字符串 hellow my name is machanwei! difflib ...
- c语言1左移32位(1<<32)是多少,左移-1位呢
C语言中 << 是逻辑移位,不是循环移位.1 左移 32 位后为 0,左移 -1 位实际是左移 255 位(互补),当然也是0.这种问题可以写一段小程序,单步执行,看一下每一步的结果.先说 ...