听过N次还是不会之:浏览器输入url后到底经历了什么

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 听过N次还是不会之:浏览器输入url后到底经历了什么

有没有这种场景:当你被问起某一项知识点时,你大脑里想起经常看到过这样的问题,可是具体是怎么样就是说不清楚。


好吧,我就是这样的,于是整理一下,实在记不住,以后找起来也方便。


当你在浏览器地址栏里输入一个网址,比如:https://www.zhihu.com/,

我们就会看到知乎的首页。实际上背后的经过,是酱紫的。


1268169-20200605160458524-597956533.png


一、浏览器解析输入的网址


首先,浏览器会解析我们输入的网址,那么https://www.zhihu.com/的域名是由什么组成的?


1.http


通常被译为超文本传输协议。不过我看书上说这种其实不严谨,严谨的翻译应该是“超文本转译协议”,不过我们不纠结这个,就知道是“超文本传输协议”就好了。这种协议用于客户端和服务端之间的通信。比如,你的浏览器就是客户端,而知乎的服务器就是服务端。


1268169-20200605160635629-817528344.png


但是http本身有许多缺点:


  • 通信使用明文(不加密),内容可能会被窃听
  • 不验证通信方的身份,因此有可能遭遇伪装
  • 无法证明报文的完整性,所以有可能已遭篡改


其实也不仅是http协议,只要是未加密的协议都存在这种问题。


为了有效的防止这些问题,于是https诞生了。https=http+加密+认证+完整性保护。


具体不铺开了,推荐大家看一下《图解http》这本书,我这里也是借鉴于它。


2. www


World Wide Web,万维网。


CERN(欧洲核子研究组织)的蒂姆 • 伯纳斯 - 李(Tim BernersLee)博士提出了一种能让远隔两地的研究者们共享知识的设想。


最初设想的基本理念是:借助多文档之间相互关联形成的超文本(HyperText),连成可相互参阅的 WWW(World Wide Web,万维网)。


WWW 这一名称,是 Web 浏览器当年用来浏览超文本的客户端应用程序时的名称。现在则用来表示这一系列的集合,也可简称为 Web。


www与后面的zhihu.com一起构成了一个域名地址。


3. 解析域名


其实每个地址后面都有对应的ip地址,在真正发起请求之前,还需要进行DNS解析,解析出zhihu.com背后的ip地址是什么。


二、浏览器向服务器发起TCP连接,经历”三次握手”


在浏览器和服务器之间进行http请求,发送和返回这一来一去当中,是需要去创建一个TCP连接的。


因为http是不存在连接这么一个概念的,它只有一个请求和响应这么一个概念,那么请求和响应都是一个数据包,它们之间是需要一个传输的通道的,那么这个传输的通道在哪里呢?就在TCP里面。


TCP处于传输层,提供可靠的字节流服务。TCP协议为了更容易的传输大数据,会把数据进行分割,并且能够确认数据最终是不是送到了对方那里。


那如何能保证数据成功送达对方呢?“三次握手”就是保障通信可靠性的手段之一,顺序依次为:


  • 第一次握手:发送端发送带有SYN标志的数据包给对方。
  • 第二次握手:接收端接受到数据包后,回传一个带有SYN/ACK标志的数据包,表示已经收到了。
  • 第三次握手:发送端收到接收端的响应后,会再次回传一个带有ACK标志的数据包给接收端,结束。


再借用下书里的图片加以解释一下,是不是更容易记住了。


1268169-20200605160952829-1826252214.png


我们也可以用wireshark来抓包看一下,在http请求之前是不是真的进行了TCP“三次握手”。(注:wireshark的用法还请感兴趣的小伙伴自行查阅)


1268169-20200605161018294-125199594.png



以这个http请求为例,可以看到,在http之前是有3次TCP连接的。在TCP连接中,从上到下依次是按照上方介绍的“握手”顺序,握手完成后,才进行http请求。


