前面介紹了網路的基本知識,那我們主機從接收到網路封包直到主機的服務收到資料的中間到底發生了什麼呢?
今天這篇我們就是要來介紹 Linux 中的網路(為啥不是 MAC 或 Windows 是因為大多數人都是將 Kubernetes 架設在 Linux 上),為各位介紹從主機上的網路卡收到網路封包到主機的服務收到資料中間的過程。
首先在 Linux 中網路封包大多數都是在 Kernel 中進行處裡(除了DPDK這種怪怪的東西之外),而 Linux Kernel 中負責處理網路相關的元件統稱為 Network Stack ,其中分為多個元件分別提供不同的功能,其架構如圖所示。
由下而上依序為:
介面(Interface),負責接收或發送網路的封包,包含各種網路卡。
TC(Traffic Control),負責控制網路進出的封包,對流量進行整型、調度等功能。
Netfilter,負責對網路封包進行路由、轉發、篩選等功能。
應用(Application),負責透過網路提供各種不同的服務,如演場會購票、X皮購物等。
其中最為重要的是 Netfilter ,因為只要主機接的到封包,最有可能使應用服務不通的就是 Netfilter ,原因就是 Netfilter 負責進行封包的篩選(恩~,這其中有各種血淚的教訓,有機會改天再分享給各位)。
那今天就到這裡,各位明天再見了。