[第六週] 網路基礎 — TCP/ IP

MiaHsu
7 min readApr 8, 2020

--

學習目標:粗淺了解 TCP/ IP

本文主要源自 Huli 從傳紙條輕鬆學習基本網路概念 ,並參考以下資料的學習整理:

當我們輸入網址後按下 enter 鍵後到底發生了什麼事情呢?

Photo by Django Request and Response Lifecycle

上圖是「當我們輸入網址後按下 enter 鍵後」一個簡單的說明:

  1. DNS 將 URL 轉換成實際的 IP Address,Browser 將 IP Address 包成一個 Request 送出去。
  2. Request 透過 Internet 傳送到 Server 。
  3. 收到 Request 的 Server 會跑去 Data center 撈取資料。
  4. 將撈取到的資料透過 Internet Response 回去。
  5. Browser 解析資料並印於 Browser 上。

上面有非~常多看不懂的單字,但這裡可以先有個大概印象即可,如果以更簡述的一句話概括說明網路傳遞這件事情就是:

在網頁上輸入的東西透過「Internet」傳遞到另外一端撈取資料後回傳打印在網頁上。

在 Internet 這段過程其實很複雜,雖然圖片沒有說明其中細節,但其實會發生非常多的事情。因此此篇主要講解到底是如何透過 Internet 將資訊來回傳遞的。

這段過程其實經過了非常多的判斷與處理

網路的層級

Internet 中要經過非常多道手續才能順利將資訊傳遞到另一端,因此就有組織將手續整理後明確分層變成一個模型,分層的好處就是只要處理那個層級的事情就好,可以把每一個層級想像成是一個「關卡」,傳遞的資訊時必須層層破關(通過協定),才能將資訊傳遞到另一端。

最有名的模型有兩種:

OSI 七層模型

  • Open System Interconnection Model;中文:開放式系統互聯模型。
  • 國際標準化組織(ISO)制定。

TCP/IP 通訊協定

  • TCP/IP Protocol Suite
  • 目前為網際網路的基礎通訊架構。#戰勝其他一些網路協定的方案像是OSI模型

目前主流的模型為 「TCP/IP 四層模型」,作為互連網路的標準框架:

組織機構把網路標準化每一層都負責不同的事情,並有著不同的通訊協定。圖片來源: OSI模型、TCP/IP协议栈

當從瀏覽器發送網路請求(Request)到 Internet 後,會從「應用層」到達「實體層」傳送出去,而當另一端收到請求後,再反向經由「實體層」到達「應用層」解讀訊息。

TCP/IP 通訊協定

由上到下每層分別為

  • 應用層 Application:HTTP、HTTPS、FTP、DNS…
  • 傳輸層 Transport:TCP、UDP
  • 網路層 Internet:IPv4、IPv6
  • 網路訪問層 Network Access:乙太網路、WiFi

志祺說看不懂有三種看不懂,其中一種是有太多不了解的語意(雖然寫的是中文但還是看不懂)而導致「看不懂」,如果有翻譯年糕就好了(?

因此 Huli 大大以簡單的傳紙條概念來說明這幾種層面所代表的涵意,看完覺得能把這麼複雜的東西有條理的解釋,實在是太厲害了~

圖片來源: Huli 從傳紙條輕鬆學習基本網路概念

我們開始由下到上理解每層做的事情(#網路存取層(實體層)不討論)

網路互連層 Internet

  • 全名 Internet Protocol,中文為網際網路協定
  • 在傳紙條比喻中就是「誰傳的」要「傳給誰」(From : 小明; To:小美)
  • 有分成 IPv4IPv6 兩種協定, IPv6 的誕生主要是為了解決IPv4位址枯竭問題
兩者最主要的差異在於 IP 位址的不同。(我們目前只要知道這樣就夠了)IPv4:使用32位元位址,由四個數字組成,範圍是 0~255。IPv6:一個64位元的網路前綴和一個64位元的主機位址。

IP Address

在這個協定裡面有一個 IP Address ,就是我們在網路上的網址,別人可以從這個地址訪問到你的電腦。因此我們平常說 小心我查你IP!! 是簡化 IP Address 的說法。有分為以下幾種類型:

  • 固定 IP:不會變、固定的 IP,基本上公司企業及伺服器都是使用固定 IP,這樣才能確保使用者可以連上伺服器。
  • 浮動 IP:在每次連上網的時候 IP 位置都會不一樣,普通的使用者跟家用電腦大部分都是浮動 IP。
  • 虛擬 IP:僅能使用於內部網路(或者說是區域網路內),外網是連不上的。
通常 192.168 或 10.0 開頭的,都是虛擬 IP。localhost 就是 127.0.0.1 這是特殊的 IP 代表自己的電腦。

傳輸層 Transport

用於不同設備或環境間傳輸訊息,說明如何傳遞資料。有以下兩種傳輸控制協定(Protocol):

UDP

  • 全名 User Datagram Protocol。
  • 適用於不需要或在程式中執行錯誤檢查和糾正的應用,例如:串流媒體、即時多人遊戲和IP語音(VoIP)。

TCP

  • 全名 Transmission Control Protocol。
  • 大部分的網路協定都是建立在 TCP 上面,因為是比較「可靠」的方式。
  • TCP 三次握手

TCP 可靠的原因在於,正式傳遞之前會進行三次的前置作業,而專有名詞叫做 TCP 三次握手(Three-way handshake)。

會透過三次握手來確保雙方收發都正常,才開始後續的資料交換。️

三次握手如果用傳紙條比喻的話大概會是這樣小明:安安,在嗎?小美:在阿,你好。小明:收到,太好了!

應用層(application)

  • 提供各種網路應用程式,例如:HTTP、FTP、Email 等。
[補充說明] HTTP 是什麼可參考 [第六週] 網路基礎 — HTTP、Request、Response 針對 HTTP 做說明。

通訊埠(port)

扮演一個通訊端點(endpoint)的角色(通訊埠是什麼?)若是公認的埠號,就可以辨認出這個連線要使用應用層哪個應用程式:

  • 監聽:5000 #localhost
  • HTTP:80 #預設
  • HTTPS:443
  • FTP:21
  • 「測試」常用:3000、4000、8080、8000
  • 舉例: 傳過去的 IP 會變成
    2. 本機:localhost:500、127.0.0.1:500
    2. HTTP:12.20.77.60:80

重點整理

  • 當輸入網址按下 enter 後會透過 internet 傳遞 Request 出去,對方接收到後會傳遞 Response 回來。
  • 在傳遞的過程中會經過層層的協定,有人將這些協定整理成模型,目前主流的模型為 TCP/IP 四層模型。
  • 網路層:IP 位址就是我們在網路上的網址,再細分為:固定、浮動及虛擬 IP 三種。
  • 傳輸層:有兩種協定:TCP 及 UDP,網路大部分使採用 TCP 因為比較安全(TCP 三次握手)。
  • 應用層:指網路各種應用程式。
  • Port:中文為連接埠,常見的連接埠為:HTTP 80、HTTPS 443、FTP 21 、監聽 5000 、測試 3000 4000 8000 8080。

以上有任何錯誤的地方歡迎指正,感謝。

--

--

MiaHsu
MiaHsu

Written by MiaHsu

每件事都是最好的安排,成為更好的自己

Responses (1)