細讀《圖解HTTP》第一章

細讀《圖解HTTP》第一章

網絡基礎TCP/IP

TCP/IP協議

通常使用的網絡(包括互聯網) 是在 TCP/IP 協議族的基礎上運作的, HTTP 屬於它內部的一個子集。

細讀《圖解HTTP》第一章

TCP/IP 是互聯網相關的各類協議族的總稱

協議中存在各式各樣的內容。 從電纜的規格到 IP 地址的選定方法、尋找異地用戶的方法、 雙方建立通信的順序, 以及 Web 頁面顯示需要處理的步驟, 等等。像這樣把與互聯網相關聯的協議集合起來總稱TCP/IP。 還有一種說法認為,TCP/IP 是在 IP 協議的通信過程中,使用到的協議族的統稱。

TCP/IP分層

細讀《圖解HTTP》第一章

TCP/IP協議族分為四層:應用層、 傳輸層、 網絡層和數據鏈路層。

分層後, 設計也變得相對簡單了。 處於應用層上的應用可以只考慮分派給自己的任務, 而不需要弄清對方在地球上哪個地方、 對方的傳輸路線是怎樣的、 是否能確保傳輸送達等問題。

應用層

應用層決定了向用戶提供應用服務時通信的活動。TCP/IP 協議族內預存了各類通用的應用服務。 比如, FTP(File Transfer Protocol, 文件傳輸協議) 和 DNS(Domain Name System, 域名系統) 服務就是其中兩類。HTTP 協議也處於該層。

傳輸層

傳輸層對上層應用層, 提供處於網絡連接中的兩臺計算機之間的數據傳輸。在傳輸層有兩個性質不同的協議: TCP(Transmission ControlProtocol, 傳輸控制協議) 和 UDP(User Data Protocol, 用戶數據報協議) 。

網絡層(又名網絡互連層)

網絡層用來處理在網絡上流動的數據包。 數據包是網絡傳輸的最小數據單位。 該層規定了通過怎樣的路徑(所謂的傳輸路線) 到達對方計算機, 並把數據包傳送給對方。與對方計算機之間通過多臺計算機或網絡設備進行傳輸時, 網絡層所起的作用就是在眾多的選項內選擇一條傳輸路線,這就是網絡路由。

鏈路層(又名數據鏈路層, 網絡接口層)

用來處理連接網絡的硬件部分。 包括控制操作系統、 硬件的設備驅動、 NIC(Network Interface Card, 網絡適配器, 即網卡)及光纖等。物理可見部分(還包括連接器等一切傳輸媒介),硬件上的範疇均在鏈路層的作用範圍之內。

TCP/IP 通信傳輸流

發送端在層與層之間傳輸數據時, 每經過一層時必定會被打上一個該層所屬的首部信息。 反之,接收端在層與層傳輸數據時, 每經過一層時會把對應的首部消去。這種把數據信息包裝起來的做法稱為封裝(encapsulate)

細讀《圖解HTTP》第一章

TCPIP通信數據流

負責傳輸的 IP 協議

IP(Internet Protocol) 網際協議位於網絡層。幾乎所有使用網絡的系統都會用到 IP 協議。 TCP/IP 協議族中的 IP 指的就是網際協議。

IP 協議的作用是把各種數據包傳送給對方。需要滿足兩個重要的條件是 IP 地址和 MAC地址(Media Access Control Address) 。IP 地址指明瞭節點被分配到的網絡地址, MAC 地址是指網卡所屬的固定的物理地址。 IP 地址可以和 MAC 地址進行配對。 IP 地址可變換, 但 MAC地址基本上不會更改。使用 ARP 協議憑藉 MAC 地址進行通信IP 間的通信依賴 MAC 地址。 在網絡上, 通信的雙方在同一局域網(LAN) 內的情況是很少的, 通常是經過多臺計算機和網絡設備中轉才能連接到對方。 而在進行中轉時, 會利用下一站中轉設備的 MAC地址來搜索下一個中轉目標。 這時, 會採用 ARP 協議(Address Resolution Protocol) 。 ARP 是一種用以解析地址的協議, 根據通信方的 IP 地址就可以反查出對應的 MAC 地址。沒有人能夠全面掌握互聯網中的傳輸狀況在到達通信目標前的中轉過程中, 那些計算機和路由器等網絡設備只能獲悉很粗略的傳輸路線。這種機制稱為路由選擇(routing) , 有點像快遞公司的送貨過程。 想要寄快遞的人, 只要將自己的貨物送到集散中心, 就可以知道快遞公司是否肯收件發貨, 該快遞公司的集散中心檢查貨物的送達地址, 明確下站該送往哪個區域的集散中心。 接著, 那個區域的集散中心自會判斷是否能送到對方的家中。

