从浏览器输入网址回车到看到页面过程到底经历了什么?(代码片段)

author author     2022-12-10     174

关键词:

技术图片

作者:老油条IT记
公众号:老油条IT记

#前言:从浏览器输入网址到回车看到页面的过程,面试逃不掉的一个问题,我们知道从浏览器输入网址到看到页面主要是涉及DNS解析,TCP三次握手,请求报文,响应报文,TCP4次挥手。

#首先我们先来看一下总体的访问过程

#总体的访问过程:首先会进行DNS解析,然后解析得到地址之后客户端和web服务器会建立一条TCP连接,其中有一个TCP三次握手过程,当完成握手之后客户端就会向浏览器发送一条请求报文,服务器然后进行响应,接着当数据传输完之后,服务器和客户端有一个TCP四次挥手过程,来结束连接。

技术图片

#然后我们来将过程分解一下

#dns解析流程

在浏览器中输入网址回车后,首先系统会去找这个域名对应的ip,然后再根据这个ip地址查找web服务器,
这里面有个DNS解析流程
    1、系统首先查找本地的DNS缓存和hosts文件信息,确认是否有www.baidu.com对应的ip地址,如果有就直接访问这个ip地址对应的www.baidu.com web服务器

    2、如果没有,那么系统会将解析请求发送给本机网卡指定的DNS服务器,称为LDNS(本地dns),如果本地DNS服务器中有域名www.baidu.com所对应的的ip地址,就会去访问这个IP对应的web服务器,如果没有就去请求其他DNS服务器

    3、LDNS服务器会从根域名服务器开始对于域名www.baidu.com的解析,全球有13台根服务器,根域名服务器没有www.baidu.com的解析记录,有.com顶级域的解析记录,然后把.com所对应的DNS服务器地址返回给LDNS服务器

    4、LDNS获取到.com的DNS服务器地址之后,就去.com服务器请求www.baidu.com域名的解析,.com里面也没有www.baidu.com域名对应的地址,但是有baidu.com域名的解析记录,然后.com服务器将baidu.com对应的DNS服务器地址返回给LDNS,

    5、同理LDNS去找baidu.com的DNS服务器请求www.baidu.com的域名解析,然后baidu.com域名DNS服务器将www.baidu.com地址对应的IP解析记录发送回给LDNS

    6、LDNS把解析出的结果www.baidu.com对应的ip地址发送给客户端的浏览器,然后也记录到缓存中

#浏览器通过解析后得到的ip地址和端口号与web服务器建立一条TCP连接通道

#tcp3次握手过程
技术图片

