第一章 了解Web及網(wǎng)絡(luò)基礎(chǔ)
HTTP
- HTTP(Hyper-Text Transfer Protocol): 超文本傳輸協(xié)議;
- 版本: 0.9,1.0,1.1,2.0;
WWW構(gòu)建技術(shù)
- SGML標(biāo)準(zhǔn)通用標(biāo)記語言(HTML)
- 文檔傳輸協(xié)議(HTTP)
- 指定文檔所在地址的URL(統(tǒng)一資源定位符)
TCP/IP
- 應(yīng)用層(DNS: domain->IP) -> 傳輸層(TCP: 三次握手) -> 網(wǎng)絡(luò)層(IP: ARP: IP->MAC) -> 數(shù)據(jù)鏈路層(MAC)
URI(統(tǒng)一資源標(biāo)識符)與URL
- URI: 用字符串標(biāo)識某一互聯(lián)網(wǎng)資源
- URL: 強(qiáng)調(diào)位置
- URI > URL
第二章 簡單的HTTP協(xié)議
HTTP要點
- HTTP是一種不保存狀態(tài)的協(xié)議,意思是就當(dāng)次有效,不持久化處理;HTTP/1.1引入keep-alive避免重復(fù)鏈接,引入Cookie技術(shù)進(jìn)行狀態(tài)管理
HTTP方法(8種)
- GET: 獲取資源,文本直接返回;CGI就執(zhí)行后返回
- POST: 傳輸實體主體
- PUT: 傳輸文件(無驗證機(jī)制,安全性問題),要配合驗證機(jī)制和REST
- HEAD: 類GET,只是不返回報文主體部分,用于確認(rèn)URI有效和更新日期
- DELETE: 刪文件,同PUT存在問題,解決和PUT一樣
- OPTIONS: 詢問支持的方法
- TRACE: 追蹤路徑,客戶端通過TRACE可查發(fā)送出去的請求是怎樣被加工修改/篡改的,易引發(fā)XST(Cross-Site Tracing,跨站追蹤)攻擊,基本不用
- CONNECT: 隧道協(xié)議連接代理,進(jìn)行TCP通信,主要使用SSL(Secure Sockets Layer,安全套接層)和TLS(Transport Layer Security,傳輸層安全)加密后經(jīng)網(wǎng)絡(luò)隧道傳輸
持久連接
持久連接: HTTP/1.1默認(rèn)所有連接持久化
管線化
管線化: 不用等待響應(yīng)亦可直接發(fā)送下一個請求,同時并行發(fā)送
Cookie狀態(tài)管理
- 發(fā)請求,服務(wù)器生成Cookie返回,響應(yīng)報文 <set-Cookie: ... >
- 二次請求自動添加Cookie發(fā)送
第三章 HTTP報文內(nèi)的HTTP信息
- HTTP報文本身是由多行(CR+LF作換行符)數(shù)據(jù)構(gòu)成的字符串文本,分為報文首部和報文主體,中間有空行,不一定有報文主體
- 首部: 請求行/狀態(tài)行,首部字段,其他
- 編碼提升傳輸速率
報文主體和實體主體差異在于實體經(jīng)過編碼變?yōu)閳笪?/p>
- 壓縮傳輸?shù)膬?nèi)容編碼(GNUzip=gzip,compress,deflate(zlib),identity)
- 分塊傳輸編碼:每一塊都會用16進(jìn)制標(biāo)記塊的大小,而最后一塊使用"0(CR+LF)"來標(biāo)記
- 發(fā)送多種數(shù)據(jù)的多部分對象集合
MIME(多用途因特網(wǎng)郵件擴(kuò)展):允許郵件處理文本,圖片,視頻等不同類型的數(shù)據(jù).
Content-Type: multipart/form-data(表單文件上傳)
multipart/byteranges 狀態(tài)碼206,響應(yīng)報文含多個范圍
- Range: bytes=范圍 Content-Type: multipart/byteranges
- 內(nèi)容協(xié)商
首部字段: Accept,Accept-Charset,Accept-Encoding,Accept-Language,Content-Language
內(nèi)容協(xié)商技術(shù)類型:
- 服務(wù)器驅(qū)動協(xié)商
- 客戶端驅(qū)動協(xié)商
- 透明協(xié)商: 服務(wù)器驅(qū)動 + 客戶端驅(qū)動
第四章 返回結(jié)果的HTTP狀態(tài)碼
響應(yīng)類別
- 1XX - Informational - 信息性狀態(tài)碼 - 接收的請求正在處理
- 2XX - Success - 成功狀態(tài)碼 - 請求正常處理完畢
- 3XX - Redirection - 重定向狀態(tài)碼 - 需要進(jìn)行附加操作以完成請求
- 4XX - Client Error - 客戶端錯誤 - 服務(wù)器無法處理請求
- 5XX - Server Error - 服務(wù)器錯誤狀態(tài)碼 - 服務(wù)器處理請求錯誤
經(jīng)常使用的14種狀態(tài)碼
- 2XX 成功
- 200 OK
- 204 No Content 返回響應(yīng)報文不合實體的主體部分
- 206 Partial Content 范圍請求Content-Range
- 3XX 重定向: 表明瀏覽器需要執(zhí)行某些特殊處理以正確處理請求
- 301 Moved Permanently 永久性重定向
- 302 Found 請求的資源已被分配了新的URI,希望用戶(本次)能使用新的URI訪問
- 303 See Other 由于請求的對應(yīng)的資源存在著另一個URI,應(yīng)使用GET方法定向獲取請求的資源
- 304 Not Modified 服務(wù)端資源未改變,可直接使用客戶端未過期的緩存
- 307 Temporary Redirect 臨時重定向,和302類似,會遵照瀏覽器標(biāo)準(zhǔn),不會從POST變成GET
- 4XX 客戶端錯誤
- 400 Bad Request
- 401 Unauthorized 發(fā)送的請求需有HTTP認(rèn)證,初次接收到401響應(yīng)會彈出認(rèn)證用的對話窗口
- 403 Forbidden 不允許訪問,請求被服務(wù)器拒絕
- 404 Not Found 服務(wù)器上沒有請求資源
- 5XX 服務(wù)器錯誤
- 500 Internal Server Error 服務(wù)器端執(zhí)行請求出錯
- 503 Service Unavailable 服務(wù)器超負(fù)載或在維護(hù)
第五章 與HTTP協(xié)作的Web服務(wù)器
- 通信數(shù)據(jù)轉(zhuǎn)發(fā)程序: 代理(中間人),網(wǎng)關(guān)(處理請求非HTTP協(xié)議),隧道(中轉(zhuǎn)加密)