《透視HTTP協議》是
羅劍鋒
(奇虎360技術專家)在極客時間開的一門專欄課,筆者記錄一下學習筆記,僅供參考。算法
一、一般所說的「上網」實際上訪問的只是互聯網的一個子集「萬維網
」(World Wide Web)數據庫
World Wide Web 它基於 HTTP 協議,傳輸 HTML 等超文本資源,能力也就被限制在 HTTP 協議以內。瀏覽器
二、互聯網上還有許多萬維網以外的資源緩存
例如經常使用的電子郵件、BT 和 Magnet 點對點下載、FTP 文件下載、SSH 安全登陸、各類即時通訊服務等等,它們須要用各自的專有協議來訪問。安全
瀏覽器的正式名字叫「
Web Browser
」,顧名思義,就是檢索、查看互聯網上網頁資源的應用程序服務器
Chrome、Firefox、Safari、IE、Edge、Opera。。。網絡
瀏覽器本質上是一個 HTTP 協議中的請求方
,使用 HTTP 協議獲取網絡上的各類資源。集成了不少額外的功能架構
好比:HTML 排版引擎用來展現頁面,JavaScript 引擎用來實現動態化效果,甚至還有開發者工具用來調試網頁,等等插件和擴展。負載均衡
在 HTTP 協議裏,瀏覽器的角色被稱爲「User Agent
」即「用戶代理
」,做爲訪問者的「代理
」來發起 HTTP 請求。ide
瀏覽器是 HTTP 裏的請求方
,另外一端的應答方(響應方)
就是服務器
,Web Server
。
Web 服務器兩個層面的含義:
硬件含義:物理形式或「雲」形式的機器
軟件含義:提供 Web 服務的應用程序
Apache
、Nginx
、Windows 上的 IIS、Java 的 Jetty/Tomcat 等
CDN,全稱
Content Delivery Network
(內容分發網絡
)。應用了 HTTP 協議裏的緩存和代理技術,代替源站響應客戶端的請求。
好處:它能夠緩存源站的數據。若是 CDN 的調度算法很優秀,更能夠找到離用戶最近的節點,大幅度縮短響應時間。
其餘:CDN 除了基本的網絡加速
外,還提供負載均衡
、安全防禦
、邊緣計算
、跨運營商網絡
等功能
「
爬蟲
」(Crawler),其實是一種能夠自動訪問 Web 資源
的應用程序。
一、來源:絕大多數爬蟲
是由各大搜索引擎「放」出來的,抓取網頁存入龐大的數據庫,再創建關鍵字索引,這樣咱們纔可以在搜索引擎中快速地搜索到互聯網角落裏的頁面。
二、爬蟲壞處:它會過分消耗網絡資源,佔用服務器和帶寬,影響網站對真實數據的分析,甚至致使敏感信息泄漏。
三、「君子協定」:robots.txt
約定哪些該爬,哪些不應爬。
四、基本技術:不管是「爬蟲
」仍是「反爬蟲
」,用到的基本技術都是兩個,一個是 HTTP
,另外一個就是 HTML
。
一、HTML 是 HTTP 協議傳輸的主要內容之一,它描述了超文本頁面,用各類「標籤」定義文字、圖片等資源和排版佈局,最終由瀏覽器「渲染」出可視化頁面。
二、Web Service:是一種由 W3C
定義的應用服務開發規範,使用 client-server
主從架構,一般使用 WSDL
定義服務接口,使用 HTTP
協議傳輸 XML
或 SOAP
消息,也就是說,它是一個基於 Web(HTTP)的服務架構技術
,既能夠運行在內網,也能夠在適當保護後運行在外網。
三、WAF:是「網絡應用防火牆
」。與硬件「防火牆
」相似,它是應用層面的「防火牆」,專門檢測 HTTP 流量
,是防禦 Web 應用的安全技術。
WAF 一般位於 Web 服務器以前,能夠阻止如 SQL 注入
、跨站腳本
等攻擊,目前應用較多的一個開源項目是 ModSecurity
,它可以徹底集成進 Apache 或 Nginx。
一、互聯網上絕大部分資源都使用 HTTP 協議傳輸
二、瀏覽器是 HTTP 協議裏的請求方,即 User Agent
三、服務器是 HTTP 協議裏的應答方,經常使用的有 Apache 和 Nginx
四、CDN 位於瀏覽器和服務器之間,主要起到緩存加速的做用
五、爬蟲是另外一類 User Agent,是自動訪問網絡資源的程序