浏览器缓存:首先搜索浏览器自身的DNS缓存(缓存的韶光比较短,大概只有1分钟,且只能容纳1000条缓存),看自身的缓存中是否是有域名对应的条款,而且没有过期,如果有且没有过期则解析到此结束。
系统缓存:如果浏览器自身的缓存里面没有找到对应的条款,那么浏览器会搜索操作系统自身的DNS缓存,如果找到且没有过期则停滞搜索解析到此结束。
路由器缓存:如果系统缓存也没有找到,则会向路由器发送查询要求。
ISP(互联网做事供应商) DNS缓存:如果在路由缓存也没找到,末了要查的便是ISP缓存DNS的做事器。
1.2 浏览器与WEB做事器建立一个TCP连接TCP的3次握手。
1.3 浏览器给WEB做事器发送一个HTTP要求一个HTTP要求报文由要求行(request line)、要求头部(headers)、空行(blank line)和要求数据(request body)4个部分组成。
图1 HTTP要求格式
1.3.1 要求行
要求行分为三个部分:要求方法、要求地址URL和HTTP协议版本,它们之间用空格分割。例如,GET /index.html HTTP/1.1。
1.要求方法
HTTP/1.1 定义的要求方法有8种:GET(完全要求一个资源)、POST(提交表单)、PUT(上传文件)、DELETE(删除)、PATCH、HEAD(仅要求相应首部)、OPTIONS(返回要求的资源所支持的方法)、TRACE(追求一个资源要求中间所经由的代理)。最常的两种GET和POST,如果是RESTful接口的话一样平常会用到GET、POST、DELETE、PUT。
(1)GET
当客户端要从做事器中读取文档时,当点击网页上的链接或者通过在浏览器的地址栏输入网址来浏览网页的,利用的都是GET办法。GET方法哀求做事器将URL定位的资源放在相应报文的数据部分,会送给客户端。
利用GET方法时,要求参数和对应的值附加在URL后面,利用一个问号‘?’代表URL的结尾与要求参数的开始,通报参数长度受限定。例如,/index.jsp?id=100&op=bind。通过GET办法通报的数据直接放在地址中,以是GET办法的要求一样平常不包含“要求内容”部分,要求数据以地址的形式表现在要求行。
地址中‘?’之后的部分便是通过GET发送的要求数据,各个数据之间用‘&’符号隔开。显然这种办法不适宜传送私密数据。其余,由于不同的浏览器对地址的字符限定也有所不同,一样平常最多只能识别1024个字符,以是如果须要传送大量数据的时候,也不适宜利用GET办法。如果数据是英笔墨母/数字,原样发送;如果是空格,转换为+;如果是中文/其他字符,则直接把字符串用BASE64加密,得出:%E4%BD%A0%E5%A5%BD,个中%XX中的XX为该符号以16进制表示的ASCII。
(2)POST
许可客户端给做事器供应信息较多。POST方法将要求参数封装在HTTP要求数据中,以名称/值的形式涌现,可以传输大量数据,这样POST办法对传送的数据大小没有限定,而且也不会显示在URL中。POST办法要求行中不包含数据字符串,这些数据保存在“要求内容”部分,各数据之间也是利用‘&’符号隔开。POST办法大多用于页面的表单中。由于POST也能完成GET的功能,因此多数人在设计表单的时候一律都利用POST办法,实在这是一个误区。GET办法也有自己的特点和上风,我们该当根据不同的情形来选择是利用GET还是利用POST。
图2 HTTP要求方法
2.URL
URL:统一资源定位符,是一种资源位置的抽象唯一识别方法。
组成:<协议>://<主机>:<端口>/<路径>
端口和路径有事可以省略(HTTP默认端口号是80)
3.协议版本
协议版本的格式为:HTTP/主版本号.次版本号,常用的有HTTP/1.0和HTTP/1.1
1.3.2 要求头部
要求头部为要求报文添加了一些附加信息,由“名/值”对组成,每行一对,名和值之间利用冒号分隔。
要求头部的末了会有一个空行,表示要求头部结束,接下来为要求数据。
1.3.3 要求数据
要求数据不在GET方法中利用,而在POST方法中利用。POST方法适用于须要客户填写表单的场合。与要求数据干系的最长利用的要求头部是Cntent-Type和Content-Length。下面是一个POST方法的要求报文:
POST /index.php HTTP/1.1 要求行
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:10.0.2) Gecko/20100101 Firefox/10.0.2要求头
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
Accept-Language: zh-cn,zh;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: http://localhost/
Content-Length:25
Content-Type:application/x-www-form-urlencoded
空行
username=aa&password=1234 要求数据
1.4 做事器端相应HTTP要求,浏览器得到HTML代码HTTP相应报文由状态行(status line)、相应头部(headers)、空行(blank line)和相应数据(response body)4个部分组成。
1.4.1 状态行
状态行由3部分组成,分别为:协议版本、状态码、状态码扫描。个中协议版本与要求报文同等,状态码描述是对状态码的大略描述。
1.4.2 相应头部
1.4.3 相应数据
用于存放须要返回给客户真个数据信息。
HTTP/1.1 200 OK 状态行
Date: Sun, 17 Mar 2013 08:12:54 GMT 相应头部
Server: Apache/2.2.8 (Win32) PHP/5.2.5
X-Powered-By: PHP/5.2.5
Set-Cookie: PHPSESSID=c0huq7pdkmm5gg6osoe3mgjmm3; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Length: 4393
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=utf-8
空行
<html> 相应数据
<head>
<title>HTTP相应示例<title>
</head>
<body>
Hello HTTP!
</body>
</html>
1.5 浏览器解析HTML代码,并要求HTML代码中的资源浏览器拿到HTML文件后,开始解析HTML代码,碰着静态资源时,就向做事器端去要求下载。
1.6 关闭TCP连接,浏览器对页面进行渲染呈现给用户浏览器利用自己内部的事情机制,把要求到的静态资源和HTML代码进行渲染,呈现给用户。
来源:CSDN