把互聯網想關聯的協議集合起來總稱爲TCP/IP協議 TCP/IP 協議族按層次分爲:應用層,傳輸層,網絡層,數據鏈路層web
決定了向用戶提供應用服務時通訊的活動。 TCP/IP 協議族內預存了各種通用的應用服務,好比:FTP 和 DNS 服務就是其中兩類 HTTP 協議也處於該層數據庫
傳輸層對上層應用層,提供處於網絡鏈接中的兩臺計算機之間的數據傳輸。 在傳輸層有兩個性質不一樣的協議:TCP(Transmission Control Protocol,傳輸控制協議)和 UDP(User Data Protocol,用戶數據報協議)瀏覽器
網路層用來處理網絡上流動的數據包。數據包是網絡傳輸的最小數據單位,該層規定了經過怎樣的路徑(所謂的傳輸路線)到達對方的計算機,並把數據包傳送給對方。與對方計算機之間經過多臺計算機或網絡設備進行傳輸時,網絡層所起的做用就是在衆多的選項內選擇一條傳輸路線。緩存
用來處理鏈接網絡的硬件部分。包括操做系統、硬件的設備驅動、NIC(Network Interface Card,網絡適配器,即網卡),及光纖等物理可見部分,硬件上的範疇均在鏈路層的做用範圍以內。安全
利用TCP/IP 協議族進行通訊時,會經過分層順序與對方進行通訊,發送端從應用層往下走,接收端則從應用層往上走。 發送端在層與層之間傳輸數據時,沒通過一層時一定會被打上一個該層所屬的首部信息,反之,接收端在層與層之間傳輸數據時,每通過一層時會把對應的首部消去。- 這種把數據信息包裝起來的作法稱爲封裝。服務器
按層次分,TCP位於傳輸層,提供可靠的字節流服務(字節流:爲了方便傳輸,將大塊數據分割成以報文段爲單位的數據包進行管理)。 TCP 協議爲了更容易傳送大數據才把數據分割,並且 TCP 協議可以確認數據最終是否送達到對方。網絡
TCP 協議採用了三次握手策略。用TCP協議把數據包送出去之後,TCP不會對傳送後的狀況置之不理,它必定會向對方確認是否成功送達,握手過程使用了TCP的標誌:SYN(synchronize)和 ACK(acknowledgement)。 發送端首先先發送一個帶SYN標誌的數據包給對方,接收端收到後,回傳一個帶有 SYN/ACK 標誌的數據包以示傳達確認信息,最後,發送端再回傳一個帶 ACK 標誌的數據包,表明握手結束。若捂手過程當中在某個階段莫名中斷,TCP協議會在此以相同的順序發送相同的數據包異步
DNS(Domain Name System)服務是和HTTP協議同樣位於應用層的協議,它提供域名到IP地址之間的解析服務。大數據
瀏覽一個網址的全過程:網站
URL 是訪問web頁面須要輸入的網頁地址 URI 是由某個協議方案表示的資源的定位標示符,協議方案是指訪問資源所使用的協議類型名稱
URI 用字符串標識某一互聯網資源,而URL表示資源的地點(互聯網上所處的位置),可見 URL 是 URI 的子集。
HTTP請求報文由:請求方法、請求URI、協議版本、可選的請求首部字段和內容實體 構成
HTTP 協議自身不對請求和響應之間的通訊狀態進行保存。目的是爲了更快的處理大量事務,確保協議的可伸縮性。 後來有一些場景須要保存客戶端的狀態,好比登陸狀態,因而引入了 Cookie 技術。有了 Cookie 再用HTTP協議通訊,就能夠管理狀態了。
HTTP 初始版本,每進行一次HTTP通訊就要斷開一次TCP鏈接,當年數據小沒問題,但隨着HTTP的普及,HTTP所傳輸的內容越來越多,每次請求都會形成無謂的TCP鏈接創建和斷開,增長通訊量的開銷。
爲解決上述TCP鏈接的問題,HTTP/1.1 和 一部分 HTTP/1.0 相處了持久鏈接的方法,特色是:只要任意一端沒有明確的提出斷開鏈接,則保持TCP鏈接狀態。
持久鏈接使得多數請求以管線化(pipelining)方式發送成爲可能,之前發送請求後需等待並受到響應,才能發送下一個請求。管線化技術出現後,不用等待響應亦可直接發送下一個請求。這樣就能作到同時並行發送多個請求。而不須要一個接一個地等待響應了。
請求報文和響應報文的首部內容由如下數據組成:
請求行 包含用於請求的方法,請求 URI 和 HTTP 版本
狀態行 包含響應結果的狀態碼,緣由短語和HTTP版本
首部字段 包含請求和響應的各類條件和屬性的各種首部 通常有四種首部:通用首部,請求首部,響應首部和實體首部
其餘 可能包含HTTP的RFC 裏未定義的首部(Cookie等)
是HTTP通訊中的基本單位,由8位字節流組成,經過 HTTP 通訊傳輸
做爲請求或響應的有效載荷數據(補充項)被傳輸,其內容由實體首部和實體主體組成
HTTP 報文的主體用於傳輸請求或響應的實體主體。一般,報文主體等於實體主體。只有當傳輸中進行編碼操做時,實體主體的內容發生變化,才致使它和報文主體產生差別。
類別 | 緣由短語 | |
---|---|---|
1xx | Infomational(信息性狀態碼) | 接收的請求正常處理 |
2xx | Success(成功狀態碼) | 請求正常處理完畢 |
3xx | Redirection(重定向狀態碼) | 須要進行附加操做以完成請求 |
4xx | Client Error(客戶端狀態錯誤碼) | 服務器沒法處理請求 |
5xx | Server Error(服務器狀態碼) | 服務器處理請求出錯 |
一臺 Web 服務器可搭建多個獨立域名的 Web 網站,也可做爲通訊路徑上的中轉服務器提高傳輸速率
代理是一種由轉發功能的應用程序,扮演了位於服務器和客戶端中間人的角色,接收由客戶端發送的請求並轉發給服務器,同時也接收服務器返回的響應並轉發給客戶端 分緩存代理(緩存從源服務器獲取的數據)和透明代理(對請求不作任何加工)
網關是轉發其餘服務器通訊數據的服務器,接收從客戶端發送來的請求時,它像本身擁有資源的源服務器同樣對請求進行處理。 工做機制和代理相似,而網關可以使通訊線路上的服務器提供非HTTP協議服務。利用網關可以提升通訊的安全性,由於能夠在客戶端與網關之間的通訊線路上加密以確保鏈接的安全。
隧道是在相隔甚遠的客戶端和服務器二者之間進行中轉,並保持雙方通訊鏈接的應用程序。 可按要求創建一條與其餘服務器的通訊線路,屆時使用 SSL 等加密手段進行通訊。隧道的目的是確保客戶端與服務器進行安全的通訊。
HTTP 協議的請求和響應報文中必含HTTP首部,首部內容爲客戶端和服務器分別處理請求和響應提供所須要的信息。
HTTP請求報文由:方法,URI,HTTP版本,HTTP首部字段等部分構成。
HTTP響應報文由:HTTP版本,狀態碼(數字和緣由短語),HTTP首部字段等3部分構成。
首部字段由首部字段名和字段值構成,中間用冒號 :分割。 例如HTTP首部中以 Content-Type 這個字段來表示報文主體的對象類型。
####加密處理防止被竊聽
HTTP 協議中沒有加密機制,但能夠經過和SSL(Secure Socket Layer,安全套接層)或 TLS(Transport Layer Security,安全傳輸層協議)的組合使用,加密HTTP的通訊內容。
用SSL創建安全通訊線路以後,就能夠在這條線路上進行HTTP通訊的。與SSL組合使用的HTTP被稱爲 HTTPS(HTTP Secure,超文本傳輸安全協議)
經過使用證書,以證實通訊方就是意料中的服務器。
一般,HTTP直接和TCP通訊,當使用 SSL 時,則演變成先和 SSL 通訊,再由SSL 和 TCP 通訊了。
SSL 是獨立於HTTP的協議,因此不光是HTTP協議,其餘運行在應用層的SMTP和Telnet等協議都可配合SSL協議使用。能夠說 SSL 是當今世界上應用最爲普遍的網絡安全技術。
HTTPS 採用共享密鑰加密和公開密鑰加密二者並用的混合加密機制。
使用SSL速度不可避免的會變慢:1.通訊慢 2.大量消耗CPU和內存等資源,致使處理速度變慢。
認證的幾種常見方式:
HTTP/1.1 使用的認證方式:
使用HTTP協議存在以下瓶頸:
Ajax(Asynchronous JavaScript and XML, 異步JavaScript與XML技術) 是一種有效利用JavaScript 和 DOM(Document Object Model) 的操做,以達到局部Web頁面替換加載的異步通訊手段。因爲它只更新一部分界面,響應中傳輸的數據量會所以而減小。
一般,服務端接收到請求,在處理完畢後就會當即返回響應,但爲了實現推送功能,Comet會先將響應置於掛起狀態,當服務端有內容更新時,再返回該響應。所以,服務端一旦有更新,就能夠當即反饋給客戶端。
SPDY 沒有徹底改寫HTTP協議,而是再TCP/IP的應用層與傳輸層之間經過新加會話層的形式運做。同時,考慮到安全性問題,SDPY規定通訊中使用SSL。
SDPY的設計圖示
使用 SDPY後,HTTP協議額外得到如下功能:
經過單一的TCP鏈接,能夠無限制處理多個HTTP請求。全部請求的處理都在一條TCP鏈接上完成,所以TCP處理效率獲得提升
服務器能夠主動提示客戶端請求所需的資源。
Web 瀏覽器與 Web 服務器之間全雙工通訊標準。一旦Web服務器與客戶端之間創建起 WebSocket 協議的通訊鏈接,以後全部的通訊都依賴這個專用協議進行,通訊過程當中可互相發送JSON,XML,HTML或圖片等任意格式的數據。
WebSocket 通訊的主要特色:
CSS(Cascading Style Sheets,層疊樣式表),能夠指定如何展示HTML內的各類元素,屬於樣式表標準之一。
經過調用客戶端腳本語言JavaScript,實現對HTML的Web頁面的動態改造。利用 DOM(Document Object Model,文檔對象模型)可指定欲發生動態變化的HTML元素。
HTTP 不具有必要的安全功能
對Web應用使用的數據庫,經過運行非法的SQL而產生的攻擊。
攻擊者經過在響應首部字段內插入換行,添加任意響應首部或主體的一種攻擊。
對本無心公開的文件目錄經過非法截斷其目錄路徑後,達成訪問目的的一種攻擊。
算出密碼,突破認證
一種讓運行中的服務呈中止狀態的攻擊。
單純來說就是發生大量合法請求,服務器很難分辨何爲正常請求,何爲攻擊請求,所以很難防止DoS攻擊。 多態計算機發起的DoS攻擊成爲 DDoS攻擊(Distributed Denial of Service attack)。