HTTP基礎(一)

HTTP(超文本傳輸協議)

  1. 網絡基礎
  • TCP/IP協議簇:把互聯網相關聯的協議集合起來總稱爲TCP/IP,如:IP、TCP、DNS、UDP、FTP 、ICMP、HTTP等。
  • TCP/IP分層管理:按層次分爲四層:應用層、傳輸層、網絡層和數據鏈路層,具體作用如下:
分層 作用 協議
應用層 向用戶提供應用服務時提供的活動 FTP,DNS、HTTP
傳輸層 提供處於網絡連接中兩臺計算機之間的數據傳輸 TCP、UDP
網絡層 處理網絡上流動的數據包 IP
鏈路層 用來處理連接網絡的硬件部分
  • TCP/IP的通信傳輸流:客戶端數據從應用層向下走,服務器端從鏈路層向上走。客戶端會在每層之間傳輸數據是,經過一層會打上相應的首部信息,反之在服務器端會每一層去掉相應的首部,這種包裝方法叫做封裝。
  • 協議詳解:
協議 描述
IP協議 把各種數據包傳送給對方,要確保傳送到正確的地方,需要滿足兩個重要條件:IP地址和MAC地址
TCP協議 提供可靠的字節流服務,將大塊數據分割成報文段的數據包進行管理,同時採用了三次握手策略保證正確傳輸
DNS協議 提供域名到IP地址之間的地址解析服務
  • 協議之間的相互關係
    (帶添加)
  • URI和URL
    URI:統一資源標識符,由某個協議方案表示的資源的定位標識符,協議方案是指訪問資源所使用的協議類型名稱。
    URL:統一資源定位符,表示資源的地點(互聯網上所處的位置),是URI的子集。
  1. HTTP協議
  • 作用:兩臺計算機之間使用HTTP協議進行通信時,必定一端是客戶端,另一端是服務器端。
  • HTTP請求報文是由請求方法、請求URI、協議版本、可選的請求首部字段和內容實體構成。
  • 響應報文有協議版本、狀態碼、用以解釋狀態碼的原因短語、可選的響應首部字段以及實體內容構成。
  • HTTP是一種不保存狀態的協議,即無狀態協議 。
  • 指定請求URI的方式:
	//URI完整的請求URI
	GET http://hackr.jp/index.html HTTP1.1
	
	//在首部字段Host中寫明網絡域名或IP地址
	GET /index.html HTTP1.1
	Host: hackr.jp
  • HTTP常用方法
方法 描述
GET 請求訪問已被URI識別的資源
POST 傳輸實體的主題,並非獲取響應的主體內容
PUT 用來傳輸文件,要求在請求報文的主體中包含文件內容,然後保存到請求URI指定的位置
HEAD HEAD方法與GET方法一樣,只是不返回報文主體內容,用於確認URI有效性和資源更新的日期時間
DELETE 用來刪除指定資源
OPTIONS 用來查詢針對請求URI指定的資源支持方法
CONNECT 要求與代理服務器通信時建立隧道,使用隧道協議進行TCP通信,主要使用SSL和TLS協議把通信內容加密後經網絡隧道傳輸,其格式如下:CONNECT 代理服務器名:端口號 HTTP版本
  1. 持久連接
  • 目的:減少了TCP連接的重複建立和斷開造成的額外開銷,減輕了服務器的負載,提高了頁面的顯示速度。
  • 特點:只要一段沒有明確提出斷開連接,則保持TCP連接狀態。
  • 管線化:同時並行發送多個請求,不要一個一個等待響應
  1. Cookie狀態管理
  • 目的:由於HTTP是無狀態協議,不會對之前發生過的請求和相應的狀態進行管理。Cookie技術則通過在請求和響應報文中寫入Cookie技術來控制客戶端的狀態
  • 原理:Cooki會根據從服務器端發送的響應報文內一個叫做Set-Cookie的首部字段信息,通知客戶端保存Cookie,當下次客戶端再次往該服務器發送請求時,客戶端會自動在請求報文中加入Cookie值後發送出去。服務器端發現客戶端發送過來的Cookie之後,會去檢查究竟一個客戶端發來的連接請求,對比服務器上的經路,最後得到之前的狀態信息。
  1. HTTP報文
  • 定義:用於HTTP協議交互的信息,請求端的HTTP報文叫請求報文,相應端的叫響應報文。
  • HTTP報文構成:報文首部,空行(CR + LF)、報文主題【非必須】
  • 報文的首部內容包含以下四種信息:
