fbpx

Socket 程式設計的網路概念 – 學術等級

Contents

具有 Socket 程式設計概念的網路課程,深入介紹 TCP/UDP/HTTP Socket 程式設計,不管初學者或專家等適合

從這 23 小時的課程,你會學到

  • 自信地回答網路相關問題
  • 為網路 / 系統程式設計公司開拓商機
  • 同時熟悉 Linux 和學習 Linux 系統程式設計
  • 建立 Github 作品集,增強你的就業能力
  • 用在本課程中完成的專案豐富你的履歷
  • 學習 OSI 模型所有層的網路概念
  • 課程內容的設計保持了跨國公司的面試
  • 編寫專案程式碼和作業
  • 成為一位專業的網路開發者
  • 掌握 Linux 環境下 TCP/UDP 伺服器的設計與編寫
  • 從零開始建立和解碼完整的資料封包
  • 資料包封裝的概念
  • L2和 L3 路由,基於 Vlan 的路由

要求

  • 大學網路基礎課程
  • 需要基本的 C 語言程式設計技能

課程說明

本課程是關於加強網路的概念和基本原理與作業並列的理論。 通過這門課程,你將能夠:

  1. 理解 TCP/IP 堆疊(OSI 模型)的功能。 詳細瞭解 TCP/IP 堆疊中每一層的功能。
  2. 解釋 L2 路由的概念-Mac 位址和 ARP
  3. 解釋 L3 路由的概念-IP 位址和 IP 通訊協定
  4. 解動態構建 L3 路由表的過程
  5. 理解使用 C 語言設計 Linux TCP/UDP 伺服器程式的各種方法
  6. 理解使用 C 語言的 Socket 程式設計
  7. 理解網路設備的功能-L2 交換機和 L3路由器
  8. 透過 TCP/IP 堆疊層理解資料封行程
  9. 從零開始設計和實現 HTTP 網頁伺服器
  10. 從頭開始讀取和製造網路資料封包
  11. 理解 TLVs 的概念
  12. 資料包封裝的概念
  13. 理解網域名稱系統(DNS)
  14. 虛擬區域網(VLANs)與 VLANs 中的路由
  15. 廣播網域與碰撞網域( Collision Domain )

我們理解——網路本質上傾向於成為一個理論研究課題。 為了激發學生的興趣,我們通過作業或專案來詳細闡述本課程的每一個主題。

這門課很全面。 我們解釋設計,討論程式碼流程,然後指導聽眾如何一步一步地實現具體的概念設計。 你所需要的就是在你的系統上執行一個 Linux 作業系統來完成這個課程。

誰應該上這門課?

本課程是為大學電腦專業的學生、求職者和專業開發人員開設的。 這是必須做的課程,為那些要加入跨國公司擔任開發人員的人所設計。 本課程所涵蓋的主題從面試方面來說是非常重要的,電腦科學專業畢業的學生希望在跨國公司尋找機會成為一名開發人員,他 / 她的指尖應該有網路的概念。 最好是在大學課程中學習網路課程,而不是強制性的。 求職者試圖在一個包含網路基於系統軟體開發產品的跨國公司尋求職位,這是一個常青樹領域。 網際網路永遠不會滅亡。

先決條件

這門課程沒有先決條件,不過,如果你懂一點 C 語言就更好了。 我們設計這門課程時假設學生是一名網路方面的初學者,當我們從基礎到推進網路概念的過程中,我們逐漸提高了課程的水平。

還有,請不要坐著看我的程式碼。 編寫你自己的程式碼,即使它和我的一樣!

我們有充分的理由選擇 C 語言作為本課程的語言:

1. 整個網路核心的開發工作都是用 C 語言完成的。 因此,如果您打算以網路協議開發人員的身份加入業界,單憑這個理由就足以讓您學習 C 語言的網路開發。

2. 網路設備需要與底層硬體 — ASIC 晶片進行互動。 在硬體互動和程式設計方面,還有什麼語言比 C 語言更好呢。

