网页请求的过程

网页请求过程

<1>从url栏将域名提取出来

在浏览器上的url栏输入url,如果有汉字,这时会将汉字用unicode转换成计算机可以识别的机器语言

  • unicode(有utf-8,utf-16,utf-32三种情况,他们的区别时utf-8会将一个汉字随机转换成一、两、三、四个字节,而utf-16则会将一个汉字转换成两、四个字节,utf-32会将一个汉字转换为四个字节)

  • URL的标准格式:
    ”http://www.baidu.com/movie/movieshow?id=234&number=1314#name“

    • protocol是指网络传输协议(如:http、https、file等)。
    • hostname是指存放资源的与域名、主机名或IP地址。
    • port是指端口,有时用默认端口所以不显示。
    • path是指一个主机上的一个目录或者文件地址,它决定了服务器如何处理这个请求。
    • query从?到#之间是参数(也叫搜索部分),参数之间用&来间隔。
    • fragment用于指定网络资源中的片段,搜索部分搜索出的信息多种多样,通过fragment可以明确指出哪些信息是我们需要

<2>查询ip

获得域名之后应该是查ip,但是在此之前还有一步是查看HSTS列表上有没有要查询的域名,如果有的话就要在和这个域名对应的服务器进行联系时使用https协议(HSTS时IETE推荐的一种web协议)

1.查IP会看本机上的host文件和本地DNS服务器上看看有没有域名相关的记录

2.如果在查询根服务器之后依旧没有域名对应的ip那么将会传给下一级服务器直到查到为止。

  • 查询IP有两种方式,分别是递归查询和迭代查询,迭代查询就是这一级服务器没有IP地址的情况下,将下一级服务器的IP传给查询端由查询端访问下一级服务器的方式叫做迭代查询。递归查询是由这一级服务器直接访问下一级服务器下一级服务器同样如此,知道查到IP为止的查询方式,这种方式叫做递归查询。

<3>与对应IP的终端进行联系

tcp协议规定了客户端与服务器之间建立联系的方式

1.建立联系三次握手

一次:客户端向服务器发送SYN=1和Seq=x

  • SYN=1的意思就是请求建立联系,而Seq=x意思是发送给服务器一个随机产生的序列号

二次:服务器向客户端发送SYN=1,ACK=1,ACK number=x+1,Seq=y

  • ACK是Acknownledge的缩写,ACK=1的意思是告诉终端数据以成功收到,ACK number=x+1就是为了验证数据已经成功接受

三次:客户端向服务器发送SYN=0,ACK=1,ACK number=y+1,Seq=x+1

2.断开连接四次挥手

一次:客户端发给服务器FIN=1的TCP报文

  • FIN=1意味着发送方字节流结束,fin为TCP报头的码位字段

二次:服务器返回客户端一个ACK报文

三次:服务器给给客户端发送一个FIN报文

四次:客户端回复ACK报文

<4>页面渲染

浏览器收到服务器返回的页面数据后,开始对页面进行渲染

1.浏览器进程与线程:

浏览器是多进程的,用于页面显示的有Browser进程、第三方插件进程、GPU进程(3D绘制等)、浏览器渲染进程(浏览器内核,每个Tab页面都有一个渲染进程)。

2.浏览器渲染进程包含的线程:

GUI渲染线程、JS引擎线程、事件触发线程、定时器触发器线程、异步http请求线程

你可能感兴趣的:(网页请求的过程)