一、浅谈HTTP协议html
B/S构架都是经过HTTP协议的方式来交换数据的。而其中HTTP链接本质是创建一个SOCKET链接。例如经过UrlConnction模拟一个HttpClinet链接。浏览器
public static InputStream getHTMLString(String urlString)缓存
throws IOException {安全
// String urlString = "http://www.acfun.tv";服务器
InputStream stream = null;网络
try {负载均衡
URL realUrl = new URL(urlString);框架
// 创建链接性能
URLConnection connection = realUrl.openConnection();网站
// 填写头信息
connection.setRequestProperty("accept", "*/*");
connection.setRequestProperty("connection", "Keep-Alive");
connection.setRequestProperty("user-agent",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
connection.connect();
stream = connection.getInputStream();
} catch (Exception e) {
System.out.println(e.getMessage());
// TODO: handle exception
} finally {
try {
} catch (Exception e2) {
System.out.println(e2.getMessage());
// TODO: handle exception
}
}
return stream;
}
一、 HTTP解析
请求头 |
说明 |
Accept-Charset |
用于指定客户端接收的字符集 |
Accept-Encoding |
用于指定可接受的内容编码,如:Accept-Encoding:gzip.deflate |
Accept-Language |
用于指定一种天然语言,如:Accept-Language:zh-cn |
Host |
用于指定被请求资源的Internet主机和端口号,如:www.acfun.tv |
User-Agent |
客户端类型 如火狐浏览器、手机等 |
Connection |
当前链接是否保持,如:Connection:Keep-Alive |
响应头 |
说明 |
Server |
使用服务器名称,如Server:Apache/1.3.6(Unix) |
Content-Type |
用来讲明发送给接收者的实体正文的媒体类型,如Conntent-Type:text/html;charest=GBK |
Content-Encoding |
与请求报文头Accept-Encoding对应 |
Content-Language |
描述了资源所使用的天然语言,与Accept-Language对应 |
Content-Length |
指明实体正文的长度,用字节方式存储的十进制数字表示 |
Keep-Alive |
保持链接时间,如:Keep-Alive:timeout=5,max=120 |
状态码 |
说明 |
200 |
客户端请求成功 |
302 |
跳转 |
400 |
客户端请求有语法错误,不能被服务器识别 |
404 |
请求资源不存在 |
500 |
服务器发生错误 |
二、 DNS域名解析
当一个用户在浏览器输入一个请求时,DNS解析将会有将近10个步骤,这个过程大致以下:
第一步、浏览器会检查缓存中有没有这个域名对应的IP地址,若是缓存中有,这个解析过程会结束。
第二步、若是用户的浏览器缓存中没有,浏览器会查找操做系统中是否有这个域名对应的DNS解析结果。
第三步、LDNS,也就是咱们平时设置的域名服务器(网络配置->DNS服务器地址)。若是你是在一个小区接入的互联网。那这个DNS就是提供接入互联网的供应商。如联通、电信。
第四步、若是LDNS仍然没有命中,就直接到Root Server域名服务器请求解析。
第五步、根域名服务器返回给本地域名服务器一个所查询域的主域名服务器(gTLD Servver)地址。gTLD是国际顶级域名,如:.com、.cn等。
第六步、本地域名服务器再向上一步返回gTLD服务器发送请求。
第七步、接受请求的gLTD服务器查找并返回此域名对应的Name Server域名服务器的地址,这个Name Server一般就是你注册的域名服务器。
第八步、Name Server域名服务器会查询存储域名和IP的映射关系表,在正常状况下都根据域名获得目标IP记录,连同一个TTL值返回给DNS Server域名服务器。
第九步、返回该域名对应的IP和TTL值,本地DNS会缓存这个域名和IP的对应关系,缓存时间有TTL值控制。
第十步、把解析结果返回给用户、用户根据TTL值缓存在本地系统缓存中,域名解析结束。
2.一、跟踪域名解析过程
在Linux和Windows下均可以用nslookup命令来查询域名的解析结果。
2.二、清除缓存域名
在Windows下能够执行ipconfig/flushdns命令刷新缓存。
若是咱们须要用InetAddress解析域名。必须是单利模式,不然会有严重的性能问题,若是每次都建立Inetaddess,则每次都要进行一次完整的DNS解析,很是耗时。
2.三、几种域名解析方式
域名解析记录主要分为A记录、MX记录、CNAME记录、NS记录和TXT记录。
A记录,A表明的Address,A记录能够将多个域名解析到一个IP地址,但不能将一个域名解析到多个IP地址。
MX记录,表示的是Mail Exchange,就是能够将某个域名下的邮件服务器指向本身的Mail Server,如taobao.com域名的A记录IP地址是115.14.24.xxx,若是将MX记录设置为115.238.25.xxx DNS会将邮件发送到115.238.25.xxx所在的服务器。而正常的请求仍然会解析到A记录的IP地址上。
CNAME记录,Canonical Name(别名解析)别名解析能够为一个域名设置多个别名。
NS记录,为某个域名指定DNS解析服务器也就是这个域名有指定IP地址的DNS服务器去解析。
TXT记录,为某个主机名或者域名设置说明。
三、 CND工做机制
CND也就是内容分布网络,目前CDN都是以缓存网站中的静态数据为主的,如CSS、JS图片和静态页面数据等。
一般来讲CDN要达到如下几个目标
可扩展、安全性、可靠性。
3.一、负载均衡
负载均衡就是对工做任务进行平衡、分摊到多个操做单元上执行,如图片服务器、应用服务器,共同完成工做仍无。它能够提升服务器响应速度及利用效率
一般有三种负债均衡框架,分别是链路负载均衡、集成负载均衡和操做系统负载均衡。