以下为个人所知道的,可能不全,甚至有错误,但希望各位大牛帮忙改正
1.开始,客户机要访问网页,首先要把域名解析为ip地址,客户机要发送一个DNS查询包请求包,在数据包到达ISP路由器之前,有可能会做分光\镜像(个人感觉分光主要是对光纤采用分光,而普通的网线应该采用镜像),也有可能在数据包到达ISP的路由器后通过Forward把数据包复制一份给DPI(重定向服务器)。
2.DPI(重定向服务器)接收到DNS查询包后,检查DNS是允许合法的,如果合法,则定位到服务缓存器,并把一个确定的缓存服务器的ip返回给客户机(如果缓存服务器中已有缓存,则返回有缓存的服务器的IP地址),如果不合法,则丢弃查询包,而客户机按照正常的流程访问网页。(注意DNS查找其实正常DNS查询过程也是在执行的,只不过CDN返回的DNS查询结果比正常的查询结果快,代替了正常的结果)(猜测,因为按照正常的TCP流程,DPI返回的DNS查询结果客户机应该是不会接收的,所以本人猜测可能DPI在返回DNS查询请求的时候,把返回数据包的源地址改为了客户机真正的DNS地址)
3.客户接收到DPI返回的DNS数据包后,向缓存服务器发送请求,如果缓存服务器中已经存在缓存,则返回缓存的数据。如果缓存的数据不存在,那么缓存服务器向真实的服务器请求,然后把请求结果返回给客户,并缓存。
总体来说缓存服务器使用的squid或者nginx。把网页缓存下来,和我在学校做的反向代理差不多,不过中间插入了重定向,以及一些其他的功能。
CDN小文件的流程大概就这样了,希望各位大牛指出我文章中不足的地方,也好修改学习一下,谢谢!
原文:http://blog.csdn.net/dapeng0112/article/details/38130203