输入url会发什什么

从输入url到页面加载完成发生了什么

整体来说有几个基本的点:

1.浏览器的地址栏输入url并按下回车

2.浏览器查找当前url是否存在缓存,并比较缓存是否过期

3.DNS解析url对应的IP

4.根据IP建立TCP连接(三次握手)

5.服务器端处理(动态页面处理,静态页面返回。CDN相关)

6.HTTP发起请求

7.服务器处理请求,浏览器接收HTTP响应

8.渲染页面,构建DOM树(收到HTML内容解析,并行加载串行执行执行CSS,js)

9.请求头内容缓存到浏览器端

10.关闭TCP连接,4次握手

一、URL:我们常见的URL是由三部分组成,协议名,域名,端口号,有时候端口是默认所以隐藏,HTTP默认端口80,HTTPS默认端口443,(同源问题和跨域问题)除此之外还会包括一些路径,查询和其他片段,我们最常见的协议是HTTP协议,还有加密的HTTPS协议,FTP协议等等

二、缓存:HTTP缓存有多种规则,根据是否需要重新向服务器发起请求来分类,一般分为强制缓存和对比缓存,强制缓存判断HTTP首部字段:cache-control,Expires.Expires是一个绝对时间,即服务器时间。浏览器检查当前时间,如果还没到失效时间就直接使用缓存文件,但是该方法存在一个问题,服务器时间和客户端时间可能不一致。Cache-control中的max-age保存一个相对时间,例如cache-control:max-age = 484200,表示浏览器收到文件后,缓存在484200s内有效,如果同时存在cache-control和Expires,浏览器总是优先使用cache-control.

对比缓存通过HTTP的last-modified,Etag字段进行判断,last-modified是第一次请求资源时,服务器返回的字段,表示最后一次更新的时间,下次浏览器请求资源时就发送if-modified-since字段,服务器用本地Last-modified时间与if-modified-since时间比较,如果不一致就认为缓存已过期并返回新资源给浏览器,如果时间一致就发送304状态码,让浏览器继续使用缓存。Etag:资源的实体标志(哈西字符串),当资源内容更新时Etag会改变,服务器会判断Etag是否发生变化,如果变化则返回新资源。

三、域名解析的过程实际是将域名还原为IP地址的过程。首先浏览器先检查本地hosts文件是否有这个网址映射关系,如果有就调用这个IP地址映射,完成域名解析。如果没找到则会查找本地DNS解析器缓存,如果查找到则返回。如果还是没有找到则会查找本地DNS服务器,如果查找到则返回。最后迭代查询,按根域服务器 ->顶级域,.cn->第二层域,hb.cn ->子域,www.hb.cn的顺序找到IP地址。

四、建立连接,这是由TCP协议完成的,主要通过三次握手进行连接。

  第一次握手: 建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;

  第二次握手: 服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

  第三次握手: 客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。

  完成三次握手,客户端与服务器开始传送数据。

五、完整的HTTP请求包含请求起始行、请求头部、请求主体三部分。

六、服务器在收到浏览器发送的HTTP请求之后,会将收到的HTTP报文封装成HTTP的Request对象,并通过不同的Web服务器进行处理,处理完的结果以HTTP的Response对象返回,主要包括状态码,响应头,响应报文三个部分。

  状态码主要包括以下部分

  1xx:指示信息–表示请求已接收,继续处理。

  2xx:成功–表示请求已被成功接收、理解、接受。

  3xx:重定向–要完成请求必须进行更进一步的操作。

  4xx:客户端错误–请求有语法错误或请求无法实现。

  5xx:服务器端错误–服务器未能实现合法的请求。

  响应头主要由Cache-Control、 Connection、Date、Pragma等组成。

  响应体为服务器返回给浏览器的信息,主要由HTML,css,js,图片文件组成。

七、如果说响应的内容是HTML文档的话,就需要浏览器进行解析渲染呈现给用户。整个过程涉及两个方面:解析和渲染。在渲染页面之前,需要构建DOM树和CSSOM树。在浏览器还没接收到完整的 HTML 文件时,它就开始渲染页面了,在遇到外部链入的脚本标签或样式标签或图片时,会再次发送 HTTP 请求重复上述的步骤。在收到 CSS 文件后会对已经渲染的页面重新渲染,加入它们应有的样式,图片文件加载完立刻显示在相应位置。

八、关闭TCP连接或继续保持连接,通过四次挥手关闭连接(FIN ACK, ACK, FIN ACK, ACK)。

 

第一次挥手是浏览器发完数据后,发送FIN请求断开连接。第二次挥手是服务器发送ACK表示同意,如果在这一次服务器也发送FIN请求断开连接似乎也没有不妥,但考虑到服务器可能还有数据要发送,所以服务器发送FIN应该放在第三次挥手中。这样浏览器需要返回ACK表示同意,也就是第四次挥手。

时间: 2024-12-14 14:20:32

输入url会发什什么的相关文章

输入url到页面返回的过程

输入url后,你看到了百度的首页,那么这一切是如何发生的呢? 这个问题之前.最近.我想以后肯定还会被问到,或者问到这样的题目,如果在百度框里输入查询的字符串开始,是怎么返回你需要的东西呢. 那这什么个过程呢(这个问题我在之后的博客中在写)? 网上各种的说法,不外乎这么几种 第一种简单的说呢就是这样的: 第一步:客户机提出域名解析请求,并将该请求发送给本地的域名服务器. 第二步:当本地的域名服务器收到请求后,就先查询本地的缓存,如果有该纪录项,则本地的域名服务器就直接把查询的结果返回. 第三步:如

