Skip to main content

[網際網路] TCP_IP 階層模型-基礎 part 1

此文章為各筆記之整理,非原創,擷取來源可見資料來源

待閱讀:

TCP/IP 階層模型#

TCP/IP 階層模型由下而上分別為網路介面層網際網路層傳輸層、和應用層

  • L2 - 資料鏈結層(Link Layer / Data-Link Layer):建立通訊作業的裝置,如,乙太網路的網路卡、WiFi。
  • L3 - 網際網路層(Internet Layer / Network Layer):利用轉送的方式,為任意兩端的裝置建立通訊連線,例如,IPICMP
  • L4 - 傳輸層(Transport Layer):根據不同的用途提供不同的通訊品質,例如,TCPUDP
  • L5 - 應用層(Application Layer):實際執行通訊服務作業,例如,HTTPSMTPPOP3

圖片來源:中繼器 (Repeater)、集線器 (Hub)、橋接器 (Bridge)、交換器 (Switch) 原理與介紹 @ !false

TCP/IP 協定套組 @ Wiki

網路介面層(Link Layer)#

keywords: 子網路, MAC address, EthernetWi-FiPPPoE, ARP/RARP#
  • 直接透過網路硬體裝置連接的電腦(子網路),建立相互通訊的連線,但不能透過轉送的方式跨越至其他網路(網際網路)。
  • 在這裡規定了「幀 (Frame)」的概念(不是封包),其中表頭的長度固定為 18byte,數據則介於 46 ~ 1500 byte,超過這個長度就會拆成另一幀。

幀 = 表頭 (Head) + 數據 (Data)

  • 表頭裡面會放發送者和接收者的「MAC 位址」,這個位址在每台電腦都是不一樣的,透過廣播(broadcast)的方式,看看表頭中的接受者和當前拜訪的地址是否吻合(僅適用於子網路)。

MAC address 共由 48 個位元組成,以十六進位的方式表示,前 24 個位元廠商編號,後 24 個為廠商的流水號。例如,a4-5e-60-d0-bb-ff

  • 最具代表性的通訊協定為乙太網路(Ethernet)、Wi-Fi、PPPoE(PPP over Ethernet,點對點通訊協定)、ARP/RARP。
    • 乙太網路(Ethernet):有線網路被最廣為使用的規範。
    • Wi-Fi:透過無線方式連結區域網路的規範。
    • PPPoE:在乙太網路上進行一對一連線的通訊協定。
    • ARP/RARP:將 IP 位址和 MAC 位址互相轉換的一種通訊協定。

網際網路層(Internet Layer)#

keywords: IP, ICMP, 網際網路#
  • 有了網路介面層提供的 MAC 位址後,就可以知道要把資料傳輸到子網路內的哪台電腦,然而 MAC 位址只適用於子網路的通訊,單從 MAC 地址無法得知收件者的子網路為何,因此需要 IP 協定,透過 IP 位址即可知道該電腦屬於哪一個子網路
  • 將資料轉送到未直接連接的其他網路,而將封包轉送到指定的方向就稱作路由(route)
  • 將資料的表頭加上傳送者和接受者的 IP 位址,藉以識別所要連線的電腦端點,知道該資料要送到哪個子網路。
  • 最具代表性的協定為 IP(Internet Protocol,網際網路通訊協定),此協定針對未直接連結的網路,提供封包路由機制,為任意的電腦端點建立通訊連線。
  • ICMP(Internet Control Message Protocol,網際網路控制訊息協定),用來輔助 IP 協定,能偵測資料是否被送達任意端點,若否,則發送失敗通知。

傳輸層(Transport Layer)#

keywords: TCP, UDP, port#
  • 有了網際網路層的 IP 位址之後,就可以把檔案傳輸到目標電腦上,但是該電腦上有許多不同的應用程式,沒辦法知道這個檔案要由電腦上的哪一個應用程式處理,因此出現了 port 的概念,提供每一個需要使用到網路的應用程式一個 port 後,即可知道這個檔案要發送到該電腦上的哪一個 port
  • port 是由 16 個位元組成,從 0 ~ 65535,其中的 0 ~ 1023 是給電腦所使用。
  • 將資料的表頭加上來源端的 port 和接收端的 prot。
  • 在這個層級傳送的資料才稱作「封包(package)」
  • 根據網際網路層,為任意的電腦端點建立高可靠性、低錯誤率的通訊服務

30-11 之 TCP 與 UDP 協議 @ iThome