三、握手完成,浏览器和服务器之间进行http请求交互


浏览器向服务器发送http请求,请求数据包,服务器处理收到的请求,将数据返回至浏览器。


四、浏览器解码服务器的响应


浏览器解码服务器的响应,如果响应支持缓存的话,浏览器就会存入缓存中去。那网页里通常还有各种图片呀,css,js等各种资源,浏览器则会发送对应的请求去获取这些被内嵌在html的资源。


五、页面渲染


各种资源浏览器都拿到了,那就可以在客户端里渲染出来了,丰富内容的网页最终呈现在我们面前。

相关文章
|
4月前
|
缓存 网络协议 前端开发
一步步揭秘:浏览器输入URL后的那些事儿
大家好,我是小米!你有没有好奇过,当你在浏览器输入一个网址并按下回车键后,到底发生了什么神奇的过程?从DNS解析到TCP连接,从发送HTTP请求到浏览器渲染,本文将带你深入了解这个复杂而又迷人的过程,让我们一起探索吧!
54 2
|
3月前
|
缓存 JavaScript 前端开发
|
14天前
|
缓存 网络协议 JavaScript
浏览器输入url之后最后网页渲染出来经过了什么
【10月更文挑战第31天】从浏览器输入 URL 到网页渲染出来是一个涉及多个环节和技术的复杂过程,每个环节都对最终的网页显示效果和用户体验有着重要的影响。
26 3
|
17天前
|
存储 缓存 网络协议
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点,GET、POST的区别,Cookie与Session
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点、状态码、报文格式,GET、POST的区别,DNS的解析过程、数字证书、Cookie与Session,对称加密和非对称加密
|
19天前
|
域名解析 缓存 网络协议
浏览器中输入URL返回页面过程(超级详细)、DNS域名解析服务,TCP三次握手、四次挥手
浏览器中输入URL返回页面过程(超级详细)、DNS域名解析服务,TCP三次握手、四次挥手
|
1月前
|
缓存 网络协议 前端开发
浏览器输入一个URL后,发生了什么?
浏览器输入一个URL后,发生了什么?
25 1
|
1月前
|
域名解析 缓存 网络协议
浏览器输入 URL 回车后会经历哪些步骤?
本文首发于微信公众号“前端徐徐”,详细解析了从在浏览器中输入URL到页面完全呈现的全过程,涵盖检查缓存、URL解析、DNS解析、TCP连接、HTTP请求、服务器响应、浏览器处理响应、页面解析与渲染、关闭TCP连接等关键步骤。通过这些步骤,帮助读者深入了解互联网的工作原理,提升网站性能和用户体验。
19 0
|
3月前
|
网络协议 前端开发 JavaScript
浏览器加载网页的幕后之旅:从URL到页面展示详解
【8月更文挑战第31天】当在浏览器地址栏输入URL并回车后,一系列复杂过程随即启动,包括DNS解析、TCP连接建立、HTTP请求发送、服务器请求处理及响应返回,最后是浏览器页面渲染。这一流程涉及网络通信、服务器处理和客户端渲染等多个环节。通过示例代码,本文详细解释了每个步骤,帮助读者深入理解Web应用程序的工作机制,从而在开发过程中作出更优决策。
62 5
|
4月前
|
缓存 网络协议 Java
(六)网络编程之化身一个请求感受浏览器输入URL后奇妙的网络之旅!
在浏览器上输入一个URL后发生了什么? 这也是面试中老生常谈的话题,包括网上也有大量关于这块的内容。
133 2
|
3月前
|
存储 API 网络架构
【Azure 存储服务】MP4视频放在Azure的Blob里面,用生成URL在浏览器中打开之后,视频可以正常播放却无法拖拽视频的进度
【Azure 存储服务】MP4视频放在Azure的Blob里面,用生成URL在浏览器中打开之后,视频可以正常播放却无法拖拽视频的进度