1. 程式人生 > >讀《網路是怎樣連線的》第五章 總結

讀《網路是怎樣連線的》第五章 總結

上一章 我們知道了 資料包在 接入網路由器到 運營商路由器POP 的過程,

這一章,我們聊聊從pop 到 目標WEB伺服器的故事.

 

當然了,目標web伺服器不一定在本運營商的網路內, 有時候需要去其它運營商網路的pop,這個依靠路由表來轉發~~~

 

  • 我們要去的WEB伺服器會在什麼地方呢?
  • web伺服器的安全又保障嗎?   (防火牆)
  • web伺服器面對大規模流量時會如何?
  • web伺服器與快取

 

一.web伺服器在哪?

 

  1. 在內網中(伺服器在裸奔,容易被攻擊)
  2. 在內網外(一般會設一個防火牆,內網和web伺服器在防火牆的兩端,第三端為接入網際網路的埠)
  3. 在資料中心處部署(資料中心一般與noc或者IX直接相連,高速傳輸的線路很棒啊)

 

二 .防火牆

 

一開始的防火牆是什麼呢,它本來只是作為路由器的一個附屬功能,叫做包過濾(也是現在防火牆的主流),它會檢視每一個傳送到它這裡的包的埠號,根據ip和埠號,能判斷這個包是該被轉發還是被丟棄. 

 

但後來我們想看看哪些包被丟棄了,(因為這些包通常都附帶著入侵的因素),我們想了解入侵者的手法,所以打算儲存這些包用來分析,從而有了 軟體和硬體這類專門的防火牆.

 

什麼是包過濾呢?

 

就是在防火牆裡設定一張表,

 

首先設定  來自網際網路的資訊能訪問到web伺服器.(第一行)

然後,當web伺服器會返回一個響應,該響應也要通過防火牆出去,所以設定了第三行

 

那 為什麼這邊設定了第二行這個規則呢?

因為有些攻擊的方式會讓web伺服器傳送訊息去感染其他的web伺服器,所以,我們設立規則,不允許web伺服器主動傳送訊息, 這條規則具現化之後,變現為 SYN=1,ACK=0, (第二章的內容,   如果我們web伺服器往外發訊息是因為響應對方的話,發出的東西為SYN=1,ACK=1,並不會被這條規則阻擋)

 

三.web伺服器向外提供服務的效能

 

最開始,假設我們只有一臺web伺服器, 這時候 , 這臺伺服器需要面對大量的http請求, 並給出響應.

但是,它自身的能力並不能完成這個舉動,此時,我們一般考慮提升伺服器的效能, 但是,就算我們能一直提升伺服器的效能,但它畢竟是好單臺主機,終究有氣瓶器所在,

 

因此,考慮用多臺一樣的web伺服器來分擔工作,也就是分擔負載.

 

ok,我們意識到了我們需要多臺伺服器,那麼它們怎麼協同向外提供服務的呢?

我們會有一臺負載均衡伺服器,這臺伺服器一端為 接入網側,另外一端為 多臺伺服器側.

此時,我們使用者訪問的web伺服器IP地址就是這個負載均衡伺服器的地址了, 當我們傳輸的包到達時,該伺服器會 判斷 web伺服器的負載情況,把 資料請求傳送給此時負載比較低的web伺服器.

 

 

 

負載均衡伺服器怎麼判斷該向其身後的哪個web伺服器傳遞請求呢?

1.可以定期採集web伺服器的CPU、記憶體使用率,並根據這使用率判斷負載情況

2.可以傳送測試包,根據響應的時間判斷負載

3.事先設定伺服器的效能,按比例分配請求

 

能不能不需要負載均衡伺服器,但還是能夠協同工作呢?

可以的,有dns輪詢方式.該方式需要把域名和多個web伺服器的ip一起註冊到dns中,並讓dns輪流著把每個ip地址放第一位置返回.

但注意,這個方式有缺陷的,就是有時候,某一個WEB伺服器宕機了,使用者依舊根據得到的第一個ip進行訪問,從而就得不到服務了.

 

 

四. 快取

我們想要提高伺服器對外的效能,可以在web伺服器外加一個快取伺服器,這樣使用者的請求在快取伺服器中就會得到響應,從而過濾了一部分請求,讓web伺服器的工作量降低了一些.

補 : 但這樣做的話,網際網路中的請求數量會非常多,這些請求都得到web伺服器這端才能得到響應,

那麼我們可以看看使用者端的快取, 這個快取伺服器儲存的是 使用者以前的響應資訊.

這樣,如果下次使用者再請求這個資訊,那麼直接就能從客戶端快取伺服器得到,從而降低網路中的資料流量.(但是,web伺服器運營者無法管理此處的快取伺服器)

 

現在我們是怎麼處理快取的問題呢?

我們現在用CSN的方式做快取.csn 稱之為內容分發網路,這個網路的快取伺服器放置在客戶端的運營商處,但是也不可能所有運營商處都放置,因為這對web伺服器運營者來說,花銷太大了,從而只有一部分重要的pop才有該快取伺服器.但是也不錯啦,總比之前網路包必須到達web伺服器處來說 較為近些.

 

那麼,網路上那麼多的pop都有快取伺服器,我們從客戶端發出去的包怎麼知道哪個對於我們才是最近的呢?

 

1.從快取伺服器的部署地點的路由器手機路由資訊,並從這些路由資訊來估算到客戶端dns伺服器的距離.(種情況,有時候dns伺服器並不在本地,可能不準確)

 

2.(是判斷ip和快取伺服器的距離,較為準確)通過重定向的方式(http頭部 的Location欄位)

 

有一臺叫做重定向伺服器的傢伙,它和1的做法差不多,收集了很多快取伺服器的路由資訊來判斷 哪一個快取伺服器與申請者的ip比較近.,

判斷完後,它會在location欄位上放入最近的快取伺服器地址,然後傳送出去.

做法上,需要把這個重定向伺服器註冊到 web伺服器端的dns伺服器上,過程看圖就好..~~