浏览器输入www.google.com执行过程

1. 查询DNS,获取域名对应的IP地址

  • 浏览器搜索自身的DNS缓存

  • 操作系统缓存

  • 读取hosts文件
  • 如果不在,向DNS服务器发起一个DNS查询请求

2. 浏览器获得域名对应的IP地址后,打开TCP连接,三次握手

  • 第一次握手:主机A发送位码SYN=1,随机产生sequence number=x的数据包到服务器,主机B由SYN=1知道,A要求建立连接

  • 第二次握手:主机B收到请求后要确认联机信息,向A发送acknowledge number=x+1,ACK=1,并随机产生sequence number=y的包
  • 第三次握手:主机A收到后检查acknowledge number是否正确,即第一次发送的x+1,以及位码ACK是否为1,若正确,主机A会再发送acknowledge number=y+1,ACK=1,主机B收到后确认acknowledgenumber值与ACK=1则连接建立成功

  • 完成三次握手,主机A与主机B开始传送数据

3. TCP/IP连接建立后,浏览器就可以向服务器发送HTTP请求了

1 GET http://google.com/ HTTP/1.1
2 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
3 User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:29.0) Gecko/20100101 Firefox/29.0
4 Accept-Encoding: gzip, deflate
5 Connection: Keep-Alive
6 Host: google.com
7 Cookie: datr=1265876274-[...]; locale=en_US; lsd=WW[...]; c_user=2101[...]

4. 服务器接受到这个请求,根据路径参数经过后端的一些处理生成HTML页面代码返回给浏览器

1 HTTP/1.1 200 OK
2 Cache-Control: private, no-store, no-cache, must-revalidate, post-check=0, pre-check=0
3 Expires: Thu, 19 Nov 1981 08:52:00 GMT
4 Pragma: no-cache
5 Content-Encoding: gzip
6 Content-Type: text/html; charset=utf-8
7 Connection: Keep-Alive
8 Content-length: 1215
9 Date: Fri, 30 May 2014 08:10:15 GMT

5. 浏览器拿到完整的HTML页面代码开始解析和渲染,然后把完整的页面呈现给用户

 

posted @ 2018-03-14 11:51  sakura1027  阅读(761)  评论(0编辑  收藏  举报