3. C 語言是中階語言,不像組合語言那麼低階,也不像 Java / Python 那麼高階。 在 C 語言中,程式設計師的責任是編寫完成任務的每一行程式碼,不像 Java / Python 提供了豐富的第三方程式庫來為您完成大多數任務。 使用高階語言學習網路程式設計將模糊網路的低階細節-這是幕後運作的原理。 如果你是網路程式設計的初學者,你必須從頭開始學習,只有 C 語言提供了這樣做的機會。 所以,你們必須用 C 語言完成所有的作業。

4. 網路就是製作資料封包,然後用電纜傳送出去。 C 將允許您以完全相同的方式來處理封包,就像您希望它們出現在網路上一樣。 大量的位元等級程式設計。

5. 如果你是網路方面的初學者,請不要學習使用 Java 或 Python 等高階語言的網路程式設計。 在網路領域不是以工作為導向的事情。

不需要第三方程式庫

無論您實現什麼邏輯,您都需要從頭開始實現它。 本課程不建議使用任何第三方程式庫來完成這些工作。 使用外部程式庫完全違背了課程的目的。 但是,對於常用的資料結構,如連結串列 / 樹 / 佇列等,建議使用第三方程式庫,這樣可以節省大量實現這些資料結構的時間。

除了課程還有什麼?

如果你的目標是成為一名開發人員,那麼,除了在資料結構和演算法方面有很強的實力之外,你還應該清楚與其它 Linux 實用程式相關的概念。 網路是有關於系統程式設計,你會有興趣學習其它 Linux 的重要概念,如行程間通訊( IPC ),遠端程序呼叫( RPC )等。 請看看我在這方面的其它課程。 這些課程將總結你作為一個更具競爭力的網路和系統程式設計領域的開發人員。

看看學生們對這門課程的看法

只要看看這些評價最高的評論(瀏覽評論部分來驗證這些評論)

多麼美妙的課程啊! ! ! 我非常感謝 Abhishek 在這個課程中所做的努力。 他全身心地投入了這項工作。 他解釋事情的方式讓你迷上了這門課。 他不拐彎抹角地直奔主題。 任何網路書籍的作者都無法解釋 Abhishek 正在做的事情。 Abhishek 所做的就是解釋這個主題的本質。 一個人要讀10本書才能理解這一點。 或者更多。 過去我心裡有一種不太理解網路的直覺。 本課程在內容、清晰度和教學風格方面符合我的期望,並有適當的示範。 這個課程提高了你的理解力,消除了不知道的恐懼… … 不僅如此,它還為你的網路知識注入了很多自信… … 謝謝你提供了這樣一個課程。 再次感謝。

* * * * * * 在正確的時間穿過正確的路線。 本課程似乎涵蓋了網路的所有重要領域。 講師以良好的節奏詳細地闡述了本課程的主題。 這門課看起來就像是為了打敗技術面試而設計的。

***** 偉大的課程—- 指導老師非常全面,能夠迅速指導學生,並且能夠迅速釐清高任何疑問。 我真的很喜歡這門課。 網路對我來說是一個很難學習的課程,但是這門課使它變得很容易。 我現在已經把我的概念完全弄清楚了! 謝謝 Abhishek 和 Udemy。

* * * * 我是硬體/嵌入式系統工程師,這些課程的講師真心給予祝福。正如他前面提到的,所有的網路程式設計或 Linux 系統程式設計都必須使用 C 語言實現,因為 C 語言是訪問記憶體空間和定製與其它晶片序列通訊的完美語言。 在真正的工業領域,沒有人會教你。 你是唯一一個需要自己解決問題的人,因為每個人都希望你不要在工作中表現出色。 只有一個人可以成為經理或主管。 就拿這傢伙的課來說吧。 不用說,品質是有保證的。 如果我能 Hack 這個網站,我會毀了他的講座。 我不希望其他人從他的講座中受益。 如果他能為”從零開始製作一個作業系統”做一次演講,那就再好不過了:)

警告: 本課程有自動系統生成的字幕,可能並不完美。 請根據您的需要斟酌使用字幕。

