【网络】网络基础
🥁作者: 華丞臧.
📕????專欄:【網絡】
各位讀者老爺如果覺得博主寫的不錯,請諸位多多支持(點贊+收藏+關注)。如果有錯誤的地方,歡迎在評論區指出。
推薦一款刷題網站 👉 LeetCode刷題網站
文章目錄
- 一、計算機網絡背景
- 1.1 網絡發展
- 1.2 協議
- 二、網絡協議初識
- 2.1 協議分層
- 2.1 OSI七層模型
- 2.2 TCP/IP五層(或四層)模型
- 三、網絡傳輸基本流程
- 3.1 網絡和操作系統
- 3.2 網絡傳輸流程圖
- 3.3 數據包封裝和分用
- 四、網絡中的地址管理
- 4.1 認識IP地址
- 4.2 認識MAC地址
一、計算機網絡背景
1.1 網絡發展
獨立模式:在發展之初,計算機之間相互獨立。
網絡互聯:多臺計算機連接連接在一起,完成數據共享。
局域網LAN:計算機數量更多了,通過交換機和路由器連接在一起,局域網內部沒有路由器。
廣域網WAN:將遠隔千里的計算機都連在一起,局域網通過路由器連接形成廣域網。
所謂 “局域網” 和 “廣域網” 只是一個相對的概念. 比如, 我們有 “天朝特色” 的廣域網, 也可以看做一個比較大的局域網。
重新看待計算機結構,以理解計算機通過網絡互聯的可能性:根據馮諾依曼體系結構,一臺計算機由輸入輸出設備、存儲器和中央處理器構成,如下圖:
那么上圖中計算機上的硬件如何進行數據交互的呢?毫無疑問設備和設備之間一定要有線連接起來,只不過這些線比較短并且藏在計算機內部通常用戶是看不見的;那么計算機體系結構本質上也可以看做一個小型網絡。其次我們也可以使用多主機互相連通,構建宏觀的馮諾依曼體系結構,而多主機連接本質上也是通過“線”連接起來的–我們稱之為網線(也有用無限WAN連接)。
跨主機與主機內的小型網絡不同的是跨主機連接線變長了,線變長了相應地數據傳輸的可靠性、效率降低了,如何尋找對方的難度上升了,為了保證長距離傳輸的可靠性、效率,各種新的設備誕生了,如:路由器、交換機。
1.2 協議
計算機之間的傳輸媒介是光信號和電信號. 通過 “頻率” 和 “強弱” 來表示 0 和 1 這樣的信息,要想傳遞各種不同的信息,計算機之間進行通信需要約定好雙方的數據格式。在計算機當中把這種約定稱為協議,協議是一種約定。
思考:只要通信的兩臺主機約定好協議就可以了嗎?
并不是,計算機的生產廠商有很多如聯想、華碩、小米、華為等,計算機操作系統也有很多如windows、蘋果、Linux等,計算機網絡硬件設備同樣有很多,要讓這些不同的品牌的計算機實現相互順暢的通信,就必須制定一個共同的標準大家都來遵守,這就是網絡協議。
二、網絡協議初識
2.1 協議分層
軟件是可以分層的:在學習編程之初,比如學習C語言時,起初我們編寫代碼都是放在一個.c文件中;隨著學習的深入,我們知道可以將函數的聲明和定義分離,并且在主函數文件中包含聲明文件即可使用自己編寫好的函數,這就是在軟件上的分層:main函數是一層,聲明定義是第二層。
為什么要分層?
層狀結構下的網絡協議,我們認為:同層協議都可以認為自己在和對方直接通行,忽略底層細節;因此同層之間,一定都要有自己的協議。
2.1 OSI七層模型
- OSI(Open System Interconnection,開放系統互連)七層網絡模型稱為開放式系統互聯參考模型,是一個邏輯上的定義和規范;
- 把網絡從邏輯上分為了7層. 每一層都有相關、相對應的物理設備,比如路由器,交換機;
- OSI 七層模型是一種框架性的設計方法,其最主要的功能使就是幫助不同類型的主機實現數據傳輸;
- 它的最大優點是將服務、接口和協議這三個概念明確地區分開來,概念清楚,理論也比較完整. 通過七
個層次化的結構模型使不同的系統不同的網絡之間實現可靠的通訊; - 但是, 它既復雜又不實用。
| 7 | 應用層 | 針對特定應用的協議 |
| 6 | 表示層 | 設備固有數據格式和網絡標準數據格式的轉換 |
| 5 | 會話層 | 通信管理,負者建立和斷開通信連接(數據流動的邏輯通路)。管理傳輸層以下的分層 |
| 4 | 傳輸層 | 管理兩個節點之間的數據傳輸。負者可靠傳輸(確保三個月后又被可靠地傳送到目標地址) |
| 3 | 網絡層 | 地址管理與路由選擇 |
| 2 | 數據鏈路層 | 互連設備之間傳送和識別數據幀 |
| 1 | 物理層 | 以“0”、“1”代表電壓的高低。燈光的閃滅。界定連接器和網線的規格。 |
2.2 TCP/IP五層(或四層)模型
TCP/IP是一組協議的代名詞,它還包括許多協議,組成了TCP/IP協議簇.。
TCP/IP通訊協議采用了5層的層級結構,每一層都呼叫它的下一層所提供的網絡來完成自己的需求。
- 物理層: 負責光/電信號的傳遞方式. 比如現在以太網通用的網線(雙絞 線)、早期以太網采用的的同軸電纜
(現在主要用于有線電視)、光纖, 現在的wifi無線網使用電磁波等都屬于物理層的概念。物理層的能力決
定了最大傳輸速率、傳輸距離、抗干擾性等. 集線器(Hub)工作在物理層. - 數據鏈路層: 負責設備之間的數據幀的傳送和識別. 例如網卡設備的驅動、幀同步(就是說從網線上檢測
到什么信號算作新幀的開始)、沖突檢測(如果檢測到沖突就自動重發)、數據差錯校驗等工作. 有以太
網、令牌環網, 無線LAN等標準. 交換機(Switch)工作在數據鏈路層. - 網絡層: 負責地址管理和路由選擇. 例如在IP協議中, 通過IP地址來標識一臺主機, 并通過路由表的方式規
劃出兩臺主機之間的數據傳輸的線路(路由). 路由器(Router)工作在網路層. - 傳輸層: 負責兩臺主機之間的數據傳輸. 如傳輸控制協議 (TCP), 能夠確保數據可靠的從源主機發送到目標
主機. - 應用層: 負責應用程序間溝通,如簡單電子郵件傳輸(SMTP)、文件傳輸協議(FTP)、網絡遠程訪問
協議(Telnet)等. 我們的網絡編程主要就是針對應用層.
物理層考慮的比較少,因此很多時候也可以稱為 TCP/IP四層模型,一般而言:
- 對于一臺主機, 它的操作系統內核實現了從傳輸層到物理層的內容;
- 對于一臺路由器, 它實現了從網絡層到物理層;
- 對于一臺交換機, 它實現了從數據鏈路層到物理層;
- 對于集線器, 它只實現了物理層;
三、網絡傳輸基本流程
3.1 網絡和操作系統
體系結構直接決定:數據包在主機內進行流動的時候,一定要進行自頂向下或者自底向上進行流動的。
計算機發數據需要底層硬件轉發,用戶層數據無法直接抵達硬件必須貫穿操作系統,而網絡協議棧隸屬于操作系統,因此必須自頂向下交付給硬件;發數據一般是用戶發給用戶,底層硬件沒辦法直接將數據發給用戶,必須貫穿操作系統和協議棧才能將數據交給用戶。,因此需要自底向上。
3.2 網絡傳輸流程圖
- 重談協議:計算機視角看待協議,體現在代碼邏輯上,計算機通過協議完成對數據包的轉發;體現在數據上,計算機為了維護協議在傳輸的數據上一定新增其他的協議數據。
- 報頭:每一層在要交付給下一層的數據上添加上本層的協議數據拼接在原始數據的開頭,其中添加的協議數據稱為報頭。
如果兩臺局域網處于同一個局域網,這兩臺主機是可以直接通信的(以太網,最常見的一種局域網標準)。站在系統的角度,以太網就是臨界資源。
局域網通信的原理:
- 碰撞域:在一局域網中,任何一臺主機,在任何時候,都可以隨時發消息。
在LInux上查看機器的MAC地址:
跨網段的主機的文件傳輸. 數據從一臺計算機到另一臺計算機傳輸過程中要經過一個或多個路由器。
在上圖的過程中,MAC地址用于在局域網中標定主機的唯一性;而IP地址用來在廣域網(公網)標定主機的唯一性。在遠距離傳輸中,數據傳輸會經過多個局域網,在數據通過不同的局域網時MAC地址是在不斷變化的,因為數據需要通過不同路由器傳輸,路由器用于連接兩個不同的局域網,而數據中的IP地址是不變的。從上圖可以得出結論,IP網絡屏蔽了底層網絡的差異,所有的IP層向上的協議發送和接收主機看到的數據是一模一樣的。
例子:假如張三在長沙讀大學,放假了張三要回家,所以張三買了去武漢的高鐵票,那么張三的起點就是長沙,目的地就是武漢;在上了高鐵之后,高鐵會經過一個一個的站,直到到了武漢張三才會下高鐵。那么在這個過程中,源IP地址就是起點長沙,目的IP地址就是武漢,源MAC地址是高鐵在中途停留的某個高鐵站,而目的MAC地址就是高鐵下一個將要停留的高鐵站。
3.3 數據包封裝和分用
- 不同的協議層對數據包有不同的稱謂,在傳輸層叫做段(segment),在網絡層叫做數據報 (datagram),在鏈路層叫做幀(frame)。
- 應用層數據通過協議棧發到網絡上時,每層協議都要加上一個數據首部(header),稱為封裝(Encapsulation).。
- 首部信息中包含了一些類似于首部有多長, 載荷(payload)有多長, 上層協議是什么等信息。
- 數據封裝成幀后發到傳輸介質上,到達目的主機后每層協議再剝掉相應的首部, 根據首部中的 “上層協議字段” 將數據交給對應的上層協議處理。
下圖為數據封裝的過程:
- 有效載荷:本層需要傳遞的數據,注意是沒有添加本層報頭的數據稱為有效載荷。
下圖為數據分用的過程:
- 首先需要注意,每一層都有多種協議,因此數據包在添加報頭的時候,也要考慮未來解包的時候將自己的有效載荷交付給上一層的哪一個協議。
- 將有效載荷交付給上層的協議稱為有效載荷的分用過程。
通過數據封裝和分用的過程可以得出以下兩個結論:
四、網絡中的地址管理
4.1 認識IP地址
IP協議有兩個版本, IPv4和IPv6。目前一般的使用的都是IPV4。
- IP地址是在IP協議中, 用來標識網絡中不同主機的地址;
- 對于IPv4來說, IP地址是一個4字節, 32位的整數;
- 我們通常也使用 “點分十進制” 的字符串表示IP地址, 例如 192.168.0.1 ; 用點分割的每一個數字表示一個字節, 范圍是 0 - 255。
4.2 認識MAC地址
- MAC地址用來識別數據鏈路層中相連的節點;
- 長度為48位, 及6個字節. 一般用16進制數字加上冒號的形式來表示(例如: 08:00:27:03:fb:19);
- 在網卡出廠時就確定了, 不能修改. mac地址通常是唯一的(虛擬機中的mac地址不是真實的mac地址, 可能會沖突; 也有些網卡支持用戶配置mac地址)。
總結
- 上一篇: React--简单的抽卡模拟器
- 下一篇: OpenMV测距