文章目錄
- 1 構建web應用的基礎知識
- 1.1 互聯網相關的概念
- 1.2 互聯網協議
- DNS(域名系統)
- IP協議(互聯網絡協議)
- TCP(傳輸控制協議)
- HTTP(超文本傳輸協議)
- SSL(安全套接字層)
- TLS(傳輸層安全)
- 1.3 URL
- 2 web程序
- 2.1 web程序的本質
- 2.2 web框架的設計模式
- 1.2.1 經典的MVC設計模式
- 1.2.2 Django的MTV設計模式
1 構建web應用的基礎知識
1.1 互聯網相關的概念
互聯網:互聯網是連接大量計算機的全球性的網絡。這些計算機通過一系列標準協議進行數據交流。
協議:互聯網上的設備之間進行信息交換的標準。
服務器:服務器是存儲和管理數據,為其他計算機提供服務的計算機。
客戶端:客戶端是請求和接收服務器的數據的設備。
IP地址:接入互聯網的每臺設備都有自己的唯一IP地址,有兩種格式:IPv4和IPv6。
域名:互聯網上某臺計算機或計算機組的名稱,可讀性高,便于記憶。
數據包:數據包是在網絡中傳輸的信息的一小部分。由數據和數據頭組成,數據頭用來告知接收該數據包的機器如何處理數據包。
1.2 互聯網協議
DNS(域名系統)
DNS類似互聯網上的電話簿,用來進行域名和IP的轉換。
互聯網中提供DNS查詢的計算機稱為DNS服務器。客戶端訪問域名時,先向DNS服務器查詢域名對應的IP地址,然后再向IP地址發送請求。
IP協議(互聯網絡協議)
IP協議是互聯網的地址系統。IP協議把信息分割為一個個數據包,并在其中標記源設備和目標設備的IP地址,這樣網絡中的設備接收到數據包就知道要往哪里進行轉發。
IPv4和IPv6是IP協議的不同版本。
IPv4地址的格式是四組由點分隔的數字,如“192.168.0.2”,它由32位的二進制數記錄,因此IPv4可以提供約43億個唯一的IP地址。如今互聯網發展,連入的設備遠遠超過這個數目,因此開始使用IPv6地址。
IPv6地址由128位二進制數記錄,格式是冒號分隔的一組十六進制數。
目前仍舊有很大一部分設備使用IPv4地址,由于IPv4地址的有限供應,引入了動態IP。
動態IP是從IP地址池中為客戶端分配的臨時IP地址。一些大企業一般會付費維護一個靜態IP地址,但是大多數用戶使用動態IP就足夠了。
TCP(傳輸控制協議)
IP協議不負責數據包排序和錯誤檢查。為了確保信息傳輸的可靠性,一般把IP協議和TCP協議聯合起來使用。
TCP可以保持發送者和目標的連接,并確保數據順序。
HTTP(超文本傳輸協議)
HTTP使用超文本鏈接加載網頁信息,屬于應用層協議。
HTTP包括客戶端向服務端發送的請求,以及服務端返回的響應信息。
-
HTTP請求
每個HTTP請求包含幾種信息:HTTP版本、URL、HTTP方法、請求頭、請求體。
HTTP方法是此次請求希望服務器執行的動作。“GET”和“POST”是最常用的兩個方法。
請求頭是鍵值對形式的文本信息,包含了客戶端的瀏覽器類型、請求什么數據等信息。
請求體包含了此次請求提交給服務器的信息,如用戶名、密碼等表單信息。 -
HTTP響應
HTTP響應包括:HTTP狀態碼、響應頭和可選的響應體。
HTTP狀態碼是表示HTTP請求是否成功的3位數字。可以通過狀態碼的第一個數字判斷此次請求的狀況:1xx表示信息,2xx表示成功,3xx表示重定向,4xx表示客戶端錯誤,5xx表示服務器錯誤。
響應頭包含響應體中數據的語言和格式等信息。
響應體包含此次請求取到的信息。大多是HTML數據。
SSL(安全套接字層)
SSL是一種加密安全協議,是TLS協議的前身。
Web上的數據最開始是明文傳輸的,任何人都可以截獲并讀取信息。創建SSL是為了糾正這個錯誤并保護用戶隱私。
SSL的作用
數據加密:對Web傳輸的數據進行加密,任何截獲此數據的人只會看到亂碼。
身份驗證:在兩個通信設備之間啟用身份驗證,確保兩個設備是它們所聲稱的真實身份。
數據簽名:對數據進行數字簽名,確保數據的完整性和一致性。
TLS(傳輸層安全)
TLS是網絡上使用的最新的加密協議。
由于它和SSL聯系緊密,因此TLS經常被稱為“SSL加密”。
HTTPS使用TLS來加密普通的HTTP請求和響應,使其更安全。
客戶端與服務器建立HTTP連接需要進行多次往返。除了TCP握手外,還必須進行TLS/SSL握手以使用HTTPS。
1.3 URL
URL即統一資源定位符,表示互聯網上某個資源的地址。每個資源都有一個唯一的URL,其中的信息指出了文件的位置和瀏覽器該怎么處理它。
URL語法格式:
protocol://hostname[:port]/path[?query][#fragment]
- protocol:網絡傳輸協議,常見的有http,https,file,ftp。
- hostname,資源所在的服務器的域名、主機名或IP地址。
- port,端口號,范圍0-65535。可省略,省略時會使用各種傳輸協議的默認端口號。
- path,路由地址,一般表示主機上的目錄或文件地址。
- query,查詢字符串,從?開始到#結束,包含多個參數,使用&隔開。
- fragment,信息片段,用于定位網頁上的信息。
一些特殊符號無法在URL中使用,這時會用該符號的ASCII編碼值。
2 web程序
2.1 web程序的本質
- 接收客戶端的請求。
- 解析請求,處理數據。
- 構造響應返回。
2.2 web框架的設計模式
1.2.1 經典的MVC設計模式
Model:數據存儲層,表的定義和數據增刪改查。
View:視圖層,系統的前端輸出,允許用戶交互。
Controller:控制層,接收用戶輸入并調用Model和View完成需求。
基本請求流程:
- 用戶瀏覽器向服務器發起request請求,Controller接收到請求,同時向Model和View發指令;
- Model根據指令選取業務數據,發送給 Controller;
View根據指令加載對應頁面,發送給Controller; - Controller收到二者返回的數據,組織成響應格式發給瀏覽器。
MVC模式的優點:降低代碼耦合度,增加模塊重用性。
1.2.2 Django的MTV設計模式
Model:數據存儲層。
Template:模板層,處理頁面顯示。
View:業務邏輯層,處理業務邏輯。
MVC的V層,在這里被細分為Template和View層。
基本請求流程:
- 用戶瀏覽器發起request請求,服務器收到后,通過View層分析后,同時向Model和Template發指令;
- Model層取數據返回給View;
- Template層調用對應的模板返回給View;
- View層收到后,把數據填到模板中,組織為響應格式發給瀏覽器。