了解 Web 及網(wǎng)絡(luò)基礎(chǔ)
1. 使用 Http 協(xié)議訪問(wèn) Web
Web 瀏覽器根據(jù)地址欄中的 URL,從 Web 服務(wù)器端獲取文件資源(resource)等信息,從而顯示在頁(yè)面。
通過(guò)發(fā)送請(qǐng)求獲取服務(wù)器資源的 Web 瀏覽器等,都稱為客戶端 (client)。
Web 是建立在 HTTP 協(xié)議上通信。
Web 使用 HTTP 協(xié)議作為規(guī)范,完成從客戶端到服務(wù)器端等一系列運(yùn)作流程。
HTTP(HyperText Transfer Protocol):超文本傳輸協(xié)議
2. 網(wǎng)絡(luò)基礎(chǔ) TCP/IP
2.1 TCP/IP 協(xié)議族
TCP/IP 是互聯(lián)網(wǎng)相關(guān)的各類協(xié)議族的總稱。
協(xié)議包含的內(nèi)容:
電纜的規(guī)格
IP 地址的選定方法
尋找異地用戶的方法
雙方建立通信的步驟
Web 頁(yè)面顯示需要處理的內(nèi)容
...等等
2.2 TCP/IP 的分層管理
TCP/IP 協(xié)議族按層次分層如下:
-
應(yīng)用層
應(yīng)用層決定了向用戶提供應(yīng)用服務(wù)時(shí)的通信活動(dòng)
-
TCP/IP 協(xié)議族內(nèi)預(yù)存了各類通用的應(yīng)用服務(wù),如
FTP(File Transfer Protocol)文件傳輸協(xié)議
DNS (Domain Name System) 域名系統(tǒng)
HTTP 協(xié)議處于應(yīng)用層
-
傳輸層
傳輸層對(duì)上層應(yīng)用層,提供處于網(wǎng)絡(luò)連接中的兩臺(tái)計(jì)算機(jī)之間的數(shù)據(jù)傳輸
-
傳輸層有兩個(gè)性質(zhì)不同的協(xié)議
TCP (Transmission Control Protocol) 傳輸控制協(xié)議
UDP (User Data Protocol) 用戶數(shù)據(jù)報(bào)協(xié)議
-
網(wǎng)絡(luò)層 (又名網(wǎng)絡(luò)互連層)
網(wǎng)絡(luò)層用來(lái)處理在網(wǎng)絡(luò)上流動(dòng)的數(shù)據(jù)包,數(shù)據(jù)包是網(wǎng)絡(luò)傳輸?shù)淖钚?shù)據(jù)單位
該層規(guī)定了通過(guò)怎樣的路徑(所謂的傳輸路線)到達(dá)對(duì)方計(jì)算機(jī),并把數(shù)據(jù)包傳送給對(duì)方
與對(duì)方計(jì)算機(jī)之間通過(guò)多臺(tái)計(jì)算機(jī)或網(wǎng)絡(luò)設(shè)備進(jìn)行傳輸時(shí),網(wǎng)絡(luò)層所起的作用就是在眾多的選項(xiàng)內(nèi)選擇一條傳輸路線
-
鏈路層(又名數(shù)據(jù)鏈路層,網(wǎng)絡(luò)接口層)
用來(lái)處理連接網(wǎng)絡(luò)的硬件部分,包括控制操作系統(tǒng) 、硬件的設(shè)備驅(qū)動(dòng) 、NIC (Network Interface Card,網(wǎng)絡(luò)適配器,即網(wǎng)卡),及光纖等物理可見(jiàn)部分(還包括連接器等一切傳輸媒介)
硬件上的范疇均在鏈路層的作用范圍之內(nèi)
2.3 TCP/IP 通信傳輸流
TCP/IP 協(xié)議族進(jìn)行網(wǎng)絡(luò)通信時(shí),會(huì)通過(guò)分層順序與對(duì)方通信。
發(fā)送端從應(yīng)用層往下走,接收端從鏈路層往上走。
用 HTTP 舉例:
-
發(fā)送端
客戶端在應(yīng)用層(HTTP 協(xié)議),發(fā)出一個(gè)想看某 Web 頁(yè)面的 HTTP 請(qǐng)求。
傳輸層(TCP 協(xié)議)把從應(yīng)用層接受的數(shù)據(jù)(HTTP 請(qǐng)求報(bào)文)進(jìn)行分割,并在各個(gè)保文上打上標(biāo)記序號(hào)及端口號(hào)轉(zhuǎn)發(fā)給網(wǎng)絡(luò)層。
在網(wǎng)絡(luò)層(IP 協(xié)議),增加作為通信目的地的 MAC 地址轉(zhuǎn)發(fā)給鏈路層。
-
接收端
接收端的服務(wù)器在鏈路層接收到數(shù)據(jù), 按序往上層發(fā)送,一直到應(yīng)用層。
數(shù)據(jù)傳輸?shù)綉?yīng)用層,服務(wù)器才真正接受到客戶端發(fā)送來(lái)的 HTTP 請(qǐng)求
通信傳輸02.png
發(fā)送端在層與層傳輸數(shù)據(jù)時(shí),每經(jīng)過(guò)一層必定會(huì)打上該層的首部信息。
接收端在層與層傳輸數(shù)據(jù)時(shí),每經(jīng)過(guò)一層會(huì)把對(duì)應(yīng)的首部信息消去。
把數(shù)據(jù)信息包裝起來(lái)的做法稱為封裝(encapsulate)。
3. 與 HTTP 關(guān)系密切的協(xié)議:IP 、TCP 和 DNS
3.1 負(fù)責(zé)傳輸?shù)?IP 協(xié)議
按層次分,IP(Internet Protocol) 名詞
網(wǎng)際協(xié)定位于網(wǎng)絡(luò)層。
IP 協(xié)議的作用就是把各種數(shù)據(jù)包傳輸給對(duì)方。
確保數(shù)據(jù)傳輸?shù)綄?duì)方那里,IP地址 和 MAC(Meida Access Control Address)地址尤為重要。
IP地址 指明了節(jié)點(diǎn)被分配的地址
MAC地址 是指網(wǎng)卡所屬的固定地址
IP地址 可以和 MAC地址進(jìn)行配對(duì),IP地址可變換,MAC地址基本不會(huì)更改。
使用 ARP 協(xié)議憑借 MAC 地址進(jìn)行通信
IP 間的通信依賴 MAC 地址
ARP 是一種用以解析地址的協(xié)議,根據(jù)通信方的IP地址就可以反查出對(duì)方的 MAC地址
在到達(dá)通信目標(biāo)前的中轉(zhuǎn)過(guò)程中,那些計(jì)算機(jī)和路由器等網(wǎng)絡(luò)設(shè)備只能獲悉很粗略的傳輸路線。這種機(jī)制成為路由選擇(routing)
3.2 確??煽啃缘?TCP 協(xié)議
按層次分,TCP 位于傳輸層,提供可靠的字節(jié)流服務(wù)。
TCP 協(xié)議為了更容易傳送大數(shù)據(jù)才把數(shù)據(jù)分割,TCP 協(xié)議能夠確認(rèn)數(shù)據(jù)最終是否到達(dá)對(duì)方。
確保數(shù)據(jù)能到達(dá)目標(biāo)
為了準(zhǔn)確無(wú)誤的將數(shù)據(jù)送到目標(biāo)處,TCP 協(xié)議采用三次握手策略,握手過(guò)程中使用了 TCP 的標(biāo)志(flag)
SYN (synchronize)
ACK (acknowledgement)
握手過(guò)程:
發(fā)送端首先發(fā)送一個(gè)帶有 SYN 標(biāo)志的數(shù)據(jù)包給對(duì)方。
接收端收到后,回傳一個(gè)帶有 SYN/ACK 標(biāo)志的數(shù)據(jù)包以示傳達(dá)確認(rèn)信息。
發(fā)送端再回傳一個(gè)帶 ACK 標(biāo)志的數(shù)據(jù)包,代表握手結(jié)束。
握手過(guò)程中某個(gè)階段莫名中斷,TCP 協(xié)議會(huì)再次以相同的順序發(fā)送相同的數(shù)據(jù)包
除了三次握手外,TCP 協(xié)議還有其它手段來(lái)保證通信的可靠性
4. 負(fù)責(zé)域名解析的 DNS 服務(wù)
DNS(Domain Name System) 服務(wù)和 HTTP 協(xié)議一樣位于應(yīng)用層的協(xié)議,提供域名到 IP地址之間的解析服務(wù)。
計(jì)算機(jī)既可以被賦予 IP地址,也可以被賦予主機(jī)名和域名。如 www.hackr.jp。
DNS 協(xié)議提供通過(guò)域名查找 IP地址,或逆向從 IP地址 反查域名的服務(wù)。
5. 各種協(xié)議與 HTTP 協(xié)議的關(guān)系
6. URI 和 URL
6.1 統(tǒng)一資源標(biāo)識(shí)符
Uniform Resource Identifier 統(tǒng)一資源標(biāo)識(shí)符
-
Uniform
規(guī)定統(tǒng)一的格式可方便處理多種不同類型的資源,而不用根據(jù)上下文環(huán)境來(lái)識(shí)別資源指定的訪問(wèn)方式。
-
Resource
可標(biāo)識(shí)的任何東西,除了文檔文件,圖像或服務(wù)等能夠區(qū)別其它類型的,全都可以作為資源。 資源不僅可以是單一的,也可以是多數(shù)的集合體。
-
Indentifier
標(biāo)識(shí)可標(biāo)識(shí)的對(duì)象,也稱為標(biāo)識(shí)符。
URI 就是由某個(gè)協(xié)議方案表示的資源的定位標(biāo)識(shí)符,協(xié)議方案是指訪問(wèn)資源所使用的協(xié)議類型名稱。
采用 HTTP協(xié)議時(shí),協(xié)議方案就是 http,初次之外,還有 ftp、matilo、telnet、file 等。
URI 用字符串標(biāo)識(shí)某一互聯(lián)網(wǎng)資源,URL 表示資源的地點(diǎn)(互聯(lián)網(wǎng)上所處的位置),URL 是 URI 的子集。
RFC3896: 統(tǒng)一資源標(biāo)識(shí)符通用語(yǔ)法如下所示:
ftp://ftp.is.co.za/rfc/rfc1808.txt
http://www.ietf.org/rfc/rfc2396.txt
ldap://[2001:db8::7]/c=GB?objectClass?one
mailto:John.Doe@example.com
news:comp.infosystems.www.servers.unix
tel:+1-816-555-1212
telnet://192.0.2.16:80/
urn:oasis:names:specification:docbook:dtd:xml:4.1.2
6.2 URI 格式
絕對(duì) URI 格式:
-
協(xié)議方案名
使用 http: 或 https: 等協(xié)議方案名獲取訪問(wèn)資源時(shí)要指定協(xié)議類型,不區(qū)分字母大小寫,最后附一個(gè)(:)。
-
登錄信息(認(rèn)證)
指定用戶名密碼作為從服務(wù)器端獲取資源時(shí)必要的登錄信息(身份認(rèn)證),可選項(xiàng)。
-
服務(wù)器地址
使用絕對(duì) URI 必須指定待訪問(wèn)的服務(wù)器地址,如:
a. 類似 hackr.jp 這種 DNS 可解析的名稱
b. 或是 192.168.1.1 這類的 IPv4 地址名
c. 還可以是 [0:0:0:0:0:0:0:1] 這樣用方括號(hào)括起來(lái)的 IPv6 地址名
-
服務(wù)器端口號(hào)
指定服務(wù)器連接的網(wǎng)絡(luò)端口號(hào),若用戶省略則使用默認(rèn)端口號(hào),可選項(xiàng)。
-
帶層次的文件路徑
指定服務(wù)器上的文件路徑來(lái)定位特指的資源。
-
查詢字符串
針對(duì)已指定的文件路徑內(nèi)的資源,可以使用查詢字符串傳入任意參數(shù),可選項(xiàng)。
-
片段標(biāo)識(shí)符
使用片段標(biāo)識(shí)符通常可標(biāo)記出已獲取資源中的子資源,可選項(xiàng)。
7.2 URL
Uniform Resource Locator 統(tǒng)一資源定位符
URL 就是 Web 瀏覽器訪問(wèn) Web 頁(yè)面需要輸入的網(wǎng)址。如 http://hackr.jp/