細讀《圖解HTTP》第一章

IP協議工作流程

確保可靠性的 TCP 協議

TCP 位於傳輸層, 提供可靠的字節流服務。所謂的字節流服務(Byte Stream Service) 是指, 為了方便傳輸, 將大塊數據分割成以報文段(segment) 為單位的數據包進行管理。 而可靠的傳輸服務是指, 能夠把數據準確可靠地傳給對方。 一言以蔽之,TCP 協議為了更容易傳送大數據才把數據分割, 而且 TCP 協議能夠確認數據最終是否送達到對方。TCP 協議採用了三次握手(three-way handshaking) 策略。 用 TCP 協議把數據包送出去後, TCP不會對傳送後的情況置之不理, 它一定會向對方確認是否成功送達。握手過程中使用了 TCP 的標誌(flag) —— SYN(synchronize) 和ACK(acknowledgement)。發送端首先發送一個帶 SYN 標誌的數據包給對方。 接收端收到後,回傳一個帶有 SYN/ACK 標誌的數據包以示傳達確認信息。 最後, 發送端再回傳一個帶 ACK 標誌的數據包, 代表"握手"結束。若在握手過程中某個階段莫名中斷, TCP 協議會再次以相同的順序發送相同的數據包。

細讀《圖解HTTP》第一章

TCP確認流程

負責域名解析的 DNS 服務

我們在訪問某一個網站站點時,通常都是使用域名來訪問對方的計算機,而不是直接通過 IP地址訪問。因為人類的記憶更擅長記錄一些用字母、數字相結合的計算機名。但是讓計算機更擅長處理一長串數字。DNS 服務則充當了人類與計算機的翻譯任務,通過DNS服務器,建立域名與IP地址的映射表,來提供通過域名查找 IP 地址,或逆向從 IP 地址反查域名的服務。

DNS(Domain Name System) 服務是和 HTTP 協議一樣位於應用層的協議。 它提供域名到 IP 地址之間的解析服務。人類在訪問網站時一般都是在瀏覽器上輸入網站的域名,如,計算機會先通過DNS查詢到對應的IP地址,再通過IP路由把訪問請求路由到目的服務器。

細讀《圖解HTTP》第一章

DNS服務流程

各種協議與 HTTP 協議的關係

學習了和 HTTP 協議密不可分的 TCP/IP 協議族中的各種協議後, 我們再通過這張圖來了解下 IP 協議、 TCP 協議和 DNS 服務在使用HTTP 協議的通信過程中各自發揮了哪些作用。

細讀《圖解HTTP》第一章

HTTP與TCP、IP、DNS協同工作流

URI 和 URL

細讀《圖解HTTP》第一章

URI包含URL、URN以及URL+URN三種

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

讓我們先來了解一下絕對 URI 的格式也就是一個URL

細讀《圖解HTTP》第一章

通俗的來說,就是:

URI是抽象的定義,不管用什麼方法表示,只要能定位一個資源,就叫URI,在設計過程中,設計了兩種方法來定位這個資源:

1,URL用地址定位;

2,URN 用名稱定位。

舉個例子:在某個城市找個具體的人(URI),如果用地址:某村多少號房子第幾間房的主人 就是URL, 如果用身份證號+名字 去找就是URN了。

結果就是 目前WEB上就URL流行開了,平常見得URI 基本都是URL。

如需《圖解HTTP》電子書,可私信郵箱發給我!


分享到:


相關文章: