大致流程
- URL解析
- DNS查询
- 建立TCP连接
- 浏览器发送HTTP请求
- 服务器端响应请求
- 渲染页面
1 URL解析
请求发起后,浏览器首先会解析URL得到协议,域名,端口,资源路径等信息
2 浏览器查找域名对应的ip地址
- 浏览器先检查自身的缓存中是否存在该域名和ip的映射关系,存在则直接返回ip地址;
- 如果没有,则检查是否存在本地主机的Hosts文件里,没有则向本地DNS服务器发送请求,本地DNS服务器一般都是你的网络接入服务器商提供,如中国移动
- 查询域名对应ip的DNS请求到达本地DNS服务器之后,本地DNS服务器会首先查询它的缓存记录,如果缓存中有此条记录,就可以直接返回结果,此过程是递归的方式进行查询。如果本地DNS服务器缓存中没有该记录,则本地DNS服务器还要向DNS根服务器进行查询
- 根DNS服务器没有记录具体的域名和Ip地址的对应关系,而是告诉本地DNS服务器,你可以到域服务器上去继续查询,并给出域服务器的地址。这是个迭代的过程;
- 本地DNS服务器继续向域服务器发出请求,域服务器一般也不会直接返回域名和IP的对应关系,而是告诉本地DNS服务器,你的域名解析服务器的地址;
- 最后,本地DNS服务器向域名的解析服务器发出请求,这时就能收到一个域名和IP地址的对应关系,本地DNS服务器把IP地址返回给用户主机,并把这个对应关系保存在缓存中。
3TCP连接
浏览器拿到域名对应ip地址后,会以随机端口向WEB服务器程序80端口发起TCP的连接请求,发起三次握手,建立连接。
三次握手建立连接另外总结
4浏览器向WEB服务器发起HTTP请求
建立TCP连接之后,发起HTTP请求,请求一般分为三部分:
请求行(方法 url 协议版本 CRLF)
请求头(主机名,cookie等)
实体主体部分
5服务器端处理
服务器收到请求后,根据路径参数映射到特定的请求处理器进行处理,并将处理结果及相应的视图返回给浏览器;
6渲染页面
浏览器根据请求的得到的资源和数据渲染页面,最终向用户呈现一个完整的页面。