从打开一个网址说起
当在浏览器中输入一个网址的时候,浏览器会渲染出对应的网页的内容。作为web开发人员来说,应该知道这个过程:
当输入的一个网址为域名的时候,浏览器则根据本机的网关和DNS服务器来解析出访问的真正的IP地址。如果是直接访问IP则直接与服务器通信,发送请求。 请求原理简单如下:
(此处只是简单表示下域名解析原理,解析过程比这个复杂的多。)发送请求的时候会经历TCP三次握手过程(http也是基于TCP的协议),当TCP连接建立成功后,浏览器会根据http协议,把请求的内容封装成请求报文,发送给web服务器.
服务器会根据请求的报文的内容,执行对应的程序和读取对应的文件,按照http协议的规则返回响应内容(包括header和body)。
服务器根据响应头来解析响应的内容,完成html+css+js的渲染和执行。
http协议
HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。
用简单的话来说,当客户端与服务器端通信的时候,需要传输的内容有(HTML 文件,js+css, 图片,文本, 查询结果等),http协议把内容传输规范化。可以随便查看下一个http协议的内容:
(上面的图是请求jqury的请求和响应信息)
请求的头信息
GET /script/jquery.js HTTP/1.1 Host: common.cnblogs.com Connection: keep-alive Pragma: no-cache Cache-Control: no-cache User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36 Accept: */* Referer: http://kb.cnblogs.