一開始可能有點無聊,但還是要說一下現代的計算機網路是如何組成的,如果具有這方面的基礎可以跳到Day04,知道大家不喜歡看太多字,理論的地方字盡量少一點。
電腦之間的資料交換大部分都是透過網際網路,每台電腦上獨一無二的MAC地址就是電腦的唯一地址,傳輸過程中遵循公認的協議(TCP/IP stack)進行編解碼,並借由MAC地址送達指定的目的,下面聊聊網路節點常見的硬體和軟體設備。
網卡:Mac地址由網卡所負責,代表著一個獨一無二的地址
交換器:可以將交換器理解為網路口的延長線,能將單個網路口擴充多個網路口,它基於MAC地址判定轉發到哪個設備。
路由器:負責連結兩個獨立網路的設備,例如連結兩台電腦,或是連結兩群電腦,與交換器的差別是,他是TCP/IP第二層的設備,而路由器是第三層的設備,除了具有交換器的功能之外,能將電腦的MAC地址與IP地址進行映射關係。一般在軟體層面指定目的地電腦是用IP地址而不是Mac地址,IP地址的好處是較方便的快速找到傳送訊息的目標電腦。
防火牆:控制網路安全和訪問規則的系統,例如阻擋某個ip的任何流量通過,在Linux可以利用iptables建立規則
雖然寫網路服務使用TCP/IP五層協議進行交互,但是知道上述的設備功能在開放網路服務的時候能更有效的理解,接下來,我會介紹TCP/IP的五層結構,如果有開發相關的應用,能更好的理解,如果沒有也沒關係,我會帶著利用Python開發一個類似wireshark或tcpdump的應用,解析TCP/IP stack的原理。
系列的成果將會放在這:https://github.com/kaichiachen/pytcpdump
文章配合著程式碼有助於學習 :)