TCP (Transmission Control Protocol):可靠傳輸#

  • 最具代表性的協定是 TCP(Transmission Control Protocol,傳輸控制協定),通訊前須先建立「連線」,連線完成後可以進行「通訊」,通訊完畢後「中斷連線」,可處理封包遺失或重複的情況,若傳送資料的請求在一定是前內沒有回應,則會重新發送,因此缺乏即時性,適用於網頁的 HTTP、郵件的 SMTP 等。
# TCP 建立連線:三方交握(Three-Way Handshake)
STEP 1: 傳送端 --> SYN --> 接收端
STEP 2: 接收端 --> SYN + ACK --> 傳送端
STEP 3: 傳送端 --> ACK --> 接收端
# TCP 中斷連線:四次揮手
STEP 1: 傳送端 --> FIN --> 接收端
STEP 2: 接收端 --> FIN + ACK --> 傳送端
STEP 3: 傳送端 --> ACK --> 接收端

UDP (User Datagram Protocol) - 不可靠傳輸#

  • UDP(User Datagram Protocol,使用者資料元協定),不會執行任何提高通訊可靠性的動作,不須先建立連線,不需事前準備,隨時可開始通訊,收到資料後馬上交給應用層,適用於影音串流、網路電話、DNS 和 NTP。
  • 透過 UDP 可以將資料傳輸到特定電腦的應用程式中,但是不去管對方有沒有收到,同時收到檔案的順序快能也不同。
  • 在 UDP 的表頭中會包含有 Port 和檔案的長度(length

應用層(Application Layer)#

keywords: HTTP, SMTP, POP3, IMAP4, FTP, SSH, DNS, NTP#

透過應用層的機制,選出傳輸層中適合該應用程式且「符合使用目的」的通訊功能,接著透過該功能對應用程式進行資料處理。其中重要的協定包含:

  • HTTP - 網頁存取
  • SMTP - 郵件轉送
  • POP3 - 取出郵件
  • IMAP4 - 讀取郵件
  • FTP - 檔案傳輸
  • SSH - 傳送字串指令給伺服器並確認結果
  • DNS - 網域名稱與 IP 位址轉換
  • NTP - 校時

資料於各層間的傳遞#

發送端送出資料時,封包會由高層往低層傳遞,在每一層傳遞時會添加標頭(header),所以資料往低層走的時候,封包的大小也跟著變大。當接收端收到資料時,封包會由低層往高層傳遞,在傳遞過程中會刪除標頭,因此封包大小則會越來越小。

Imgur

圖片來源:MIS 一定要懂的 82 個網路技術知識 @ 旗標出版

MAC 位址(Media Access Control Access)#

MAC 位址(媒體存取控制位址,Media Access Control Access)用來指派給每個乙太網路等網路硬體裝置的位址。理論上,每組 MAC 位址都是全世界獨一無二的號碼,又被稱作資料鏈結層的「實體位址(Physical Address)」,但實際上有部分的網路產品是可以自行更改 MAC 位址,因此不見得每台裝置所使用的 MAC 位址都是唯一的

MAC 位址是由 6 組十六進制的數字表示(6 bytes):

4A:00:04:3F:94:87
  • 前 3 個 bytes 是由 IEEE 分配的組織唯一識別碼 (OUI),可視為製造商編號。
  • 後 3 個 bytes 則是製造商分配,通常第 4 個 bytes 是機型編號,最後 2 個 bytes 則是產品序號。

1 bytes = 8 bits = 8 位數的二進制 = 2 位數的十六進制。

IP 位址(IP Address)#

keywords: ICANN, TWNIC, NAPT#

「IP 位址」是為了讓網路能透過 IP 協定來識別每一台電腦,因此附加在電腦上的一列編號。目前使用的 IP 位址有 IPv4IPv6 這 2 種。

IP 的配發#

公有 IP 位址採全球性管理,每一台電腦皆有不同的 IP 位址。

  • 網際網路名稱及號碼指配機構(Internet Corporation for Assigned Names and Numbers, ICANN)派發特定範圍的 IP 位址給
  • 區域網際網路註冊機構(Regional Internet Registry, RIR) ,亞太地區為 APNIC,接者在配發給
  • 國家級網際網路位址註冊機構(National Internet Registry, NIR),台灣為 TWNIC
  • 或者 APNIC 分配給本地級網際網路位址註冊機構(Local Internet Registry, LIR),例如 ISP 等。

Imgur

圖片來源:MIS 一定要懂的 82 個網路技術知識 @ 旗標出版

公有 IP(Public IP)和私有 IP(Private IP)#

全球獨一無二,不會重複的 IP 位置就屬於「公有 IP 位址」。私有 IP 位址內則有部分 IP 位址會互相重複,適用於機關行號或家庭等內部網路,只要同一個網域內的 IP 位址不重複就能識別電腦

NAT 和 NAPT:私有 IP 與公有 IP 位址間的轉換#

在辦公室或家用網路中,可以使用私有 IP 位址(Private IP Address),但若要連上網際網路時,仍必須使用全球唯一的公用 IP 位址(Public IP Address)來表明自己的身份,這時候就必須要使用位址轉換(Address Translation)才能連線上網。

位址轉換大致上有 NAT 和 NAPT 兩種方法:

NAT(Network Address Translation,網路位址轉譯):一對一轉換#

功能:將內網的 IP 對應到外網的 IP

這種方式路由器會先被指派好幾個不同的公用 IP 位址,當區域網路內的電腦要連上網際網路時,會從中選擇一個來用,電腦在區域網路中將 IP 封包轉送到網際網路時,私有 IP 位址會被轉換為公有 IP 位址。透過此種方式可同時連上網際網路的的電腦台數取決於路由器所掌管的公有 IP 位址數量

NAT 的說明可參考 30-28 之 WebRTC 連線前傳 - 為什麼 P2P 連線很麻煩 ? ( NAT ) @ iThome

NAPT(Network Address Port Translation):多對一轉換#

透過轉換 IP 位址時同時轉換連接埠號的方式,讓多台電腦可以共用同一個公用 IP 位址。這種方式在執行 TCP/IP 通訊時,除了目的端 IP 位址和連接埠號會被寫入封包外,發送端的 IP 位址和連接埠號也會寫入封包中;在封包被傳送到網際網路時,發送端 IP 位址和連接埠號的組合會被轉換成路由器公用 IP 位址和路由器所管理的連接埠號組合。如此,即使路由器只有一個公用 IP 位址,區域網路內的多台電腦也能和網際網路上的電腦相互連線與通訊

IP 位址分級#

IP 位址採用分級的概念,可以分成 A ~ E 五種等級,其中 D 和 E 為特殊用途,A ~ C 則為一般的位址。A ~ C 級的差異在於每個網路位址可支援的主機數量不同

級別第一個位元組起始位址結束位址子網路預設遮罩
A 級(Class A)0 - 12710.0.0.010.255.255.255255.0.0.0
B 級(Class B)128 - 191172.16.0.0172.31.255.255255.255.0.0
C 級(Class C)192 - 223192.168.0.0192.168.255.255255.255.255.0

子網路遮罩(subnet mask):網路切割#

IP 位址除了使用半形句點來分隔 4 個十進位小數點格式的數字來表示(例如 192.168.123.132 )外,也可以使用 32 位元的二進制數來表示,該位址會獨一無二地識別 TCP/IP 網路上的主機 (電腦或其他裝置,例如印表機或路由器)。

若想要了解如何使用子網路遮罩區分主機、網路及子網路,需以二進位表示法來查看 IP 位址。

例如,192.168.123.132 可以轉換成 11000000.10101000.01111011.10000100

為了使 TCP/IP 廣域網路(WAN)能有效做為網路集合,在網路之間傳送資料封包的路由器,並不知道資訊封包目的地之主機的確切位置。路由器只會知道主機所屬的網路,並且會利用儲存在其路由表中的資訊,來決定如何將封包傳送到目的地主機的網路。當封包傳送到目的地網路之後,該封包就會傳送到適當的主機

為了讓封包能順利傳送到目的地所屬的網路及該主機位置,IP 位址包含有兩個部分,IP 位址的第一部分是做為「網路位址(Network Address)」,第二個部分是做為主機位址。但由於在 TCP/IP 來說,IP 位址中做為網路及主機位址的部分並非固定的,因此 TCP/IP 通訊協定會使用子網路遮罩(subnet mask),來得知網路位址和主機位址(決定主機是位於本機子網路上或在遠端網路上)

  • 主機(host):TCP/IP 網路上的電腦或其他裝置。
  • 網路位址(Network Address):主機部分全部為 0 的 IP 位址。

子網路遮罩就是 32 位元的二進位數字,舉例來說,子網路遮罩為:11111111.11111111.11111111.0000000,當我們將 IP 位址和子網路遮罩排在一起,就能分隔位址的網路部分與主機部分

11000000.10101000.01111011.10000100 -- IP 位址 (192.168.123.132)
11111111.11111111.11111111.00000000 -- 子網路遮罩 (255.255.255.0)

前 24 個位元(子網路遮罩當中的 24 個數字 1)識別為網路位址,最後 8 個位元(子網路遮罩中剩餘的 8 個數字 0)識別為主機位址。這樣可得到下列結果:

11000000.10101000.01111011.00000000 -- 網路位址 (192.168.123.0)
00000000.00000000.00000000.10000100 -- 主機位址 (000.000.000.132)

因此可以得到:

192.168.123.0 - 網路位址。
0.0.0.132 - 主機位址。

以 TCP/IP 來說,IP 位址中做為網路及主機位址的部分並非固定的,因此除非您擁有更多資訊,否則無法決定上述網路及主機位址。此資訊是由另一個稱為子網路遮罩的 32 位元數字所提供。

子網路(subnet)與廣播位址(Broadcast Address)#

將網路切割為規模較小網段的連線架構就稱為子網路(subnet)。分割子網路可以讓網路位址部分增加,但主機位址相對減少。例如,借用 2 個位元的主機位址給網路位址時,就可以多畫出 4 個子網路,見下面的實例。

在子網路中,IP 最後一個位元組的第一個數值(例如,192.168.1.0)和最後一個數值(例如,192.168.1.255)是無法使用的位址,因為「主機部分」全部是 1 及全部是 0 的二進位位址(即,255 和 0)是無效的。

  • 0 位址無效,因為該位址是用來指定未指定主機的網路
  • 255 位址無效,因為它是用來對網路上的所有主機廣播訊息

請牢記,任何網路或子網路中的第一個位址及最後一個位址,都不能指派給任何個別主機。

所謂廣播(broadcast)就是同時對某個網域裡的所有電腦傳送資料。

廣播位址 (Broadcast Address):主機位址部分全部為 1 的 IP 位址。

實例(example)#

假設被分派到的網路是 類別 C 網路 192.168.123.0,表示將有 192.168.123.1 ~ 192.168.123.254 可以使用,若我們想要將它分成 4 個子網路,即可以使用子網路遮罩 255.255.255.192

# 網路遮罩 255.255.255.192
11111111.11111111.11111111.11 000000
|------ 網路位址 ------|-主機位址-|

因為最後一個位元組的前 2 個位數變成網路位置,所以有 00 000000(0), 01 000000(64), 10 000000(128), 11 000000(192) 這四種網路位址可以使用;而其他的 6 個位數則可用於分配主機位址。

總結來說使用子網路遮罩 255.255.255.192 時,192.168.123.0 的網路就會變成 192.168.123.0192.168.123.64192.168.123.128192.168.123.192 這四個網路。

這四個網路會有下列有效的主機位址:

192.168.123.1-62
192.168.123.65-126
192.168.123.129-190
192.168.123.193-254

同樣地,切記全部是 1 或全部是 0 的二進位主機位址為無效位址,所以不能使用最後一個八位元資料組為 0、63、64、127、128、191、192 或 255 的位址。

可變長度子網路遮罩(VLSM)#

傳統上的子網路遮罩屬於固定長度的子網路遮罩,每個子網路所容納的電腦台數必須相同;然而,透過可變長度子網路遮罩(VLSM, Variable Length Subnet Masking)的技術,可以讓子網路遮罩的長度隨著子網路而改變,決定每個子網路的電腦連線數量時會更有彈性

無類別域際選路(CIDR, classless inter-domain routing)#

CIDR 是以 VLSM 為基礎的技術,它可以、透過將網路部分的位址縮短,即可透過相同的轉送規則,將資料轉送到多個網路。

廣義上來說,能夠任意設定網路部分的位址長度即可稱為 CIDR。

CIDR 標記法IP / <網路位址部分位元數>

子網路區段CIDR範圍可連線數
子網路 1192.168.1.0 /25192.168.1.0 ~ 192.168.1.127126 台
子網路 2192.168.1.128 /26192.168.1.128 ~ 192.168.1.19162 台
子網路 3192.168.1.192 /26192.168.1.192 ~ 192.168.1.25562 台

IP 總共為 32 的位元數,\25 表示使用的網路位址部分佔了 25 的位元數,因此可用的位元數為 7 個,共可提供 2 ^ 7 - 2 = 126 台連線數。

延伸閱讀#

資料來源#

TCP/IP 模型#

其他#

Last updated on