三次握手指一个TCP连接时,需要客户端和服务器总共发送3个包
    第一次握手:建立连接时,客户端A发送syn包(syn=j)到服务器B,并进入Syn_send状态,等待服务器B确认
    第二次握手:服务器B收到syn包,必须确认客户A的syn(ACK=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,然后服务器B进入SYN_RECV状态
    第三次握手:客户端A收到服务器B的SYN+ACK包,向服务器B发送确认包ACK(ACK=k+1),包发送完毕,客户端A和服务端B进入ESTABLISHED状态,完成三次握手

#建立TCP连接时,浏览器向web服务器发送一条HTTP请求报文
技术图片

请求报文包括:请求行,请求头部,空白行,请求报文主体
    请求行:
        用来说明客户端想要做什么,内容包括方法字段(请求方法包括:GET:请求指定资源,HEAD,请求响应报文的首部,
        POST:提交数据到服务器,PUT:传送的数据取代指定的文档内容,DELETE:删除Request-URI所标识的资源,MOVE:
        移动)、URL字段以及HTTP协议版本(最开始的0.9版本,后来又有了1.0,1.1,2.0,其中1.1是主流)

    请求头:
        通过客户端把请求的相关信息发给服务器,内容包括媒体类型,语言类型,主机名等信息

    空行:
        告诉服务器空行以下内容不属于请求头部信息

    请求报文主体:
        用来说明客户端具体想要做的事情

#有请求报文来请求服务器,就会有服务器端去响应,为响应报文
技术图片

 响应报文包括:状态行,响应头部,空白行,响应报文主体
    状态行
        用来说明服务器响应客户端的状态,包括一些状态码信息:一些比较重要的状态码信息有:
            200-ok                        访问成功
            301-moved permanently       永久跳转
            403-Forbidden                   禁止访问,服务端设置了相关权限,客户端没有权限去访问
            404-Not Found                    没有找到访问的页面,客户端请求的页面不存在
            500-Internal servr error    内部服务器错误
            502-Bad gateway                坏的网关
            503-Service Unavailble        服务不可用,服务超载或停机
            504-Gateway Timeout            网关超时,没有在特定时间内处理请求

    响应头将服务器响应的相关信息发给客户端

    空行:
        告诉客户端空行一下内容不属于响应头部信息

    响应报文主体:
        将web服务数据资源返回给客户端
            包括静态网页资源,动态网页资源,和伪静态资源
            纯html格式的为静态网页,服务端写的什么就返回什么给客户端
            常见的静态网页后缀有html htm xml

            以.php .js .aspx结尾的为动态网页,以数据库为基础,可以实现很多功能

            伪静态网页是通过一些技术(如rewrite重写)将动态的URL伪装成静态的URL,但实际上还是动态的URL

#当完成数据传输之后,就会有一个四次挥手的过程来进行断开连接

#tcp4次挥手过程
技术图片

  第一次挥手
    客户端A发送一个FIN,用来关闭客户端A到服务器B的数据传送
  第二次挥手
    服务器B收到这个FIN,会回一个ACK,确认序号为收到的序号加1
  第三次挥手
    服务器B关闭与客户端A的连接,发送一个FIN给客户端A
  第四次挥手
    客户端A发回ACK报文确认,并将确认序号设置为收到序号加1

网页从输入网址到渲染完成经历了哪些过程?

...对应的web服务器对应的ip地址;与web服务器建立TCP连接;浏览器向web服务器发送http请求;web服务器响应请求,并返回指定url的数据(或错误信息,或重定向的新的url地址);浏览器下载web服务器返回的数据及解析html源文件;生... 查看详情

输入一个url到浏览器页面展示都经历了哪些过程(代码片段)

...定是输入你要访问的网站网址了,俗称url;二:缓存解析浏览器获取了这个url,当然就去解析了,它先去缓存当中看看有没有,从浏览器缓存-系统缓存-路由器缓存当中查看,如果有从缓存当中显示页面,然后没有那就进行步骤... 查看详情

从输入url到页面展示,到底发生了什么

...URL到页面展示,到底发生了什么1、输入URL当我们开始在浏览器中输入网址的时候,浏览器其实就已经在智能的匹配可能得url了,他会从历史记录,书签等地方,找到已经输入的字符串可能对应的url,然后给出智能提示,让你可... 查看详情

从输入网址到页面展现的全部过程

第1章ECMAScript6历史文档内容全部复制于http://es6.ruanyifeng.com/。ES6中包含了许多新的语言特性,它们将使JS变得更加强大,更富表现力。在我们开始详细学习之前,我认为十分有必要花几分钟讲解一下ES6到底是什么,以及你可以从... 查看详情

从输入url到页面展示到底发生了什么(代码片段)

阅读目录1、输入地址2、浏览器查找域名的IP地址  3、浏览器向web服务器发送一个HTTP请求4、服务器的永久重定向响应5、浏览器跟踪重定向地址6、服务器处理请求7、服务器返回一个HTTP响应 8、浏览器显示HTML9、浏览器发送请... 查看详情

一个页面从输入url到页面加载显示完成,中间都经历了什么

第一种解释:一般会经历以下几个过程:1、首先,在浏览器地址栏中输入url2、浏览器先查看浏览器缓存-系统缓存-路由器缓存,如果缓存中有,会直接在屏幕中显示页面内容。若没有,则跳到第三步操作。3、在发送http请求前,... 查看详情

从url输入到页面展现原理(代码片段)

打开浏览器从输入网址到网页展现,背后到底发生了什么?经历怎么样的一个过程?总体来说分为以下几个过程:DNS解析:将域名解析成IP地址TCP连接:TCP三次握手发送HTTP请求服务器处理请求并返回HTTP报文浏览器解析渲染页面断开... 查看详情

从输入url到页面展示到底发生了什么(代码片段)

...器发送HTTP请求|--服务器处理请求|--服务器返回HTTP响应|--浏览器显示页面信息输入地址当输入url地址后,浏览器已经在智能匹配地址了,会从历史记录、书签或缓存中查找,如果找到了,会从缓存中调出页面显示出来,在你还没... 查看详情

从输入网址到显示网页的过程中发生了什么?

...个简单而复杂的问题。大致流程总结如下:1.输入地址2.浏览器查找域名的IP地址(这一步包括DNS具体的查找过程,包括:浏览器缓存->系统缓存->路由器缓存...)3.浏览器向web服务器发送一个HTTP请求4.服务器的永久重定向响应... 查看详情

从输入网址到页面显示经历了什么

...RL中的请求进行处理分发,逐步返回一个完整的html;五,浏览器或者客户端对该HTML进行渲染;具体内容:一,解析域名转换成对应的公网的IP地址1,使用DNS服务,将域名解析为Ip地址:a,递归查询b,迭代查询从客户端到本地DNS... 查看详情

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

...了网上许多相关的文章,发现有一个问题始终绕不开:在浏览器中输入URL到整个页面显示在用户面前时这个过程中到底发生了什么。仔细思考这个问题,发现确实很深,这个过程涉及到的东西 查看详情

从输入网址到显示网页的全过程分析

...次化的认知,同样这里也包括这些应用所用到的技术:像浏览器,HTTP,HTML,网络服务器,需求处理等等。本文将更深入的研究当你输入一个网址的时候,后台到底发生了一件件什么样的事~1.首先嘛,你得在浏览器里输入要网... 查看详情

从输入一个网址到浏览器显示页面经历的全过程笔记

参考技术A浏览器会在用户输入url时查找历史信息对其补全或直接显示缓存在本地的网页。用户发起请求后,浏览器会解析这个url,将其转换为ip地址。第一步:查看hosts文件,如果hosts文件里面配置了url和ip的关系,则直接使用里... 查看详情

前端回答从输入url到页面展示都经历了些什么

浏览器和服务器涉及大量网络通信内容,此处做了弱化介绍,作为前端主要关注第四部分。一、 网络环境保障我们先假定我们访问的URL为www.abc.com并且地址不在局域网内;首先我们所处的局域网的总路由应该和ISP(因特网服务提... 查看详情

浏览器从输入网址到页面展示的过程

...iew完整高频题库阅读地址:https://febook.hzfe.org/URLDNSTCP渲染浏览器从输入网址到渲染页面主要分为以下几个过程URL(统一资源定位符,UniformResourceLocator)用于定位互联网上资源,俗称网址。我们在地址栏输入HZFE官方网址hzfe.org后... 查看详情

一个页面从输入url到页面加载显示完成,这个过程中发生了什么?

1.浏览器通过DNS查找域名对应的IP地址(DNS查询:浏览器缓存-->系统缓存-->路由器缓存-->ISPDNS缓存-->根域名服务器)2.浏览器向Web服务器发送一个HTTP请求(TCP三次握手)3.服务器301重定向(从http://example.com重定向到http://ww... 查看详情

从输入url到页面展示,这中间发生了什么?

备注:Chrome包括:1个浏览器主进程、1个GPU进程、1个网络进程、多个渲染进程、多个插件进程1.用户输入URL,浏览器会根据用户输入的信息判断是搜索还是网址,如果是搜索内容,就将搜索内容+默认搜索引擎合成新的URL;如果用... 查看详情

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

阅读目录1、输入地址2、浏览器查找域名的IP地址  3、浏览器向web服务器发送一个HTTP请求4、服务器的永久重定向响应5、浏览器跟踪重定向地址6、服务器处理请求7、服务器返回一个HTTP响应 8、浏览器显示HTML9、浏览器发送请... 查看详情