当我们在浏览器输入 www.baidu.com 时,浏览器就会加载出百度的主页,那么浏览器背后的处理是什么样的呢?
总体来说,大概流程是这样的!
1)当你输入URL时,浏览器的服务器会请求DNS,通过DNS来获取对应的IP。
2)通过IP来寻找对应的服务器,请求建立TCP连接。
3)浏览器发送HTTP请求包,服务器接收到后开始处理。
4)服务器收到请求后,调用自身服务开始返回HTTP请求包。
5)客户端接收到服务器的相应后开始运行,并在接收到全部内容后断开TCP连接。
1、DNS解析
当我们在浏览器中输入一个网址时,是不能直接连接的,需要用DNS地址解析将输入的URL网址转换为IP地址后才能连接。
具体过程分为:
1)在浏览器输入网址时,浏览器会先检查自己本地hosts文件有没有缓存,如果有,直接完成解析。
2)如果自身hosts文件没有缓存,则找LDNS(local DNS),本地DNS服务器如果有,直接完成解析。
3)如果hosts和本地DNS服务器都没有,则LDNS去外地的DNS服务器请求。
2、socket连接
当我们发起一个请求时,首先要建立起socket连接,socket是要通过IP和端口建立的,所以要进行DNS解析。
3、发送http请求
连接成功建立后,开始向web服务器发送请求,当浏览器向Web服务器发出请求时,它向服务器传递了一个数据块,也就是请求信息,通常有get和post。
HTTP请求信息由3部分组成:
1)请求方法URI协议/版本
2)请求头(Request Header)
3)请求正文
4、服务器响应
服务器接到请求后进行处理。从它的文档空间中搜索子目录mydir的文件index.html。如果找到该文件,Web服务器把该文件内容传送给相应的Web浏览器。Web服务器首先传送一些HTTP头信息,比较常见的有:
1) HTTP 1.0 200 OK
2) MIME_Version:1.0
3) content_type ;指示HTTP体信息的MIME类型。
4) content_length
5、断开连接
当应答结束后,浏览器与服务器必须断开,以保证其它浏览器能够与服务器建立连接。
原文地址:https://blog.51cto.com/14375911/2415993