這個作業屬於哪個課程 | 2024-2025-1-計算機基礎與程式設計) |
---|---|
這個作業要求在哪裡 | https://www.cnblogs.com/rocedu/p/9577842.html#WEEK11 |
這個作業的目標 | 網路拓撲、雲端計算、網路安全 、Web、HTML,CSS,Javascript、XML |
作業正文 | 本部落格連結 https://www.cnblogs.com/118qa/p/18593472 |
教材學習內容總結
計算機網路知識點總結:
網路分層模型:
OSI 七層模型:從下到上分別為物理層、資料鏈路層、網路層、傳輸層、會話層、表示層和應用層。各層功能明確,物理層負責處理物理介質上的訊號傳輸;資料鏈路層進行資料幀的封裝與解封裝、差錯檢測等;網路層實現資料包的路由選擇與轉發;傳輸層提供端到端的可靠或不可靠傳輸服務,如 TCP(可靠傳輸)和 UDP(不可靠傳輸);會話層建立、維護和管理會話;表示層處理資料的表示、加密和解密等;應用層是使用者直接接觸的層面,包含各種網路應用程式協議,如 HTTP、FTP 等。
TCP/IP 四層模型:應用層、傳輸層、網路層和網路介面層。它是實際網際網路中廣泛應用的模型,與 OSI 模型有一定對應關係,網路介面層涵蓋了物理層和資料鏈路層的部分功能,應用層整合了 OSI 模型中會話層、表示層和應用層的功能。
網路裝置:
路由器:工作在網路層,根據 IP 地址進行路由選擇,將資料包轉發到目標網路,是連線不同網路的關鍵裝置,具有多個網路介面,能夠構建複雜的網路拓撲結構。
交換機:主要工作在資料鏈路層,透過學習裝置的 MAC 地址,實現資料幀在區域網內的快速轉發,可有效隔離衝突域,提高網路效能,分為二層交換機和多層交換機(如三層交換機可實現部分網路層功能)。
集線器:物理層裝置,簡單地將多個裝置連線在一起,所有埠共享同一頻寬,採用廣播方式傳輸資料,容易產生衝突,已逐漸被交換機取代。
網路協議:
IP 協議:網路層的核心協議,為每個網路裝置分配唯一的 IP 地址,負責資料包的定址和路由,有 IPv4 和 IPv6 兩個版本,IPv6 旨在解決 IPv4 地址枯竭等問題,具有更大的地址空間和更好的安全性等特性。
TCP 協議:提供可靠的、面向連線的傳輸服務。透過三次握手建立連線,保證資料的有序傳輸和可靠交付,採用流量控制和擁塞控制機制,以適應網路的動態變化,適用於對資料準確性要求較高的應用場景,如檔案傳輸、電子郵件等。
UDP 協議:無連線、不可靠的傳輸協議,傳輸效率高,資料傳輸前無需建立連線,適用於對實時性要求較高但對資料準確性要求相對較低的應用,如影片流、音訊流等多媒體傳輸以及一些簡單的查詢響應應用。
網路地址與子網劃分:
IP 地址分類:IPv4 地址分為 A、B、C、D、E 五類,A 類地址範圍是 1.0.0.0 - 126.255.255.255,B 類地址範圍是 128.0.0.0 - 191.255.255.255,C 類地址範圍是 192.0.0.0 - 223.255.255.255,D 類地址用於組播,E 類地址保留用於研究等特殊用途。
子網劃分:透過將主機位部分劃分為子網位,可將一個大的網路劃分為多個小的子網,提高 IP 地址的利用率,增強網路的可管理性和安全性,子網掩碼用於確定網路位和主機位的劃分界限。
結構體相關知識:
結構體定義:結構體是一種使用者自定義的資料型別,它允許將不同型別的資料組合在一起。
結構體變數宣告與初始化:可以宣告結構體型別的變數,並對其進行初始化。
結構體成員訪問:使用點運算子(.)來訪問結構體變數的成員。
結構體陣列:可以定義結構體陣列,用於儲存多個結構體型別的資料。
結構體指標:可以定義指向結構體的指標,透過指標來訪問結構體成員。
教材學習中的問題
問題:結構體相較於陣列以及指標的優勢在哪?
AI:相較於陣列的優勢
資料型別多樣性
陣列侷限:陣列是一種同型別資料的集合。例如,在 C 語言中,一個整型陣列只能存放整型資料。如果要儲存學生的姓名(字串)、年齡(整數)和成績(浮點數)等不同型別的資料,使用陣列就非常不方便,需要為每種型別的資料分別定義陣列,這會使資料結構變得分散和複雜。
結構體優勢:結構體允許將不同型別的資料組合在一起。以學生資訊為例,可以定義一個結構體包含字元陣列(用於儲存姓名)、整型(用於儲存年齡)和浮點型(用於儲存成績)等成員。這樣就可以在一個結構體變數中統一管理多種型別的資料,使資料的組織更加緊密和合理。
語義明確性
陣列侷限:單純的陣列元素在語義表達上比較模糊。例如,一個儲存人員資訊的陣列,僅僅透過索引訪問陣列元素時,很難直觀地知道每個元素代表的具體含義是姓名、年齡還是其他資訊。
結構體優勢:結構體成員有明確的名稱,這使得程式碼的可讀性大大增強。透過訪問結構體的成員名稱,如student.name、student.age和student.grade,可以非常清晰地知道正在處理的資料是學生的姓名、年齡還是成績,提高了程式碼的可維護性。
資料靈活性
陣列侷限:陣列在大小固定方面存在侷限性。一旦定義了陣列的大小,在很多情況下(特別是靜態陣列)很難動態地改變其大小。如果預先估計的陣列大小小於實際需要的資料量,就可能導致資料溢位;而如果估計過大,又會浪費記憶體空間。
結構體優勢:結構體本身並不受這種固定大小的限制。雖然結構體陣列也有大小限制,但結構體內部成員的大小可以根據實際需求靈活定義,並且可以方便地在結構體中新增或刪除成員,而不會像陣列那樣受到連續儲存和同型別的約束。
相較於指標的優勢
資料完整性和安全性
指標侷限:指標是一種非常強大但也比較危險的工具。如果指標使用不當,很容易導致記憶體洩漏、懸空指標、野指標等問題。例如,當指標指向的記憶體已經被釋放,但程式仍然試圖透過該指標訪問資料時,就會產生不可預測的錯誤。
結構體優勢:結構體在使用過程中相對更加安全和穩定。當定義一個結構體變數時,它的記憶體空間是按照結構體成員的大小和順序自動分配的,編譯器會對結構體的操作進行一定的型別檢查,減少了因記憶體管理不當而產生錯誤的可能性。
直觀性和易用性
指標侷限:指標操作相對複雜,尤其是多級指標和指標與陣列、函式等混合使用的情況。例如,理解和正確使用指向函式指標的指標就需要對指標概念有深入的理解。對於初學者或者複雜的程式碼維護場景,指標的複雜性可能會導致程式碼難以理解和除錯。
結構體優勢:結構體的操作更加直觀。透過簡單的成員訪問運算子(如 “.” 或 “->”)就可以方便地訪問和修改結構體內部的成員資料。這種直觀的操作方式使得程式碼更容易編寫、閱讀和理解,降低了程式設計的難度。
資料組織性
指標侷限:指標主要用於儲存記憶體地址,它本身並沒有很好的資料組織能力。如果僅使用指標來管理複雜的資料,如一個包含多種型別資料的物件,需要手動進行記憶體分配和資料結構的構建,這會增加程式設計的複雜性。
結構體優勢:結構體能夠將相關的資料組合成一個邏輯單元,方便對資料進行整體的操作和傳遞。例如,在函式呼叫中,可以將一個結構體變數作為引數傳遞,函式內部可以直接訪問和處理結構體中的各個成員,而不像指標那樣需要考慮間接引用和記憶體安全等諸多問題。
基於AI的學習