从打开一个网址说起

当在浏览器中输入一个网址的时候,浏览器会渲染出对应的网页的内容。作为web开发人员来说,应该知道这个过程:

  1. 当输入的一个网址为域名的时候,浏览器则根据本机的网关和DNS服务器来解析出访问的真正的IP地址。如果是直接访问IP则直接与服务器通信,发送请求。 请求原理简单如下:

    大学生就业培训,高中生培训,在职人员转行培训,企业团训
    (此处只是简单表示下域名解析原理,解析过程比这个复杂的多。)

  2. 发送请求的时候会经历TCP三次握手过程(http也是基于TCP的协议),当TCP连接建立成功后,浏览器会根据http协议,把请求的内容封装成请求报文,发送给web服务器.

  3. 服务器会根据请求的报文的内容,执行对应的程序和读取对应的文件,按照http协议的规则返回响应内容(包括header和body)。

  4. 服务器根据响应头来解析响应的内容,完成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.