課程

0. 在您的機器上設定 Linux 開發環境

  • 為那些不熟悉 Linux 安裝 / 環境的使用者

1. OSI 模型與 TCP/IP 堆疊

  • 資料封裝與資料解封裝
  • Headers Cascading
  • 資料包通過 TCP/IP 堆疊的進出路徑
  • 大藍圖

2. 電腦上的多節點設定環境

  • 在您的機器上設定多節點虛擬機器叢集
  • 本地和遠端子網域
  • Layer 3 路由語義
  • 在節點中配置 Layer 3 路由
  • 理解 L3 路由表語義

3. 子網域和 IP 位址

  • 理解子網域
  • 區分本地端和遠端子網域
  • IP 位址分配方案 / 原則
  • 資料傳送
  • 理解 MAC 位址及其用途
  • 子網域的網路 ID、廣播地址和基數( Cardinality )的計算
  • 理解 L3路由器和子網域之間的關係
  • 理解點對點連結
  • 封包拒絕 / 接受的 MAC 層和 IP 規則
  • 廣播位址

4. Layer 2 網路概念

  • L3 路由器作為子網域的閘道器
  • 每一層的協議識別符號欄位
  • 乙太網報表頭格式
  • 乙太網 hdr 如何使 L2 路由成為可能
  • 位址解析協議 ( ARP )
  • ARP 對映表的分類和使用
  • 一步一步的 ARP 協議執行
  • 關於 ARP 的賦值
  • Layer2 Switch -它是如何工作的
  • MAC 位址表格
  • L2 Switch 功能的分步描述
  • 分層往復移動( Layer Thrashing )問題

5. Layer 3 網路概念

  • Layer 2與 Layer3 路由的關係
  • 解釋兩個層之間的相依關係
  • 配置 Layer 3 路由表
  • Layer 3路由的語義
  • Layer 3 路由查詢
  • 最長字首匹配的概念
  • 你應該知道的 IP 頭部欄位
  • 網路層操作
  • L3 路由選擇的分步描述
  • Loopback 介面-用途和配置 Loopback 介面
  • Layer 3 路由安裝、路由和轉發流量的練習
  • 廣播和碰撞網域( Collision Domain )

6. 三層路由表動態構建

  • 階段 1 – 比鄰資料庫管理
  • 階段 2 – 建立鏈接狀態資料庫
  • 階段 3 – 最短路徑優先演算法
  • 最終路由表的計算

7. 虛擬區域 (VLANs)

  • LANs 和為什麼它們今天是過時的
  • VLANs – 用途
  • 802.1Q VLAN hdr
  • Vlan 標籤規則
  • 基於 Vlan 的 L2 交換機
  • 基於 Vlan 的 L2 路由
  • 其他 Vlan 的好處

8. 路由器到 Vlan 轉發

  • SVI 介面的傳送方式
  • SVI – VLAN 繫結
  • 路由器到 Vlan 轉發-一步一步

9. Inter Vlan Routing

  • 兩步流程
    • 從 Src 主機到閘道器 L3 路由器
    • 從閘道器 L3 路由器到 Dst 主機
    • 練習和更多的範例

10. 路故障診斷工具

  • Ping 的工作原理 -ICMP 協議描述
  • 網路應用程式故障排除實用程式-ping,wireshark,tcpdump
  • 捕獲資料封包並使用 tcpdump 檢查其內容

11. 傳輸層

  • 層的目標
  • 第2層、第3層和第4層的對比
  • TCP Vs UDP
  • Headers stacking 的概念
  • port numbers 的概念
  • Linux 系統呼叫介面

12. Socket 程式設計概念

  • Socket 程式設計
  • 選擇系統呼叫
  • 接受系統呼叫
  • Multiplexing 的概念
  • 伺服器狀態機

13. 應用層

  • 實現 Sockets 的不同方法
  • 在傳輸層的頂部
  • 在網路層之上
  • 在資料連結層之上
  • 從零開始設計 HTTP 伺服器
  • 網頁伺服器的實現
  • 客制化應用程式的 sockets

