一、淺談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.一、負載均衡
負載均衡就是對工做任務進行平衡、分攤到多個操做單元上執行,如圖片服務器、應用服務器,共同完成工做仍無。它能夠提升服務器響應速度及利用效率
一般有三種負債均衡框架,分別是鏈路負載均衡、集成負載均衡和操做系統負載均衡。