iw14.0.50来了,终于可以直接在地址栏输入url打开iw功能页面了;可以自由使用EasyUI等js框架了;显示模式对话框也不再七绕八绕惹人烦了;

示例代码已经放出!请移步使用delphi+intraweb进行微信开发1~4代码示例进行下载,虽为示例代码但是是从我项目中移出来的,封装很完备适于自行扩展和修改. iw14.0.50来了,在新的版本中最吸引我的就是增加了完善的httphandler功能:终于可以直接在地址栏输入url打开iw功能页面了:可以自由使用EasyUI等js框架了:显示模式对话框也不再七绕八绕惹人烦了:呵呵,我感觉iw第一次接近主流web开发工具了! 兴奋过了,来尝试一下吧.其实iw的坑还是挺多的,虽然已经接近主流了,但

老生常谈-从输入url到页面展示到底发生了什么

阅读目录 1.输入地址 2.浏览器查找域名的 IP 地址 3.浏览器向 web 服务器发送一个 HTTP 请求 4.服务器的永久重定向响应 5.浏览器跟踪重定向地址 6.服务器处理请求 7.服务器返回一个 HTTP 响应 8.浏览器显示 HTML 9.浏览器发送请求获取嵌入在 HTML 中的资源(如图片.音频.视频.CSS.JS等等) 刚开始写这篇文章还是挺纠结的,因为网上搜索"从输入url到页面展示到底发生了什么",你可以搜到一大堆的资料.而且面试这道题基本是必考题,二月份面试的时候

老生常谈-从输入url到页面展示到底发生了什么2

阅读目录 1.输入地址 2.浏览器查找域名的 IP 地址 3.浏览器向 web 服务器发送一个 HTTP 请求 4.服务器的永久重定向响应 5.浏览器跟踪重定向地址 6.服务器处理请求 7.服务器返回一个 HTTP 响应 8.浏览器显示 HTML 9.浏览器发送请求获取嵌入在 HTML 中的资源(如图片.音频.视频.CSS.JS等等) 刚开始写这篇文章还是挺纠结的,因为网上搜索"从输入url到页面展示到底发生了什么",你可以搜到一大堆的资料.而且面试这道题基本是必考题,二月份面试的时候

从输入URL到页面加载完成的过程中都发生了什么事情?

为了便于理解,我将整个过程分为了六个问题来展开. 第一个问题:从输入 URL 到浏览器接收的过程中发生了什么事情? 从触屏到 CPU 首先是「输入 URL」,大部分人的第一反应会是键盘,不过为了与时俱进,这里将介绍触摸屏设备的交互. 触摸屏一种传感器,目前大多是基于电容(Capacitive)来实现的,以前都是直接覆盖在显示屏上的,不过最近出现了 3 种嵌入到显示屏中的技术,第一种是 iPhone 5 的 In-cell,它能减小了 0.5 毫米的厚度,第二种是三星使用的 On-cell 技术,

当输入URL后,会发生什么[转]

当输入URL后,会发生什么 本文转载自:http://www.cnblogs.com/wenanry/archive/2010/02/25/1673368.html原文翻译自:http://igoro.com/archive/what-really-happens-when-you-navigate-to-a-url/ 作为一个软件开发者,你一定会对网络应用如何工作有一个完整的层次化的认知,同样这里也包括这些应用所用到的技术:像浏览器,HTTP,HTML,网络服务器,需求处理等等.本文将更深入的

[转]从输入url到页面加载完成的过程中都发生了什么事情

第一个问题:从输入 URL 到浏览器接收的过程中发生了什么事情? 从触屏到 CPU 首先是「输入 URL」,大部分人的第一反应会是键盘,不过为了与时俱进,这里将介绍触摸屏设备的交互. 触摸屏一种传感器,目前大多是基于电容(Capacitive)来实现的,以前都是直接覆盖在显示屏上的,不过最近出现了 3 种嵌入到显示屏中的技术,第一种是 iPhone 5 的 In-cell,它能减小了 0.5 毫米的厚度,第二种是三星使用的 On-cell 技术,第三种是国内厂商喜欢用的 OGS 全贴合技术,具体

从输入 URL 到页面加载显示完成的过程

前言:"一个页面从输入 URL 到页面加载显示完成,这个过程中都发生了什么?" 这个问题我想大多数人都不会陌生,好像是前端面试题经常会出现的,在此我也好好梳理梳理了一番,总结成这篇文章,希望能对和我一样在前端道路上奋进的小白们有所帮助,一起学习,交流. 我把这个问题拆解成两个过程: 1. 用户输入 url ---> 客户端(浏览器)拿到服务端的数据 2. 浏览器拿到数据 ---> 呈现页面(也就是浏览器工作过程) 搞清楚这两个过程后,我们也算是完整的回答了前言部分所提的问题

从输入 URL 到页面加载完的过程中都发生了什么---优化

这篇文章是转载自:安度博客,http://www.itbbu.com/1490.html 在很多地方看到,感觉不错,理清了自己之前的一些思路,特转过来留作记录. 一个HTTP请求的过程 为了简化我们先从一个HTTP请求开始,简要介绍一下一个HTTP求情的网络传输过程,也就是所谓的“从输入 URL 到页面下载完的过程中都发生了什么事情”,直白点就是:输入网址到打开网页这个过程中都发生了什么,你不知道的事情. ● DNS Lookup 先获得URL对应的IP地址 ● Socket Connect 浏