14. 網域名稱系統

  • 什麼是 DNS?
  • DNS 架構與設計
  • FQDN
  • 託管一個網站
  • DNS 解析器
  • DNS 查詢型別
  • 迭代查詢
  • 遞迴 DNS 查詢
  • 反向 DNS 查詢
  • 摘要

15. IP-in-IP 封裝/Tunneling

  • 什麼是 IP-in-IP 封裝?
  • 為什麼我們需要 IP-in-IP 封裝?
  • 封裝的資料包如何在網路中路由( routing )?
  • 使用  IP-in-IP 封裝的兩個場景

16. TLVs 的概念

  • 什麼是 TLVs
  • 為什麼我們需要 TLVs
  • 編寫 TLV 解碼器
  • TLVs 在網路通訊中的優勢
  • STREAMS-資料結構
  • 使用 STREAMS 進行 TLV (反)序列化

**AUDIT TRIAL**

  • 2 Aug 2020 – Added Section on Dynamic Construction of L3 Routing Table
  • 14 June 2019 – Added Section on TCP
  • 06 Oct 2018 – Added Section 6 On VLANs
  • 07 Sept 2018 – Added Section 11, Domain Name System
  • 13 July 2018 – Added Section 12, IP-in-IP Encapsulation/Tunneling
  • 17 June 2018 – Added Section 10, The Application Layer and HTTP Webserver Design & Implementation
  • 10 June 2018 – Added Section 15, The concept of TLVs

目標受眾

  • 大學學生,研究所學生
  • 希望建立一個網路領域職涯的人
  • 程式愛好者,喜歡構建專案,並在實踐中看到東西
  • 想從人群中脫穎而出的人

講師簡介

Abhishek Sagar 在 Juniper 擔任網路通訊協定開發者 ( 更多講師主講課程介紹 )

你好,我是孟買理工學院的畢業生,目前在網路跨國公司從事網路通訊協定開發。

我有6年以上的業界經驗,從事網路程式設計和開發已超過8年的經驗。

我曾經在的跨國網路公司- Brocade 通訊公司工作,現在在 Juniper Networks 工作。

我精通 Linux 開發環境,我藉此機會通過 Udemy 在 Linux 網路開發領域培訓世界各地的人。 我熱愛並鼓勵知識共享。

Shiwani Nigam 數位行銷主管

嗨,我是市場行銷學博士 Shivani Nigam。 我擅長研究消費者在網上購買產品時的行為。 我負責在這個平台上銷售線上內容(Udemy 課程)。

我還確保課程由技術指導員以完美的音訊 / 視訊質量授課,並確保學生的疑問和問題並由技術指導員優先處理。

Ekta Ekta 設備經理

嗨,我是 Ekta,Csepracticals 的設施經理。 我負責組織基礎設施的維護和保養,確保它們符合法律要求以及健康和安全標準。

我通過完成日常檢查並進行主動和被動維護來確保設施每天正常運行。

英文字幕:有

  • 想要了解如何將英文字幕自動翻譯成中文? 請參考這篇 How-To

  • 點選這個✨優惠連結✨ 獲取優惠( NT370 起 24 小時⚡️特價中 )| Udemy 永久擁有課程 ( 在電腦瀏覽器登入,點選“優惠連結”後再回想要的課程介紹中點選“報名參加課程”即可取得 )
  • Udemy 現在越來越多課程有中文字幕,請參考 Soft & Share 中文線上課程
  • 手機上點選優惠連結看到的價格比電腦上看到的貴
  • $代表當地貨幣, 如在台灣為 NT
  • 點選”報名參加課程”有可能因瀏覽器 cookies 轉久一點或回報錯誤而無法連上,請稍等刷新或重新點選就會出現

報名參加課程

Sponsored by Udemy


也許你會有興趣

不受 FB 演算法影響,歡迎透過 e-mail 訂閱網站更新


發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料

Powered by WordPress.com.

Up ↑

%d