输入一个url之后到底发生了什么 - Hurry
背景
最近学习到 nginx 方向代理发现,nginx 可以将你的请求以 http 块的 server 形式代理到请求的域名或者 ip 地址。
一个简单的 nigx 配置如下:
1 |
server {
|
这不由使我想到,如果在自己的服务器前加上了 nginx 反向代理,那以前学习的“输入一个 url 之后到底发生了什么“这里面就需要再加上一个 nginx 的反向代理步骤嘛,同时,如果在代理的服务器之前再加一层 nginx 反向代理以考虑前一个 nginx 负载均衡不够时,那就还需要增加一些解析的步骤。
下面还是来凭我自己的理解,记一下“输入一个 url 之后到底发生了什么”的步骤吧。
输入一个 url 之后到底发生了什么
域名解析
在输入一个 url 之后,第一步就是域名解析
- 先在浏览器中的历史记录中查 大专栏 输入一个url之后到底发生了什么 - Hurry找域名对应的 ip
- 如果没找到 ip,查找本地的 hosts 文件,是否有对应的 ip
- 再没找到的话,浏览器就会向 DNS 域名解析服务器查询对应的 ip,这其中涉及到 DNS 的递归解析,当前 DNS 服务器找不到则向更远的服务器查找。
- 浏览器拿到对应的 ip 之后,则向服务器发送请求。
服务器请求
- 浏览器向服务器请求,如果这之中有了一层 nginx 的反向代理,则回请求代理中的内容,如果代理的值为一个域名,则重复进行域名解析,直到获得 ip,如果值为 ip,则直接访问当前 ip。
- 浏览器开始向 ip 地址发送请求建立一个 http 连接了,然后会经过 tcp 的三次握手。
- 握手成功之后,成功建立连接。
- 服务器根据特定的请求返回响应内容。
浏览器解析HTML
- 浏览器获得服务器返回的 html 内容之后,开始解析 html。
- 浏览器构建 dom 树,异步解析css,同步解析 javascript。
- 最后构建的 dom 树和 cssom 树,经过重绘和重排,通过 GPU 渲染出相应的页面。
总结
深挖这个知识点,我们还可以学习到很多计算机操作系统,网络请求,服务器配置,运维网关,以及前后端相关的知识,这只是大概梳理了一下脉络,里面还有很多深入的东西没写,比如计算机底层的文件查询,cpu指令集的运行,内存的分配等等,以后会随着自己知识的完善不断修改补充,可能也有许多不对的地方,但“纸上得来终觉浅,绝知此事要躬行”这种精神还是要继续保持。
输入一个url之后到底发生了什么 - Hurry的更多相关文章
- 解释一下,在你往浏览器中输入一个URL后都发生了什么,要尽可能详细
这道题目没有所谓的完全的正确答案,这个题目可以让你在任意的一个点深入下去, 只要你对这个点是熟悉的.以下是一个大概流程: 浏览器向DNS服务器查找输入URL对应的IP地址. DNS服务器返回网站的IP ...
- 在浏览器中输入一个URL后都发生了什么
这道题目没有所谓的完全的正确答案,这个题目可以让你在任意的一个点深入下去, 只要你对这个点是熟悉的.以下是一个大概流程: 浏览器向DNS服务器查找输入URL对应的IP地址. DNS服务器返回网站的IP ...
- 当在浏览器输入一个url访问后发生了什么
首先根据DNS获取该url的ip地址,ip地址的获取可能通过本地缓存,路由缓存等得到. 然后在网络层通过路由选择查找一条可达路径,最后利用tcp/ip协议来进行数据的传输. 其中在传输层将信息添加源端 ...
- 从URL输入到页面展现到底发生什么?
目录 前言 一.URL 到底是啥 二.域名解析(DNS) 1.IP 地址 2.什么是域名解析 3. 浏览器如何通过域名去查询 URL 对应的 IP 呢 4. 小结 三.TCP 三次握手 1.TCP 三 ...
- 经典面试题:在浏览器地址栏输入一个 URL 后回车,背后发生了什么
尽人事,听天命.博主东南大学硕士在读,热爱健身和篮球,乐于分享技术相关的所见所得,关注公众号 @ 飞天小牛肉,第一时间获取文章更新,成长的路上我们一起进步 本文已收录于 CS-Wiki(Gitee 官 ...
- 网易笔试题:浏览器中输入一个url后回车到返回页面信息的过程
You enter a URL into the browser输入一个url地址 The browser looks up the IP address for the domain name浏览器 ...
- 浏览器输入一个url到整个页面显示出来经历了哪些过程?
https://cloud.tencent.com/developer/article/1396399 https://www.cnblogs.com/haonanZhang/p/6362233.ht ...
- 从输入一个URL到页面渲染的流程简介
首先说明以下是我参考网上答案和自己的思考,给出自己的想法,如果有问题,欢迎大家吐槽从用户在浏览器中输入一个URL,到整个页面渲染,这个过程中究竟发生了什么呢?今天先简单写下整个过程,后面再一点点完善. ...
- 编写一个C语言函数,要求输入一个url,输出该url是首页、目录页或者其他url
编写一个C语言函数,要求输入一个url,输出该url是首页.目录页或者其他url 首页.目录页或者其他url 如下形式叫做首页: militia.info/ www.apcnc.com.cn/ htt ...
随机推荐
- maven项目出现Xxx is not a Servlet的问题
应该是tomcat的jar包和maven的jar包冲突 在pom.xml中找到 <dependency> <groupId>org.apache.tomcat</grou ...
- IE浏览器F12调试模式不能使用或报错以及安装程序遇到错误0x80240037的解决办法
记录一下,方便以后查找 IE浏览器F12调试模式不能使用: 需要下载补丁: 64位系统 然后下载安装,就能解决问题. 要是在安装时遇到出现: 安装程序遇到错误 0x80240037 解决方式 最后 ...
- 17.3.10--->关于数值溢出问题
取值范围: short.int.long 占用的字节数不同,所能表示的数值范围也不同.以32位平台为例,下面是它们的取值范围: 数据类型 所占字 ...
- react-native屏幕适配
写一个屏幕适配类文件AdapterUtil.js,这样避免每次进行单位换算 "use strict" import {Dimensions, StatusBar, Platform ...
- Python语言学习:homework2
三级菜单 # Author:Crystal data = { '北京':{ "昌平":{ "沙河":["oldbay","test ...
- 1. Ruby基础知识
1. Ruby执行选项 符号 作用 -c 检查代码正确性 -w 警告模式运行 -e 字面脚本 -l 行模式运行 单独 ruby -c Hello.rb 组合 ruby -le 'print " ...
- dfs+剪枝 poj1011
Sticks Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 113547 Accepted: 26078 问题描述 Ge ...
- 两个tomcat使用同一个jvm可能会出错
如果两个tomcat中的项目的某些类具有完全相同的包路径和类名的话,jvm可能会“弄混”这两个类,所以一般要求包名“必须”唯一. 当然,如果两个类中的代码和import的类完全一样,弄混了也就弄混了, ...
- Python 进阶 - 面向对象
Python 面向对象 面向过程 把完成某个需求的所有步骤,从头到尾逐步实现 根据开发需求,将某些功能独立的代码封装成一个又一个函数 最后完成的代码,就是顺序地调用不同的函数 面向过程特点: 注重步骤 ...
- 内网部署Docker版本Gitlab
Gitlab部署: 1. 还原备份文件后记得拷贝gitlab-secrets.json,不然会遇到500错误 2. 下载Docker以及依赖项rpm包 3. 在外网机器下载镜像 a. 拉取——Dock ...