前文回顧:
自學網路協議(一):http請求與響應——get和post真的不一樣嗎?
自學網路協議(二):osi第一層——物理層physical layer
自學網路協議(三):osi第二層——機器通訊那點事
自學網路協議(四):osi第三層——網路層的作用(上)
前面說osi第3層的作用是「互連網路」。
我們也開始了ip的學習,ip —— internet protocol,即「網際網路協議」,它毫無疑問是網路協議中主要的協議簇。
而ip位址,它實際上分為兩部分 —— 網路位址 & 機器位址。
實際上,我們在網際網路上定位乙個主機,就類似於去乙個小區找人:首先通過網路位址找到這個人是哪個小區的,再用主機位址(機器位址)從小區中找到這個人。
那麼,我們怎麼知道ip位址中的哪個部分代表什麼呢?
子網掩碼算是乙個「額外的資訊」了。它和ip位址是密不可分的。因為正是子網掩碼指明了ip位址的哪一部分是網路位址,哪一部分是主機位址。
還記得ifconfig / ipconfig
嗎?它不僅包含了mac位址,還有ip位址和子網掩碼:enp0s3(乙太網介面)、inet(ip位址)、netmask(子網掩碼)
我們看到,子網掩碼和ipv4的ip位址格式一致——4個位元組,用點分十進位制表示,是因為ipv6格式的位址不需要子網掩碼。
子網掩碼中為1的二進位制位代表ip位址中的網路部分。255.255.0.0 -> 11111111.11111111.00000000.00000000因為二進位制只由0、1組成,因此:子網掩碼中為0的二進位制位代表ip位址的主機部分。
192.168.0.1 -> 11000000.10101000.00000000.00000001
如上,二進位制中黃色部分代表ip的網路位址,其餘代表主機位址。
然而,上述只是非常簡單的乙個例子。眾所周知,分割經常會發生在乙個位元組的中間:
255.255.240.0 -> 11111111.11111111.1111 0000.00000000
192.168.0.1 -> 11000000.10101000.0000 0000.00000000
這次分割又變成了這樣!
其實,子網掩碼中位元組可以取的值是特定的。這是由於子網掩碼中0和1的排列造成的。
二進位制位的連續性
事實上,在二進位制子網掩碼中,為1的位必須在左邊,為0的位必須在右邊,不能混用0和1所以… 子網掩碼這樣寫:
11111111.11100011.00000000.00000000
是錯的!
!也就是說,子網掩碼的4個位元組中的每乙個位元組能取的值將始終是以下值:
00000000
->
010000000
->
12811000000
->
19211100000
->
22411110000
->
24011111000
->
24811111100
->
25211111110
->
25411111111
->
255
我們知道,乙個網路中,往往不只有一台主機。就像你乙個小區裡面,雖然我mxc使用者可以通過查詢我的網路位址和主機位址來確定,但我也很想知道,這個小區可以容納多少住戶,這些住戶的可用位址又是在哪個範圍裡的。
ip位址範圍的計算—— 計算第乙個和最後乙個位址
我們還是將目光放向了192.168.0.1
和255.255.240.0
相關聯。
要知道,屬於同一網路的所有主機,他們的網路位址的所有位都是相同的!
對於這個例子,顯然,他們的網路位址都等於11000000.10101000.0000
然而,其中主機位址是可以變化的
在這個網路中,主機位址可以取很多值 —— 這取決於我們將主機位址的某些為設定為0還是1。
總的來說,他們(這些ip位址)將是:
如此,我們通過改變ip位址中主機位址的位,就找到了此網路中所有可被主機所用的ip位址。
網路的第乙個ip位址是主機位址所有位皆為0的位址;那麼問題又來了,此網路中有多少個真正可用ip位址?網路的最後乙個ip位址是主機位址所有位皆為1的位址;
若主機位址有兩位,那就有2的2次方個可能的位址(00、01、10、11)…
以此類推,要找到網路中的位址數量,只需知道主機位址的二進位制位數即可。
而ip位址中的主機位址是由子網掩碼定義的,也就是說,網路中的可用主機數取決於子網掩碼!
那麼,我們完全可以定義:網路中可用的ip數=2的「子網掩碼中0的個數」次方個。
網路位址和廣播位址當我們向某網路的廣播位址傳送訊息時,此網路上的所有主機都將收到此訊息。
因此,假設乙個網路有 16 個可用的 ip 位址,網路中的主機卻只能使用 14 個位址,因為第乙個和最後乙個將保留給該網路的位址和廣播位址。這條規則對於任何網路都是如此,總是有 2 個不能為主機所用的位址。
上乙個例子,就是相關聯的 ip 位址192.168.0.1
和子網掩碼255.255.240.0
的示例中,網路中的主機可以使用的位址數是 4096(2的12次方) - 2 = 4094 個,因此理論上此網路可以容納 4094 臺主機。
網路通訊原理 五層協議
1.定義 任意兩台計算機正常通訊,需要通過一套統一的標準協議規範,這一系列協議就是 網際網路協議 網際網路協議的功能 定義計算機如何接入internet,以及接入internet的計算機通訊的標準。2.tcp ip五層協議 網際網路協議分為好多種,下面通過tcp ip五層協議為例舉例說明。a 物理層...
面試題系列(五) 網路協議
udp 是使用者資料報協議 主要用在實時性要求高以及對質量相對較弱的地方,但面對現在高質量的線路不是容易丟包除非是一些擁塞條件下,如流 tcp 是傳輸控制協議 是面連線的,那麼執行環境必然要求其可靠性不可丟包有良好的擁塞控制機制如http ftp telnet 等 三次握手 第一次握手 建立連線時,...
29 網路程式設計之TCP通訊協議
tcp通訊協議特點 1 tcp 協議是基於io流進行資料的傳輸,是 面向鏈結的。2 tcp 進行資料傳輸的時候,資料沒有大小限制的。3 面向鏈結,通過三次握手的機制,保證資料的完整性,是乙個可靠的協議。4 tcp 面向連線,所以速度稍微慢一點。5 tcp 是區分客戶端和服務端的。三次握手機制 保證網...