知道的越多,不知道的越多。
學習計算機網絡比想象中難,晦澀難懂,概念模糊不清,理論知識衆多,沒有實際操作,大多還是不清楚,我想任何的學習都要建立一個框架,任何的學習都要從好奇開始,從發問開始,不管問的問題多幼稚那都是知識系統形成的開始。
a. 網絡是什麼?由什麼組成?
網絡指“三網”,即電信網絡、有線電視網路、計算機網絡
簡單的說,網絡就是一羣通過一定形式連接起來的計算機
網絡由若干結點(node)和連接這些結點的鏈路(link)組成
b. 因特網又是什麼?
因特網是“網絡的網絡”
因特網是一個世界範圍的計算機網絡,即它是一個互聯了遍及全世界的數以億計的計算設備的網絡。
連接在因特網上的計算機都被稱爲主機
其存在的意義是讓大家可以互相通信,這也是計算機網絡所解決的根本問題。
c. 如何通信?
想象人是如何交流的呢?我們通過語言,國際上我們使用英語,在中國我們使用普通話,你可以發現交流的前提是要有一個標準,網絡中的“交流”也是一樣的,它們主要通過信息交換進行通信,主要通過網絡協議實現通信(具體通信我們後續再講)。
而協議也就是計算機網絡學習的主要內容
d. 網絡協議是什麼呢?
協議:是對等實體之間交換數據或通信時所必須的遵守的規則或標準的集合。
網絡協議指網絡中的數據交換而建立的規則、標準或約定
也就是說網絡協議規定了通信雙方具體的通信規則。
協議的三個要素:語法、語義、同步。
目前TCP/IP協議已經成爲Internet中的“通用語言”。
e.具體有哪些協議,用來幹什麼的?
f.計算機網絡有怎樣的層次,分工是什麼呢
……
現在我們即將走進計算機網絡大門,當然你肯定還會有很多很多問題,要做的就是推開門進去慢慢尋找答案。
首先,計算機網絡是一個複雜的系統,就像人的社會一樣,複雜但有序,有法律法規,有擇業操守,有各個服務部門等等一系列要素構建了一步步完善的社會。計算機網絡是爲了解決通信的問題,它同樣有分層,各層次有各自的職責。
爲什麼要分層呢?
因爲網絡異質性問題的解決,各自廠家生產的計算機無法直接通信,而網絡體系結構就是是這些用不同媒介連接起來的不同設備和網絡系統在不同的應用環境下實現互操作性。
解決異質性問題採用的是分層方法。即把複雜龐大的網絡互聯問題劃分爲若干個較小的、單一的問題,然後在不同層次上解決 。
怎麼分層呢?
因特網協議棧(TCP/IP)分爲五層,除此外,國際標準化組織(ISO)在1978年提出了“開放系統互聯參考模型”,即著名的OSI/RM模型(Open System Interconnection/Reference Model)。它將計算機網絡體系結構的通信協議劃分爲七層,自下而上依次爲:物理層(Physics Layer)、數據鏈路層(Data Link Layer)、網絡層(Network Layer)、傳輸層(Transport Layer)、會話層(Session Layer)、表示層(Presentation Layer)、應用層(Application Layer)。其中第四層完成數據傳送服務,上面三層面向用戶。
它們的關係如下圖:
下面以五層因特網協議棧淺述分工:
OSI體系結構 | TCP/IP體系結構 | 各層次作用 | 協議數據單元(PDU) | 主要協議 |
---|---|---|---|---|
應用層 | ||||
表示層 | 應用層 | 負責各種網絡應用、進程與進程之間的邏輯通信 | 報文 | HTTP FTP SMTP DNS Telent |
會話層 | ||||
傳輸層 | 傳輸層 | 負責端到端數據的邏輯通信 | 報文段 | TCP UDP |
網絡層 | 網絡層 | 將運輸層報文段從源主機傳送到目的主機 | 數據報 | IP ICMP |
數據鏈路層 | 數據鏈路層 | 將網絡層數據報從一個結點傳送到下一個結點 | 幀 | ARP |
端系統:主機
應用層 進程 :一臺主機上運行的程序
鏈路層 結點:將運行鏈路層協議的任何設備均稱爲結點,包括主機、路由器、交換機等
例:
你想要訪問CSDN官網 https://www.csdn.net/
簡單講就是 先向web瀏覽器輸入www.csdn.net的網頁地址URL,web瀏覽器通過生成一個TCP套接字開始該進程(應用層),套接字向www.csdn.net 發送HTTP請求,TCP通過三次握手建立連接,生成HTTP端口號的TCP SYN報文段(傳輸層),主機通過DNS協議從主機名和端口號獲得IP地址(網絡層),主機通過ARP協議從IP地址獲得網關路由器的MAC地址(鏈路層),最後你的web瀏覽器從TCP套接字中得到HTTP GET 報文,生成HTTP響應報文,你的瀏覽器讀取HTTP響應,從HTTP中抽取web網頁的HTML,最後顯示網頁。
知識點
TCP/IP 協議
TCP三次握手
TCP四次揮手
TCP三次握手四次揮手
注:
seq:”sequance”序列號;ack:”acknowledge”確認號;SYN:”synchronize”請求同步標誌;ACK:”acknowledge”確認標誌”;FIN:”Finally”結束標誌。
TCP連接建立過程:首先Client端發送連接請求報文,Server段接受連接後回覆ACK報文,併爲這次連接分配資源。Client端接收到ACK報文後也向Server段發生ACK報文,並分配資源,這樣TCP連接就建立了。
TCP連接斷開過程:假設Client端發起中斷連接請求,也就是發送FIN報文。Server端接到FIN報文後,意思是說”我Client端沒有數據要發給你了”,但是如果你還有數據沒有發送完成,則不必急着關閉Socket,可以繼續發送數據。所以你先發送ACK,”告訴Client端,你的請求我收到了,但是我還沒準備好,請繼續你等我的消息”。這個時候Client端就進入FIN_WAIT狀態,繼續等待Server端的FIN報文。當Server端確定數據已發送完成,則向Client端發送FIN報文,”告訴Client端,好了,我這邊數據發完了,準備好關閉連接了”。Client端收到FIN報文後,”就知道可以關閉連接了,但是他還是不相信網絡,怕Server端不知道要關閉,所以發送ACK後進入TIME_WAIT狀態,如果Server端沒有收到ACK則可以重傳。“,Server端收到ACK後,”就知道可以斷開連接了”。Client端等待了2MSL後依然沒有收到回覆,則證明Server端已正常關閉,那好,我Client端也可以關閉連接了。Ok,TCP連接就這樣關閉了!
轉發與路由選擇
網絡層的作用從表面上看是將一臺發送主機移動到一臺接收主機,主要涉及轉發和路由選擇兩大功能
路由器三層協議:網絡層、鏈路層、物理層
路由器的作用是將數據報(網絡層數據單元)從入鏈路轉發到出鏈路
轉發涉及分組在單一的路由器中從一條入鏈路到一條出鏈路的傳送
轉發指將分組從一個輸入鏈路接口轉移到適當的輸出鏈路接口的路由器本地動作。
路由選擇涉及一個網絡的所有路由器,它們經路由選擇協議共同交互,已決定分組從源目的地結點所採用的路徑。
路由選擇是指網絡範圍的過程,以決定分組從源目的地地所採取的端到端路徑
以爬山爲例,你想要從山底爬到山頂看日落,東南西北門等入口很多,每條路有很多岔道,每個岔道都有許多景點,轉發就像通過一個景點的過程:你進入景點入口,沿路觀賞,然後決定繼續向前直徑上山,還是向右看個瀑布離開該景點,還是向左繞道去另一個景點;
路由選擇就像是規劃從山底到達山頂的過程:根據時間、觀看的景點等情況你查看地圖選擇一條從山底到達山頂的路徑,其中每條路徑都有一系列景點連接的路段組成