1,一次http请求做了什么?
用户在浏览器输入www.baidu.com这个url时,它会请求DNS把这个域名解析成对应的IP地址,根据IP地址找到对应服务器。服务器可能有多台,需要负载均衡设备来平均用户请求;请求的数据是存储在分布式缓存里还是一个静态文件中,或是在数据库里;当数据返回浏览器,浏览器解析数据发现还有一些静态资源,此时又会发起另外的http请求,请求可能在CDN上,然后CDN服务器处理这个请求,大体上会涉及这些操作。
2,如何发起一个http请求?
与建立一个socket连接区别不大。通过outputstream.write 写的二进制字节数据格式要符合http。浏览器在建立socket连接之前,根据ip和端口与远程服务器建立远程连接,然后浏览器根据url组装成一个get类型的http请求头,通过outputstream.write 发送到目标服务器,服务器等待inputstream.read 返回数据,然后断开连接。
此处贴代码。可以用基本的httpClient发起,也有linux中curl命令。
3,了解常见的http请求头、响应头、状态码
FireFox中的Firebug和HttpFox、Chrome自带的
4,DNS域名解析过程
(1)输入域名地址,浏览器会先检查缓存中有没有与域名对应的ip地址。有,解析过程就结束。(TTL属性可设置域名被缓存时间)
(2)查找操作系统中是否有缓存,hosts文件可设置。有,解析过程就结束。
(3)网络配置中会有DNS服务器地址,操作系统会把域名发送给这里设置的DNS地址,即本地区域名服务器LDNS。(80%的域名解析到此结束。)
命令:windows 可用 ipconfig linux 可用 cat 、etc/resolv.conf
(4)LDNS失败,就会到RootServer域名服务器请求解析。根域名服务器会返回一个主域名服务器地址(gTLD国际顶级域名服务器)
(5)LDNS再向gTLD服务器发送请求
(6)gTLD服务器会返回域名对应的NameServer域名服务器(注册的域名服务器即域名提供商)。
(7)NameServer服务器会返回域名-IP映射关系,连同TTL值返回给LDNS。最后解析结果返回给用户。
命令:追踪域名解析过程 A、nslookup(windows linux 均可) B、dig www.baidu.com C、可以用 InetAddress类解析域名。
5,CDN工作机制
(1)概念描述:是一种先进的流量分配网络,通过在现有的internet中增加一层新的网络架构,将内容发布到最接近用户的网络边缘,使用户就近获取信息,提高网站响应速度。比喻:CDN= 镜像+缓存+整体负载均衡,因为可以明显网络中提高信息流动的效率。目前主要是缓存网站中的静态数据。
(2)场景描述:用户访问某个静态文件通过域名 cdn.image.com, 首先经过LDNS,经过迭代解析,会到域名的注册服务器解析。这时候DNS解析服务器通常会把它重新CNAME到另外一个域名,而这个域名最终会被指向CDN全局中的DNS负载均衡服务器,再由GTM来最终分配访问最快节点,并返回给用户。如果该节点没有对应文件,则需要到源站去找,然后再返回。
6,负载均衡
通常有3种负载均衡架构:链路负载均衡、集群负载均衡、操作系统负载均衡。
7,CDN动态加速
原文:https://www.cnblogs.com/xudan/p/12064741.html