本篇介紹IP地址與子網(wǎng)劃分的一些基礎(chǔ)知識(shí),在嵌入式開發(fā),使用網(wǎng)絡(luò)功能時(shí),需要了解網(wǎng)絡(luò)的一些基礎(chǔ)知識(shí)。
1 IP地址
1.1 IPv4與IPv6
對比信息 | IPv4 | IPv6 |
---|---|---|
長度 | 32位 | 128位 |
地址表示形式 | 點(diǎn)分十進(jìn)制 | 冒分十六進(jìn)制 |
表示示例 | 192.168.5.100 | 2002:0000:0000:0000:0000:0000:c0a8:0564 |
1.2 IPv4地址詳解
IPv4地址分4段,每段8位,共32位二進(jìn)制數(shù)組成。
1.2.1 地址分類
這32位又被分為網(wǎng)絡(luò)號和主機(jī)號兩部分,根據(jù)網(wǎng)絡(luò)號占用位數(shù)的不同,又可分為以下幾類:
- A類地址:網(wǎng)絡(luò)號占8位B類地址:網(wǎng)絡(luò)號占16位C類地址:網(wǎng)絡(luò)號占24位
對于十進(jìn)制與二進(jìn)制的轉(zhuǎn)換,可用利用如下對照表方便手動(dòng)換算:
1.2.2 IPv4數(shù)據(jù)報(bào)
IPv4報(bào)文結(jié)構(gòu)如下:
IPv4報(bào)文中各字段含義:
字段 | 長度 | 含義 |
---|---|---|
版本 | 4 | IP協(xié)議版本號,固定為4 |
首部長度 | 4 | IP報(bào)文頭長度,以4字節(jié)(32 bits)為單位,即報(bào)文頭實(shí)際長度 = (IHL × 4) 字節(jié);該字段最小值為5 |
服務(wù)類型 | 8 | 指示網(wǎng)絡(luò)中設(shè)備如何處理該報(bào)文,用于提供QoS (Quality of Service) |
總長度 | 16 | IPv4報(bào)文的中長度,包括報(bào)文頭和數(shù)據(jù) |
標(biāo)識(shí) | 16 | 每個(gè)報(bào)文有一個(gè)唯一的標(biāo)識(shí)符 |
標(biāo)志 | 3 | 占3位,但只有2位有意義;最低位記為MF(MoreFragment),第一位記為DF(Don’t Fragment) |
片位移 | 13 | 該分片在原數(shù)據(jù)報(bào)文中的偏移量,以8字節(jié)為單位 |
生存時(shí)間 | 8 | 數(shù)據(jù)報(bào)文在網(wǎng)絡(luò)中存在的最大跳數(shù) |
協(xié)議 | 8 | 指示IP報(bào)文中數(shù)據(jù)部分承載的協(xié)議類型 |
首部校驗(yàn) | 16 | IPv4報(bào)文頭的校驗(yàn)和 |
源地址 | 32 | 發(fā)送數(shù)據(jù)報(bào)文節(jié)點(diǎn)的IPv4地址 |
目的地址 | 32 | 接收數(shù)據(jù)報(bào)文節(jié)點(diǎn)的IPv4地址 |
可選字段 | 可變 | 較少使用,常用的選項(xiàng)有源路由選項(xiàng)、時(shí)間戳選項(xiàng)等 |
填充字段 | 可變 | 填充字段,全0 |
數(shù)據(jù) | 可變 | 報(bào)文承載傳輸?shù)臄?shù)據(jù) |
1.2.3 特殊含義的IP地址
一些特殊含義的IP地址:
特殊IP | 含義 |
---|---|
127網(wǎng)段 | 回播地址 |
網(wǎng)絡(luò)號全0地址 | 當(dāng)前子網(wǎng)中的主機(jī) |
全1地址 | 本地子網(wǎng)的廣播 |
主機(jī)號全1地址 | 特定子網(wǎng)的廣播 |
10.0.0.0/8 | 10.0.0.1至10.255.255.254 |
172.16.0.0/12 | 172.16.0.1至172.31.255.254 |
192.168.0.0/16 | 192.168.0.1至192.168.255.254 |
169.254.0.0 | 保留地址,用于DHCP失效(Win) |
0.0.0.0 | 保留地址,用于DHCP失效(Linux) |
例如:當(dāng)網(wǎng)絡(luò)連接不可用時(shí),為測試編寫的網(wǎng)絡(luò)程序,通常使用目的IP為127.0.0.0用于測試。
1.3 IPv6地址詳解
IPv6地址分由冒號分為8段,每段是4個(gè)16進(jìn)制數(shù)(即每段占16位),總計(jì)128位。
相比IPv4,地址空間增加了2^96倍。
1.3.1 IPv6其它表示形式
一個(gè)IPv6地址中間如果包含很長的一段0,可以把連續(xù)的一段0壓縮為“::”,但為保證地址解析的唯一性,地址中”::”只能出現(xiàn)一次。
例如:2002:0000:0000:0000:0000:0000:c0a8:0564 可表示為:2002::c0a8:0564
此外,為了實(shí)現(xiàn)IPv4與IPv6互通,IPv4地址會(huì)嵌入IPv6地址中,此時(shí)地址常表示為:“X:X:X:X:X:X:d.d.d.d”:
- 前96b采用冒分十六進(jìn)制表示后32b地址則使用IPv4的點(diǎn)分十進(jìn)制表示
1.3.2 IPv6數(shù)據(jù)報(bào)
IPv6報(bào)文的整體結(jié)構(gòu)分為IPv6報(bào)頭、擴(kuò)展報(bào)頭和上層協(xié)議數(shù)據(jù)三部分。
- IPv6報(bào)頭:必選,長度固定為40字節(jié),包含該報(bào)文的基本信息擴(kuò)展報(bào)頭:可選,可能存在0個(gè)、1個(gè)或多個(gè), IPv6通過擴(kuò)展報(bào)頭實(shí)現(xiàn)各種豐富的功能上層協(xié)議:是IPv6報(bào)文攜帶的上層數(shù)據(jù),可能是ICMPv6報(bào)文、TCP報(bào)文、UDP報(bào)文或其他可能報(bào)文
IPv6報(bào)文中各字段含義:
字段 | 長度 | 含義 |
---|---|---|
版本 | 4 | IP協(xié)議版本號,固定為6 |
流量類別 | 8 | 與IPv4中的ToS類似 |
流量簽 | 20 | 標(biāo)記一條流 |
凈荷長度 | 16 | IPv6基本報(bào)文頭后的數(shù)據(jù)部分長度(包括擴(kuò)展頭的長度),以字節(jié)為單位 |
下一報(bào)頭 | 8 | 指示基本報(bào)文頭后的擴(kuò)展報(bào)文頭,如果沒有擴(kuò)展報(bào)文頭,則指示數(shù)據(jù)部分所承載的協(xié)議 |
跳數(shù)限制 | 8 | 與IPv4的TTL相同 |
源IPv6地址 | 128 | 發(fā)送數(shù)據(jù)報(bào)文節(jié)點(diǎn)的IPv6地址 |
目標(biāo)IPv6地址 | 128 | 128 bits,接收數(shù)據(jù)報(bào)文節(jié)點(diǎn)的IPv6地址 |
擴(kuò)展報(bào)頭 | 可變 | 可變長度,包含下一報(bào)頭字段、擴(kuò)展報(bào)頭長度字段和擴(kuò)展報(bào)頭的內(nèi)容 |
數(shù)據(jù) | 可變 | 報(bào)文承載傳輸?shù)臄?shù)據(jù) |
2 子網(wǎng)劃分
2.1 基礎(chǔ)概念
對于A、B、C類地址,將主機(jī)號拿出幾位作為子網(wǎng)號,可進(jìn)一步實(shí)現(xiàn)更小的網(wǎng)絡(luò)劃分,從而實(shí)現(xiàn)更加合理的網(wǎng)絡(luò)IP分配。
經(jīng)過子網(wǎng)劃分后的IP地址組成位:網(wǎng)絡(luò)號+子網(wǎng)號+主機(jī)號。
子網(wǎng)掩碼:網(wǎng)絡(luò)號和主機(jī)號都為1,主機(jī)號都為0,這樣的地址為子網(wǎng)掩碼
子網(wǎng)掩碼可使用CIDR(Classless Inter-Domain Routing)法進(jìn)行表示
對于子網(wǎng)掩碼的計(jì)算,可看下面這張圖:
2.2 一些題目
題目一:把網(wǎng)絡(luò)117.15.32.0/23劃分為117.15.32.0/27,求得到的子網(wǎng)個(gè)數(shù)以及每個(gè)子網(wǎng)中可用地址的個(gè)數(shù)。
分析:網(wǎng)絡(luò)號從23變?yōu)榱?7,即拿出了4位作為子網(wǎng)號,可劃分2^4=16個(gè)子網(wǎng);
主機(jī)號還剩32-27=5位,子網(wǎng)中的可用地址為2^5-2=30個(gè)地址。
題目二:對于IP:192.168.50.10,子網(wǎng)掩碼:255.255.192.0,求其網(wǎng)絡(luò)號和主機(jī)號。
分析:根據(jù)子網(wǎng)掩碼的特點(diǎn)(相同部分為1,不同部分為0),可以只分析第3段,如下圖:
由上圖分析可知,網(wǎng)絡(luò)號為192.168.0.0,主機(jī)部分就是50.10。
題目三:某用戶得到的網(wǎng)絡(luò)地址范圍為110.15.0.0至110.15.7.0,求其CIDR表示法,以及可分配的主機(jī)數(shù)。
分析:可畫圖分析,可知CIDR表示法為110.15.0.0/21,主機(jī)位剩余11位,可分配的主機(jī)數(shù)為2^11-2=2046個(gè)。
3 總結(jié)
本篇介紹IP地址與子網(wǎng)劃分的基礎(chǔ)知識(shí),先介紹了IPv4與IPv6的的基礎(chǔ)知識(shí)與區(qū)別,然后結(jié)束了子網(wǎng)劃分的一些概念,并通過一些實(shí)際的例子進(jìn)行講解分析。