# 簡單理解 TCP/IP 模型 [TOC] Hello Guys, I'm LukeTseng. 本篇將來介紹 TCP/IP 模型,若本篇文章有誤,歡迎各位指正,若你也喜歡這篇文章,不妨按下愛心跟追蹤我的個人頁面吧! 另外本篇文章主要針對上課內容製作筆記,斟酌參考~ ## 為什麼要有 TCP/IP 模型? ![OSI Model v.s. TCP/IP Model](https://hackmd.io/_uploads/rkgAGAQW-l.png) Image Source:[TCP/IP Model - GeeksforGeeks](https://www.geeksforgeeks.org/computer-networks/tcp-ip-model/) 上圖是 OSI 模型與 TCP/IP 模型的對應關係,先只看 TCP/IP 就好。 首先要理解為什麼要有 TCP/IP 模型? 可以試想如果全世界不同語言的人要溝通,是不是要亂成一團?每個人只要各講各的就好了,而電腦也是一樣。mac、Windows 電腦、手機等,硬體設備都不同,為了讓這些設備能彼此傳送資料,所以就需要一套通用的溝通規則。 這套規則的標準,就叫做 TCP/IP 模型。其中 TCP 跟 IP 的意思分別是以下這兩個: * TCP:Transmission Control Protocol(負責確保資料送達) * IP:Internet Protocol(負責地址與路徑) TCP/IP 是一個分層架構,從上圖也可看得出來。 ## 分層概念 由於網路傳輸很複雜,所以偉大的電腦科學家把他切成 4 層來管理。每一層只專心做自己的事,做完就丟給下一層。 ### 第四層:應用層(Application Layer) 【角色】:接待員、翻譯官。(註:可能或多或少有誤,我盡可能去描述每層的工作像什麼) 【功能】:像是與軟體(如 Google Chrome、Gmail、Line 等)之間的橋樑,連接軟體跟實際發送和接收資料的網路底層。也管理資料格式,以便發送方和接收方都能理解資料,進行加密以保護資料安全,以及進行會話管理以追蹤正在進行的連接。 【常見協議(Protocol)】: * HTTP/HTTPS:看網頁用。 * SMTP/POP3:寄信/收信用。 * FTP:傳輸檔案用。 ### 第三層:傳輸層(Transport Layer) 【角色】:物流人員。 【功能】:決定資料(封包)怎麼送以及送到電腦裡的哪個程式。這有兩個最重要的協定: 1. TCP(靠譜、慢):像掛號信,一定要將信送到收件人手上。 TCP 會檢查送信(送封包)的過程中有沒有誤,有的話會重新發送缺失的部分。 用途:網頁、Email。 2. UDP(不靠譜、快):同樣拿寄信舉例,這就像是平信。 資料寄出去後就完全不管,也不知道這個資料會不會中途掉了(掉封包),或是被別人截走等等。 用途:視訊通話、直播、遊戲。 TCP 跟 UDP 的差別就是,是否提供了可靠性傳輸,TCP 可靠,而 UDP 不可靠。另外還有快與慢的差別,兩者各有優缺。 另外在這邊也有個重要的概念是 Port(通訊埠),是電腦作業系統中用來區分不同網路服務和應用程式的虛擬位置。 就像電話的分機號碼,幫電腦把網路上的資料正確傳送到對應的應用程式,使得同一台電腦可以同時處理多種不同的網路服務。 電腦若同時開著 Line、瀏覽器、Spotify,資料進來時怎麼知道給誰?就是靠 Port。 Port 通常以數字表示,所以也稱為 Port Number。 每個應用程式或服務會使用特定的 Port 號碼,像 HTTP 預設使用 Port 80。而 HTTPS 則使用 Port 443。 當一台電腦收到網路資料時,作業系統會根據 Port Number 將這些資料分配給相應的軟體或服務,確保資料不會混淆。 ### 第二層:網際網路層(Network Layer) 【角色】:導航系統、快遞司機。 【功能】:這層最知名的就是 IP(Internet Protocol)。該層任務是處理地址和路徑,給每個設備一個 IP 位址,並決定走哪條路最快到達目的地。 【常見協議】: * IPv4 / IPv6:可想成網路身分證 / 門牌號碼。 * ICMP(網際網路控制訊息協定:Internet Control Message Protocol):簡單來說就是檢查網路通不通。 ICMP 主要用於網路裝置之間傳送錯誤報告和診斷資訊。他可以幫你判斷資料是否有正確送到目的地,當資料封包在傳輸過程中產生問題的時候,如封包 timeout、無法到達目的地,ICMP 會將錯誤訊息發送回來源裝置,告訴你錯在哪。 而 ICMP 常用的診斷工具就是熟悉的 ping、traceroute。 ### 第一層:網路存取層(Network Access Layer) (也稱連結層 Link Layer) 【角色】:工人。 【功能】: - 資料變成電子訊號(0 和 1),透過網路線、光纖或 Wi-Fi 電波傳出去。 - 負責將資料從一台裝置的網路層傳送到另一台裝置。 - 只能在 LAN(區域網路)中傳輸。 【常見技術】: * Ethernet(乙太網路):有線網路技術,用光纖、雙絞線當作媒介傳輸。 * Wi-Fi:無線傳輸,透過無線電波傳輸資料。 Ethernet 網路中的裝置用 MAC 地址作為識別碼,資料在網路上以封包形式傳送,並利用 CSMA/CD 協定來避免資料碰撞,提高傳輸效率。 這層處理資料時會把他封裝成資料幀(Data Frame),並用幀(Frame)當作傳輸的單位。 ## 學術上分五層 ![TCP/IP five-layer](https://hackmd.io/_uploads/S1p6USVb-g.png) Image Source:https://www.researchgate.net/figure/The-TCP-IP-five-layer-model_fig1_358919795 學術上的分層將網路存取層(Network Access Layer)細分成兩個層次來看: 1. 軟體 / 邏輯:資料連接層(Data Link Layer) 2. 純硬:實體層(Physical Layer) 然後其他三層是沒變的。 ### 第二層:資料連結層(Data Link Layer) 【角色】:交通警察、區域物流員。 【功能】:負責同一條實體線路上,相鄰節點之間如何可靠地把網路層交給它的資料搬運過去,並包裝成幀(frame)送到下一個節點。 另外還有三個功能: 1. 框架化(framing):把來自網路層的 datagram(像 IP 封包的東西)切成一個個可辨識的 frame,並在前後加上必要的控制資訊,讓接收端能知道 frame 的開始與結束。 2. 糾錯(Correction):利用 header 與尾端的檢查碼來發現傳輸過程中 bit 被干擾的情況,有些資料連結層協定會處理重送,以提高傳輸可靠度。 3. 流量控制與媒體存取控制(MAC):在多個裝置共用同一媒介(如同條乙太網、同段無線頻道)時,協調誰可以在什麼時候發送,避免互相碰撞或淹沒接收端。 然後有個很重要的設備叫做 Switch(交換器),主要就是在 data link layer 運作。它依 MAC 位址學習各個主機在哪個實體埠,然後只把 frame 轉送到該埠,這樣在同一個 LAN 裡面就能有效減少不必要的廣播與碰撞。 ### 第一層:實體層(Physical Layer) 實體層位於 TCP/IP 模型中的最底層。 【功能】:把電腦裡的數位訊號(0 / 1),轉換成電壓(高低電位)、光(光纖亮滅)或無線電波,然後發射出去。 實體層負責定義硬體的物理特性與電氣規格,確保發送端送出的 1,接收端收到的也是 1,不會因為訊號衰減或干擾變成 0。 而實體層的規範通常包含以下幾個面向: 1. 硬體介面與接頭規格:定義 RJ-45 網路孔(一般常看到 PC 背板插的網路線)有幾根針腳、光纖接頭的形狀、USB 或天線的接口標準等。 2. 傳輸媒介:雙絞線(UTP)、同軸電纜、光纖、以及無線傳輸時的空氣(電磁波頻段)等。 3. 訊號編碼:定義如何將電腦裡的數位資料(0 / 1)轉換成適合在媒介上跑的類比訊號。 4. 傳輸速率:規範線路上的傳輸速度(如 100 Mbps, 1 Gbps)以及發送端與接收端如何保持時鐘同步,以正確讀取每一個 bit。 ### 資料連結層與實體層的差別 實體層把 bit 送出去後就不管了,而資料連結層則是把這些 bit 整成有意義的 frame,並加上檢查碼確認這串 bit 在傳送過程中是否有誤。 ## TCP/IP 的運作模式 ![image](https://hackmd.io/_uploads/Hy9JrLEbZl.png) Image Source(不知道是哪本書的圖,但我是從方格子上面擷取的):[網際網路協定堆疊(五層)](https://vocus.cc/article/67d972f9fd89780001ae1a7f) 例如要從 Source 端傳 line 給 Destination 端的電腦,line 是最頂層的 Application 層,一旦按下發送按鈕下去,就會將這個資料往下傳。傳給實體層後,可以看到圖中有一台 Link-layer switch,所以會經過 Data Link Layer -> Physical Layer,在實體層一樣繼續送資料給 Router(路由器)。 因為 Router 主要的功能是在不同的網路之間,根據 IP 位址來選擇最佳路徑並轉發資料。所以經過他的時候會經過 Network 層,最後發送給 Destination 端的電腦。 ## 參考資料 [TCP/IP Model - GeeksforGeeks](https://www.geeksforgeeks.org/computer-networks/tcp-ip-model/) [Day03 TCP/IP五層結構 | iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天](https://ithelp.ithome.com.tw/m/articles/10236217) [The TCP/IP five layer model | Download Scientific Diagram](https://www.researchgate.net/figure/The-TCP-IP-five-layer-model_fig1_358919795) [網際網路協定堆疊(五層)](https://vocus.cc/article/67d972f9fd89780001ae1a7f) [Port 像是分機號碼 - pala.tw](https://pala.tw/what-is-port/) [深入淺出網路技術:路由器、NAT 與 Port 的詳解](https://vocus.cc/article/67ff30f9fd897800018cca2e) [常用 TCP Port作用(各種Port介紹)-╭。☆║♡♥㊗-ⓨⓤⓝ-♡♥║☆。╮ |痞客邦](https://yun1450.pixnet.net/blog/post/47494172) [ICMP是什麼?ICMP功能、用途與資安風險完整解析|Skycloud](https://www.skycloud.com.tw/news/93) [Ethernet介紹 - 大大通(繁體站)](https://www.skycloud.com.tw/news/93)