《圖解HTTP》——瞭解Web及網絡基礎

前段時間作項目的時候,發現對於先後端交互仍是很迷糊,有時候出現一個問題後會查好久的時間...
因此先找了《圖解HTTP》這本書來看,如下爲邊看邊記的點。javascript

1.1 使用HTTP協議訪問Web

Web瀏覽器根據URL從Web服務器獲取文件資源等信息,從而顯示出Web頁面。
經過發送請求獲取服務器資源的Web瀏覽器,稱爲客戶端。
Web使用一種名爲HTTP的協議做爲規範,完成從客戶端服務器端等一系列運做流程。 java

1.2 HTTP的誕生

1.2.1 爲知識共享而規劃Web

WWW三種構建技術:後端

  • 把SGML做爲頁面的文本標記語言的HTML
  • 做爲文檔傳遞協議的HTTP
  • 指定文檔所在地址的URL

1.3 網絡基礎TCP/IP

一般使用的網絡(包括互聯網)是在TCP/IP協議族的基礎上運做的。HTTP屬於它內部的一個子級。瀏覽器

1.3.1 TCP/IP協議族

把互聯網相關聯的協議集合起來總稱爲TCP/IP。服務器

1.3.2 TCP/IP的分層管理

TCP/IP協議族裏最重要的一點——分層
按層次分別分爲如下4層:應用層、傳輸層、網絡層和數據鏈路層。
網絡

  • 應用層
    決定了向用戶提供應用服務時通訊的活動。HTTP處於該層
  • 傳輸層
    有兩個性質不一樣的協議:TCP(傳輸控制協議)和UDP(用戶數據報協議)
  • 網絡層(網絡互連層)
    用來處理在網絡上流動的數據包(網絡傳輸的最小數據單位)。該層規定了經過怎樣的路徑(傳輸路線)到達對方計算機,並把數據包傳送給對方。
  • 鏈路層(數據鏈路層,網絡接口層)
    用來處理鏈接網絡的硬件部分。包括控制操做系統、硬件的設備驅動、NIC及光纖等物理可見部分(還包括鏈接器等一切傳輸媒介)。

1.3.3 TCP/IP通訊傳輸流

利用TCP/IP協議族進行網絡通訊時,會經過分層順序與對方進行通訊。發送端從應用層往下走,接收端則往應用層往上走。
發送端在層與層之間傳輸數據時,每通過一層時一定會被 打上一個該層所屬的頭部信息。反之,接收端在層與層傳輸數據時,每通過一層時會把對應的 首部消去
這種把數據信息包裝起來的作法稱爲 封裝

1.4 與HTTP關係密切的協議:IP、TCP和DNS

1.4.1 負責傳輸的IP協議

IP網絡協議位於網絡層,「IP」實際上是一種協議的名稱。
做用:把各類數據包傳送給對方。要保證確實傳送到對方那裏,則須要知足的最重要的兩個條件是IP地址MAC地址
IP地址(可變換)指明瞭節點被分配到的地址,MAC地址(基本不會改)是指網卡所屬的固定地址。IP地址能夠和MAC地址進行配對。
使用ARP協議憑藉MAC地址進行通訊
IP間的通訊依賴MAC地址。 在網絡上,通訊的雙方在同一局域網內的狀況是不多的,一般是通過多臺計算機和網絡設備中轉才能鏈接到對方,而在進行中轉時,會利用下一站中轉設備的MAC地址來搜索下一個中轉目標。這時採用ARP協議。ARP是一種用以解析地址的協議,根據通訊方的IP地址就能夠反查出對應的MAC地址。
在到達通訊目標前的中轉過程當中,計算機和路由器等網絡設備只能獲悉很粗略的傳輸路線。(路由選擇機制大數據

1.4.2 確保可靠性的TCP協議

TCP處於傳輸層,提供可靠的字節流服務(爲了方便傳輸,將大塊的數據分割成以報文段爲單位的數據包進行管理)。TCP協議爲了更容易傳送大數據才把數據分割,並且TCP協議可以確認數據最終是否送達到對方。操作系統

爲了準確無誤地將數據送達目標處,TCP協議採用了三次握手策略
發送端(帶SYN標誌的數據包)->接收端收到的話(帶有SYN/ACK標誌的數據包以示傳達確認信息)->發送端收到(帶ACK標誌的數據包)->接收端(握手結束)
若在握手的過程當中某個階段莫名終端,TCP協議會再次以相同的順序發送相同的數據包。 3d

1.5 負責域名解析的DNS服務

DNS服務:和HTTP協議同樣位於應用層的協議,提供域名到IP地址之間的解析服務。
計算機既能夠被賦予IP地址(計算機更擅長處理一長串數字,更容易被計算機理解),也能夠被賦予主機名和域名(更符合人類的記憶習慣)。
DNS協議提供經過域名查IP地址,或逆向從IP地址反查域名的服務。 cdn

1.6 各類協議與HTTP協議的關係

1.7 URI和URL

與URI(統一資源標識符)相比,咱們更熟悉URL(統一資源定位符)。

1.7.1 URI

URI用字符串表示某一互聯網資源,而URL表示資源的地點(互聯網上所處的位置)。課件URL是URI的子集。

1.7.2 URI格式

表示指定的URI,要使用涵蓋所有必要信息的絕對URI、絕對URL以及相對URL(是指從瀏覽器中基本URI處指定的URL,形如/image/haha.gif)。

使用http:或https:等協議方案名獲取訪問資源時要指定協議類型。不區分字母大小寫,最後附一個冒號。也可以使用data:或javascript:這類指定數據或腳本程序的方案名。

  • 登陸信息(認證)
    (可選項)指定用戶名和密碼做爲服務器端獲取資源時必要的登陸信息(身份認證)。
  • 服務器地址
    使用絕對URI必須指定待訪問的服務器地址。地址能夠是相似hackr.jp這種DNS可解析的名稱,或是192.168.1.1這類IPv4地址名,還能夠是[0:0:0:0:0:0:0:1]這樣用方括號括起來的IPv6地址名。
  • 服務器端口號
    (可選項,省略則自動使用默認端口號)指定服務器鏈接的網絡端口號。
  • 帶層次的文件路徑
    指定服務器上的文件路徑來定位特定的資源。
  • 查詢字符串
    (可選)針對已指定的文件路徑內的資源,可使用查詢字符串傳入任一參數。
  • 片斷標識符
    (可選)使用片斷標識符一般可標記出已獲取資源中的子資源(文檔內的某個位置)。

並非全部的應用程序都符合RFC(一些用來指定HTTP協議技術標準的文檔)。

相關文章
相關標籤/搜索