从用户浏览器输入url到用户看到页面结果的过程,发生了什么事情?

题外话:最近经历面试,被问到至少三次这个问题,想起来总结一下。其实这个问题可以换个问法:请描述一下一次完整的http请求过程。

1、域名解析

域名解析的过程:

    1).查询浏览器自身DNS缓存

2).若上面没有查找到,则搜索操作系统自身的dns缓存

3).若上面没有找到,则尝试读取hosts文件

4).若上面没有找到,向本地配置的首选DNS服务器发送请求

5).win系统 如果上面没有找到,操作系统查找NetBIOS name cache

6).win系统 如果上面没有找到,查询wins服务器

7).win系统 如果上面没有找到,广播查找

8).win系统 如果上面没有找到,读取LMHOSTS文件

若以上多没有找到,解析失败

2、 TCP三次握手

3、浏览器向服务器发送http请求

一旦建立了TCP连接,Web浏览器就会向Web服务器发送请求命令。例如:GET/sample/hello.jsp HTTP/1.1。

4、浏览器发送请求头信息

浏览器发送其请求命令之后,还要以头信息的形式向Web服务器发送一些别的信息,之后浏览器发送了一空白行来通知服务器,它已经结束了该头信息的发送。

5、服务器处理请求

服务器软件收到http请求,确定执行什么(ASP.net PHP RUBY JAVA等)来处理他。读取参数并进行逻辑操作后,生成指定的数据。

6、服务器做出应答

客户机向服务器发出请求后,服务器会客户机回送应答,HTTP/1.1 200 OK ,应答的第一部分是协议的版本号和应答状态吗

7、服务器发送应答头信息

正如客户端会随同请求发送关于自身的信息一样,服务器也会随同应答向用户发送关于它自己的数据及被请求的文档。

8、服务器发送数据

Web服务器向浏览器发送头信息后,它会发送一个空白行来表示头信息的发送到此为结束,接着,它就以Content-Type应答头信息所描述的格式发送用户所请求的实际数据。

9、tcp连接关闭

一般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接,然后如果浏览器或者服务器在其头信息加入了这行代码:
Connection:keep-alive 
TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽

推荐阅读:

一次完整的HTTP请求所经历的7个步骤

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

一次完整的Http请求过程

一次完整的HTTP事务是怎样一个过程?

时间: 2024-10-21 10:57:53

从用户浏览器输入url到用户看到页面结果的过程,发生了什么事情?的相关文章

从浏览器输入一个地址到渲染出网页这个过程发生了什么???

1. 了解URL:     其中:登录信息  查询字符串 服务器端口号 文件路径 片段标识符可选, 如果没有的就是默认配置.2.DNS解析服务      计算机需要将域名理解为IP地址, 这个时候就需要DNS解析服务来提供帮助,主要遵循如下查找过程:      浏览器缓存-浏览器会保存DNS记录,每个      系统缓存-如果再浏览器缓存里面没有找到记录,则在系统缓存中获取.      路由器缓存      DNS服务器 递归搜索 3. 建立TCP连接  由DNS服务解析的IP地址之后,通过IP

细说浏览器输入URL后发生了什么

细说浏览器输入URL后发生了什么 总体概览 大体上,可以分为六步,当然每一步都可以详细都展开来说,这里先放一张总览图: DNS域名解析 在网络世界,你肯定记得住网站的名称,但是很难记住网站的 IP 地址,因而也需要一个地址簿,就是 DNS 服务器.DNS 服务器是高可用.高并发和分布式的,它是树状结构,如图: 根 DNS 服务器 :返回顶级域 DNS 服务器的 IP 地址 顶级域 DNS 服务器:返回权威 DNS 服务器的 IP 地址 权威 DNS 服务器 :返回相应主机的 IP 地址 DNS的

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

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

输入url到页面加载都发生了什么事情?(一道软件测试面试题)

文章首发于公众号:软件测试er 输入url到页面加载都发生了什么事情?这是一道软件测试面试题,且相关知识其实还有多种问法: Question 1请讲一下tcp三次握手 OK等你把这个记好了,下次面试:Question 2 tcp和http有什么区别?? Question 3 http和https区别? Question 4 http请求方法? Question 5常见的返回状态码有哪些?都是什么含义?...一开始我也只是应付面试,去了解这些问题,但是发现自己并不能很好的理解.而在平时测试中需要定

URL 加载到页面的完整过程

(本图为:URL 加载到页面的完整过程) 今天小编带来这篇文章主要关于“从输入 URL 到页面加载完的过程中都发生了什么事情”这个主题来进行探讨下. 一个HTTP请求的过程 为了简化我们先从一个HTTP请求开始,简要介绍一下一个HTTP求情的网络传输过程,也就是所谓的“从输入 URL 到页面下载完的过程中都发生了什么事情” DNS Lookup 先获得URL对应的IP地址 Socket Connect 浏览器和服务器建立TCP连接 Send Request 发送HTTP请求 Content Do

计算机网络【6】—— 从浏览器输入URL到显示页面发生了什么

当在浏览器地址栏输入网址,如:www.baidu.com后浏览器是怎么把最终的页面呈现出来的呢?这个过程可以大致分为两个部分:网络通信和页面渲染. 一.网络通信 互联网内各网络设备间的通信都遵循TCP/IP协议,利用TCP/IP协议族进行网络通信时,会通过分层顺序与对方进行通信.分层由高到低分别为:应用层.传输层.网络层.数据链路层.发送端从应用层往下走,接收端从数据链路层网上走.如图所示: 1. 在浏览器中输入url 用户输入url,例如http://www.baidu.com.其中http为

在浏览器输入URL发生了什么

在我们输入google.com之后,浏览器上很快就会呈现出谷歌的页面,本文简单介绍一下从URL的输入到浏览器页面的展示,这中间发生了些什么. URL是什么URL全名叫统一资源定位符,uniform resource Locator,字面上来理解,它就是用来定位资源的.相当于图书上面的标签,有了这些标签,管理员可以很快的找到相应的图书.一个完整的URL包括以下信息:协议(最常见的有http协议,https协议,file协议.FTP协议等):IP地址(一串数字):路径:端口号(访问的端口等). UR

浏览器输入url后发生的事情以及每步可以做的优化

首先总结下输入url按下回车后的大致流程: 查询url的ip地址. 建立tcp连接,连接服务器. 浏览器发起http/https请求. 服务器响应浏览器的请求. 网页的解析与渲染. 下面分析每个过程 查询url的ip地址详细过程: 浏览器解析出url中的域名. 查询浏览器的DNS缓存. 浏览器中没有DNS缓存,则查找本地客户端hosts文件有无对应的ip地址. hosts中无,则查找本地DNS服务器有无对应的缓存. 若本地DNS服务器没有缓存,则向根服务器查询,进行递归查找. 递归查找从顶级域名

浏览器输入url到整个页面显示出来经历的过程

笔记摘自 http://www.cnblogs.com/lichenghan/p/4019370.html ? ? 首先,对于http肯定是有客户端和服务器的 ? ? 在这个语境中,客户端和服务器本质上也都是一个软件,实现了http协议相关标准的软件. ? ? 客户端一般由都是由浏览器充当,也就是说,在浏览器中实现了http客户端的相关功能. ? ? 而服务器的实现就多种多样啦,我们可以用java写servlet,c#写ASP.net,还有php,ruby,Python,nodejs等.实际上我