Http解析
HTTP采用无状态的短连接的通信方式
B/S网络架构的核心是HTTP。其中HTTP Header
是最重要的一部分,它控制着互联网中海量用户的数据传输。最关键的是它控制着用户浏览器的渲染行为
和服务器的执行逻辑
。
常见的HTTP请求头
请求头 | 说明 |
---|---|
Host | 用于指定被请求资源的Internet主机和端口号 |
User-Agen | 客户端将它的操作系统、浏览器和其他属性告诉服务器。 |
Connection | 当前连接是否保持 |
常见的HTTP响应头
响应头 | 说明 |
---|---|
Server | 使用的服务器名称 |
Content-Type | 用来指明发送给接收者的实体正文的媒体类型,如Content-Type:text/html;charset=GBK |
Keep-alive | 保持连接的时间 |
常见的HTTP状态码
状态码 | 说明 |
---|---|
200 | 客户端请求成功 |
302 | 临时跳转,跳转的地址通过Location确定 |
400 | 客户端请求有语法错误,不能被服务器识别 |
404 | 请求的资源不存在 |
500 | 服务器发生不可预测的错误 |
浏览器缓存机制
Ctrl+F5组合键刷新页面,服务器会直接向目标URL发送请求,而不会使用浏览器缓存的数据。原因是在请求头中增加了两项:Pragma:no-cache和Cache-Control:no-cache
下面是浏览百度主页时的request header:
下面是CTRL+F5后的request header:
- Cache-Control/Pragma
- 这个
HTTP Head
字段用于指定所有缓存机制在整个请求/响应链中必须服从的指令 - no-cache:所有内容都不会被缓存,在请求头和响应头中设置
- 这个
- Experies
- 后面一般跟着一个日期,超过这个时间后,缓存的内容失效,浏览器在发起请求之前会检查这个字段。
- Last-Modified/Etag
- Last-Modified 字段一般用于表示一个服务器上的资源的最后修改时间。
- Etag 这个字段让服务器给每个页面分配一个唯一的编号,然后通过这个编号来区分当前这个页面是否是最新的。
DNS域名解析
将域名解析成IP地址就是DNS解析的主要工作内容。
当用户在浏览器中输入域名并确定后:
- 浏览器检查缓存中是否有这个域名对应的解析过的IP地址,如果有,解析结束。
- 如果缓存中没有,浏览器查找操作系统的缓存是否有这个域名对应的解析结果。
- 如果还没有,操作系统会把这个域名发送给本地区的域名服务器-LDNS
- 假如LDNS仍然没有命中,就直接到Root Server域名服务器请求解析。
- 根据域名服务器返回给本地域名服务器一个所查询域的主域名服务器(gTLD Server)地址。
- LDNS向上一步返回的gTLD Server发送请求
- 接受请求的gTLD服务器查找并返回此域名对应的Name Server域名服务器的地址。
- Name Server域名服务器会查询域名和IP的映射关系,在正常情况下根据域名得到目标IP记录,连通一个TTL值返回给DNS域名服务器。
- 返回该域名对应的IP值和TTL值,Local DNS Server 会缓存这个域名和IP的对应关系,缓存时间由TTL值控制。
- 把解析的结果返回给用户,用户根据TTL值缓存在本地系统缓存中,域名解析过程结束。
Linux下常用命令:
- curl URL :返回这个页面的HTML数据
- nslookup :查询域名的解析结果
- dig :查询DNS的解析过程
注:如果用InetAddress类来解析域名,必须是单例模式
几种域名的解析方式:
- A记录:A=Address,用来指定域名对应的IP地址
- MX记录,表示的是Mail Exchange,就是可以将某个域名下的邮件服务器指向自己的Mail Server
- CNAME记录,全称是 Canoncial Name(别名解析)
- NS记录,为某个域名指定DNS解析服务器
- TXT记录,为某个主机名或域名设置说明
CDN工作机制
CDN也就是内容分布网络(Content Delivery Network),其目的是在现有的 Internet 中增加一层新的网络架构,将网站的内容发布到离用户最近的网络“边缘”,使用户可以就近取得所需内容,提高用户访问网站的速度。
CDN = 镜像(Mirror) + 缓存(Cache) + 整体负载均衡(GSLB)
CDN要达到以下的几个目标:
- 可扩展
- 安全性
- 可靠性、响应和执行
负载均衡(Load Balance)就是对工作任务进行平衡,分摊到对个操作单元上执行。通常有3种负载架构,分别是链路负载均衡、集群负载均衡和操作系统负载均衡。
CDN动态加速
技术原理:在CDN的DNS解析中通过动态的链路探测来寻找回源最好的一条路径,然后通过DNS的调度将所有请求调度到选定的这条路径上回源,从而加速用户的访问效率。