B部分課程 – C開發C中的網絡協議(零)

B部分 – 開發C網絡協議(從頭開始)

網絡核心開發人員,Linux,系統編程,操作系統,C/C ++項目

首先,恭喜您完成了本課程的一部分,在該課程中,我們開發了協議相鄰管理功能。我希望您喜歡它,並擁有出色的學習經歷。現在,您可能會對開發基於國家的州機器感到有信心。當我們輸入項目第2階段 – 鏈接狀態數據庫管理時,這裡開始了一個新的挑戰。

每個路由器將使用其接口中存在的相鄰對象來構建其本地鏈接狀態數據庫。但是,挑戰在於,每個路由器都需要與執行ISIS協議的拓撲中的所有其他路由器共享自己的鏈接狀態數據庫(LSDB)本地副本。這確保了每個路由器對IGP拓撲的連貫和共同的看法。這是項目的最終目標。

該完整的一系列課程分為3部分 – A部分,B部分和C部分。部分A和B可以使用,C部分目前從2021年12月21日開始開發。我們開始實施所有所需的理論和概念他們。我們將在本課程的這一部分中實現的三個主要概念是:

1.包裝洪水概念
2.鏈接狀態數據庫的構建
3.鏈接狀態數據庫的同步

我們將繼續使用計時器,因為第2階段還在很大程度上取決於計時器來實現其目標。除了計時器外,我們還將通過該項目向您展示異步編程的世界。通過更多這樣的項目來挑戰自己,您將意識到自己已經成為一名高素質的開發人員。

項目目標

該項目的目的是為您提供典型網絡協議的末尾實現經驗。在此案例研究中,我們選擇了一個路由協議為例,但是典型網絡協議實施的高級物流或多或少是相同的。例如,典型的網絡協議應:

  • 可通過命令行接口(CLI)配置
  • 通過顯示器顯示內部狀態和結果
  • 響應通用配置的更改(例如鍊接停用,IP地址在接口中的更改等)
  • 計算結果並將其安裝到表中(路由信息庫,MAC表,硬件表等)
  • 響應拓撲變化(鏈接故障,設備故障等)
  • 淘汰的數據結構,如果
  • 生成或定期處理或處理協議軟件包
  • 在現有的工作協議代碼中添加新功能(這是您作為軟件工程師的工作)

    由於該項目很大(我們期望約10,000行代碼),因此您還將有機會了解如何:

  • 在標題和源文件中組織代碼

  • 對代碼庫進行模塊化:維護不同原始文件中不同資源的代碼
  • 測試新功能,並檢查它是否沒有破壞現有資源
  • 通過版本控制系統(在這種情況下為GitHub)保持代碼提交
  • 糾正錯誤並使用各種調試技術(GDB,Valgrind等)

    不用說,除非您從事相當大的項目,否則您無法鍛煉上述幾點。

您將學到什麼

參加本課程時,您將:

  • 了解如何在網絡設備上實現網絡協議
  • 學習軟件包處理以及如何通過軟件包處理更新協議數據結構
  • 獲取清除率和代碼解決問題的技能以解決問題
  • 學習如何越來越多地實現新功能
  • 開發實現複雜協議狀態機和網絡算法的能力
  • 在典型網絡協議的結尾實現末端的經驗
Scroll to Top