1 输入的是IP地址
简述:
- 浏览器从地址栏的输入获得服务器的IP地址和端口号
- 浏览器用TCP的三次握手与服务器建立连接
- 浏览器向服务器发送拼接好的报文
- 服务器收到报文后处理请求,同样拼好报文再发给浏览器
- 浏览器解析报文,渲染输入页面
2 输入的是域名
浏览器先看自己的缓存有没有,没有就向操作系统要,还没有就检查本机域名解析文件 hosts,让浏览器知道域名对应的IP地址,就可以愉快地建立TCO连接发送HTTP请求了。
3 真实的网络世界
第一个场景只有浏览器和服务器;第二个场景增加了一个DNS角色。真实的世界会更复杂。
- 接入网络:网线接入固定网络;蜂窝网、WIFI等接入移动网络,运营商分配一个IP地址。
- 域名解析:层层解析,缓存。
- CDN 缓存网站大部分资源,如静态资源,直接响应你的请求,发送数据给你。
- 从目标网站获取动态资源
- 目标网站服务器,入口是负载均衡设备,背后是许多服务器构成的集群
- 负载均衡设备先访问系统的缓存服务器,如 memory级缓存 Redis,和disk级缓存 Varnish。
- 缓存服务器没有,负载均衡设备把请求转发给 应用服务器。
- 应用服务器 的输出到了负载均衡设备里,请求的处理就算完成,然后按原路返回,经多许多路由器、网关、代理等。
- 网站的响应数据回到了设备,可能是HTML、json、图片或者其他格式的数据,需要浏览器解析处理才能展示,如果数据里有超链接,指向别的资源,那么就又要重走一遍流程,直到所有资源下载完成。