[網際網路] TCP_IP 階層模型-基礎 part 1
此文章為各筆記之整理,非原創,擷取來源可見資料來源。
待閱讀:
- MIS 一定要懂的 82 個網路技術知識 @ 旗標出版
- 中繼器 (Repeater)、集線器 (Hub)、橋接器 (Bridge)、交換器 (Switch) 原理與介紹 @ !false
- 了解 TCP/IP 定址及子網路基本概念 @ Microsoft Support
TCP/IP 階層模型
TCP/IP 階層模型由下而上分別為網路介面層、網際網路層、傳輸層、和應用層。
- L2 - 資料鏈結層(Link Layer / Data-Link Layer):建立通訊作業的裝置,如,乙太網路的網路卡、WiFi。
- L3 - 網際網路層(Internet Layer / Network Layer):利用轉送的方式,為任意兩端的裝置建立通訊連線,例如,
IP
、ICMP
。 - L4 - 傳輸層(Transport Layer):根據不同的用途提供不同的通訊品質,例如,
TCP
、UDP
。 - L5 - 應用層(Application Layer):實際執行通訊服務作業,例如,
HTTP
、SMTP
、POP3
。
圖片來源:中繼器 (Repeater)、集線器 (Hub)、橋接器 (Bridge)、交換器 (Switch) 原理與介紹 @ !false
TCP/IP 協定套組 @ Wiki
網路介面層(Link Layer)
keywords: 子網路
, MAC address
, Ethernet
、Wi-Fi
、PPPoE
, 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),所以資料往低層走的時候,封包的大小也跟著變大。當接收端收到資料時,封包會由低層往高層傳遞,在傳遞過程中會刪除標頭,因此封包大小則會越來越小。
圖片來源:MIS 一定要懂的 82 個網路技術知識 @ 旗標出版