1.DNS

在浏览器中输入URL后,首先要进行DNS解析,DNS解析的顺序为:

  • 浏览器缓存
  • 本地hosts文件
  • 系统缓存
  • 路由器缓存
  • DNS服务器迭代查询

2.发送请求

通过DNS得到目标的IP地址后,通过TCP协议向服务器发送请求即三次握手。

3.服务器永久重定向响应

大多数的网站会将用户访问的地址永久重定向,这主要与缓存和搜索排名有关。

  • 搜索排名方面:例如www.test.com与test.com搜索引擎认为是两个网站,不会将排名合并。如果使用重定向将test.com定向到www.test.com搜索引擎就会认为是一个页面将排名信息合并。
  • 缓存方面:如果使用不同的地址,在缓存中出现好几次,缓存友好性变差

4.跟踪重定向地址

根据返回新重定向地址,重新发送新的http请求

5.处理HTTP请求,返回响应

  • 建立连接:服务器允许客户端建立连接
  • 接受请求:从网络中读取HTTP报文交给Nginx或者Apache进行规则匹配
  • 处理请求:根据方法,资源,首部和可选的主体部分对请求进行处理
  • 访问资源:寻找存储对象,访问报文中指定的资源
  • 构建响应报文:创建有正确首部的HTTP响应报文

6.处理HTTP响应

  • 发送响应:将响应会送给客户端
  • 记录日志:将与已经完成的事务记录在一个日志文件中

7.浏览器解析显示

浏览器得到页面后会进行展示,如果还包含其他外部资源如图片、视频等等则继续请求其他资源。

在浏览器地址栏输入URL,按下回车后究竟发生了什么?的更多相关文章

  1. 在浏览器中输入URL按下回车键后发生了什么

    在浏览器中输入URL按下回车键后发生了什么 [1]解析URL[2]DNS查询,解析域名,将域名解析为IP地址[3]ARP广播,根据IP地址来解析MAC地址[4]分别从应用层到传输层.网络层和数据链路层 ...

  2. 详解--从地址栏输入url到页面展现中间都发生了什么?

    这是一个综合性很强的问题,个人理解包含以下七个基本点: 1.在浏览器地址栏输入url并按下回车. 2.浏览器检查当前url是否存在缓存和缓存是否过期. 3.域名解析(DNS解析url对应的ip). 4 ...

  3. 从输入URL按下回车到页面展现,中间发生了什么?

    从输入URL按下回车到页面展现,总的来说发生了一下几个过程: DNS 解析:将域名解析成 IP 地址 TCP 连接:TCP 三次握手 发送 HTTP 请求 服务器处理请求并返回 HTTP 报文 浏览器 ...

  4. <用户输入url按下回车,一直到用户看到界面,这期间经历了什么>

    用户输入url按下回车,一直到用户看到界面,这期间都经历什么? 一.  DNS解析缓存: 1. 找到浏览器缓存解析域名: 2. 找到和 DNS 缓存 ; 3. 找到路由器 DNS 缓存: 4. 找到查 ...

  5. 从浏览器地址栏输入url到显示页面的步骤

      在浏览器地址栏输入URL 浏览器查看缓存,如果请求资源在缓存中并且新鲜,跳转到转码步骤 HTTP1.0提供Expires,值为一个绝对时间表示缓存新鲜日期 HTTP1.1增加了Cache-Cont ...

  6. 从浏览器地址栏输入url到显示页面的步骤(以HTTP为例)

    在浏览器地址栏输入URL 浏览器查看缓存,如果请求资源在缓存中并且新鲜,跳转到转码步骤 如果资源未缓存,发起新请求 如果已缓存,检验是否足够新鲜,足够新鲜直接提供给客户端,否则与服务器进行验证. 检验 ...

  7. 从浏览器中输入URL到页面加载的发生了什么-转载

    转:https://www.cnblogs.com/confach/p/10050013.html 背景 “从浏览器中输入URL到页面加载的发生了什么“,这是一道经典的面试题,涉及到的知识面非常多,但 ...

  8. 详解从浏览器地址栏输入URL到页面显示的步骤

    版本1(基础版本) 步骤1:浏览器根据请求的 URL 交给 DNS 域名解析,找到真实 IP ,向服务器发起请求: 步骤2:服务器交给后台处理完成后返回数据,浏览器接收⽂件( HTML.JS.CSS ...

  9. 浏览器地址栏输入url回车之后发生了些什么

    1.输入地址 当我们开始在浏览器中输入网址的时候,浏览器其实就已经在智能的匹配可能得 url 了,他会从历史记录,书签等地方,找到已经输入的字符串可能对应的 url,然后给出智能提示,让你可以补全ur ...

随机推荐

  1. java Properties类使用基础

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...

  2. python异步加协程获取比特币市场信息

    目标 选取几个比特币交易量大的几个交易平台,查看对应的API,获取该市场下货币对的ticker和depth信息.我们从网站上选取4个交易平台:bitfinex.okex.binance.gdax.对应 ...

  3. 【转】wget(二)

    本原创文章属于<Linux大棚>博客,博客地址为http://roclinux.cn.文章作者为rocrocket. 为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅. ...

  4. 第三方模块paramiko的使用

    "Paramiko" is a combination of the Esperanto words for "paranoid" and "frie ...

  5. zookeeper 实现分布式锁

    主要是依赖临时节点的特性.数据存储到内存中效率高:例如有web1 web2 两台应用服务器 db1 db2两台db服务器  db互为主备,web1 web2 分别去修改db1 .有限db2库里张三的年 ...

  6. JAVA设计模式---单例模式的几种实现方式比较

    1.延迟实例化方式:(懒汉模式) public class Singleton { private static Singleton uniqueInstance; private Singleton ...

  7. git的学习笔记

    1. Git介绍 Git是一个开源的分布式版本控制软件,用以有效.高速的处理从很小到非常大的项目版本管理. Git 最初是由Linus Torvalds设计开发的,用于管理Linux内核开发. Git ...

  8. c# 实现mysql事务

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  9. BZOJ 3450: Tyvj1952 Easy [DP 概率]

    传送门 题意:$ox?$组成的序列,$?$等概率为$o\ or\ x$,得分为连续的$o$的长度的平方和,求期望得分 一开始没想出来,原因在于不知道如何记录长度 其实我们同时求得分和长度的期望就好了 ...

  10. CodeChef Little Elephant and Movies [DP 排列]

    https://www.codechef.com/FEB14/problems/LEMOVIE 题意: 对于一个序列,定义其“激动值”为序列中严格大于前面所有数的元素的个数.给定n个数p1;,p2.. ...