內容 描述
請求行 包含用於請求方法、請求URI和HTTP版本
狀態行 包含表明響應結果的狀態碼,原因短語和HTTP版本
首部字段 包含表示請求和響應的各種條件和屬性的各類首部
其他 RFC裏未定義的首部(Cookie等)
  • 報文首部字段包含內容有請求首部字段、響應首部字段、通用首部字段、實體首部字段和其他。
  • 多部分對象集合:multipart/form-data,在Web表單文件上傳時使用;multipart/bytesranges,狀態碼206,響應報文包含了國歌範圍時使用。
  • 獲取部分內容的範圍請求:Range: bytes=5001-10000
  • 內容協商:客戶端與服務器端就響應的資源內容進行交涉後提供給客戶端最爲合適的內容。
  • 內容協商分類:服務器驅動協商、客戶端驅動協商、透明協商
  1. 編碼傳輸
  • 報文:HTTP通信中基本單位,由8位字節流組成。
  • 實體:作爲請求或響應的有效載荷數據(補充項)被傳輸,其內容由實體首部和實體主體組成。
  • HTTP報文的主題用於傳輸請求或響應的實體主體。通常情況下報文主體就等於實體主題,但是進行編碼操作後會產生一定的變化導致產生了差異。
  • 內容編碼:應用在實體內容上的編碼格式,並保持實體信息原樣壓縮。編碼後的實體由客戶端接收並負責解碼。
  • 常見的內容編碼:gzip、compress、deflate、identity
  • 分塊傳輸編碼:在傳輸大量數據是,通過把數據分割成多塊的功能。每塊大小爲16進制,最後一塊實體主體會用“0(CR+LF)”來標記。
  1. 狀態碼
狀態碼 類別 原因短語 典型
1XX 信息性狀態碼 接收的請求正在處理
2XX 成功狀態碼 請求正常處理完畢 200:請求被正常處理;
204:請求已成功,但沒有資源返回;
206: 客戶端進行了範圍請求,返回部分資源
3XX 重定向狀態碼 需要進行附加操作完成請求 301:永久性重定向
302/307:臨時性重定向
303: 臨時性重定向,並且要求使用GET方法獲取資源
304:客戶端發送附帶的條件請求,單未符合條件請求
4XX 客戶端錯誤狀態碼 服務器無法處理請求 400:請求報文中存在語法錯誤
401:發送的請求需要有通過HTTP認證
403:對請求資源的服務器拒絕了
404:無法找到該資源
5XX 服務端錯誤狀態碼 服務器處理請求出錯 500:服務端在執行請求時發生了錯誤
503:服務器暫時處於超負載或正在進行停機維護
  1. Web服務器
  • 代理:有轉發給哦能的應用程序,接收客戶端發送的請求後轉發給服務器,代理並不會改變請求URI會直接給源服務器(前方持有資源的目標服務器)。每次通過代理服務轉發請求或者相應是,會追加寫入Via首部信息。利用代理技術,可以使用緩存技術減少網絡帶寬的流量等。代理一般分爲兩種:緩存代理和透明代理
  • 網關:轉發其他服務器通信數據的服務器,接收從客戶端發送來的 請求是,會想源服務器一般處理請求。網關能使通信線路上的服務器提供非HTTP服務。利用網關可以提高通信的安全性,如電商結算系統,查詢數據庫等操作。
  • 隧道:在相隔甚遠的客戶端和服務器兩者之間進行中轉,並保持雙方通信連接的應用程序。它可按要求建立一條與其他服務器通信線路,並使用SSL等加密手段進行通信。隧道目的是確保客戶端與服務器端進行安全通信。隧道本身是不會去解析HTTP請求,並且會在通信雙方斷開連接時結束。
  • 緩存:代理服務器或客戶端本地磁盤內保存的資源副本。利用緩存可以多次避免從源服務器轉發資源。緩存是有有效期限的,當判定緩存失效後,代理服務器或瀏覽器會再次請求資源。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章