長泰縣建設(shè)局網(wǎng)站電腦培訓(xùn)課程
目錄
IP協(xié)議報頭?
4位版本號
4位首部長度
8位服務(wù)類型(TOS)
16位總長度?
IP拆包
?16位標(biāo)識、3位標(biāo)志、13位片偏移?編輯
8位生存時間(TTL)
8位協(xié)議
16位首部校驗和?
網(wǎng)絡(luò)地址管理
32位源ip&32位目的ip?
? ? ?方案一:動態(tài)分配ip地址
? ? ?方案2:NAT網(wǎng)絡(luò)地址轉(zhuǎn)換(使用一個ip代表一批設(shè)備)
?方案3:使用ipv6,從根本上解決IP不夠用的問題
網(wǎng)絡(luò)號&主機號
一個兩個不同的局域網(wǎng)之間的關(guān)系(圖解)?
子網(wǎng)掩碼
?幾個特殊的IP
?回環(huán)IP:
廣播地址:主機地址全為1的IP:(192.168.0.255)
主機地址為十進制1的IP(網(wǎng)關(guān)IP)
?主機地址為0的IP
?路由地址選擇
?IP協(xié)議其實是工作在網(wǎng)絡(luò)層的協(xié)議。
?關(guān)于什么是網(wǎng)絡(luò)層,已經(jīng)在這一篇文章當(dāng)中提到了。
初識網(wǎng)絡(luò):IP、端口、網(wǎng)絡(luò)協(xié)議、TCP-IP五層模型_革凡成圣211的博客-CSDN博客TCP/IP五層協(xié)議詳解https://blog.csdn.net/weixin_56738054/article/details/128666970?spm=1001.2014.3001.5501?它主要負(fù)責(zé)地址管理和路由器選擇。
IP協(xié)議報頭?
下面,來一張圖看看ip報文,下面將說幾個常見的屬性
4位版本號
? ? ? ?版本號這里的取值只有兩個,一個是4另外一個是6,分別代表ipv4和ipv6。
? ? ? ?本文章目前討論的就是ipv4。
4位首部長度
? ? ? ?描述了ip報頭有多長。IP報頭和TCP報頭一樣,也是包含了選項部分的長度,選項的長度是變化的,最短可以為0,也就是可有可無的。
? ? ? ?4位首部長度的單位也是"4字節(jié)"。當(dāng)首部長度位15的時候,可以經(jīng)過下面的運算得出IP報頭長度和選項長度。
?
8位服務(wù)類型(TOS)
? 這里說是8位,其實實際上只有4位,對應(yīng)4種形態(tài)。
? 這4位當(dāng)中,只有1位可以表示1,其他都是0。
? 這4種形態(tài)分別是:
? 最小延時、最大吞吐量、最高可靠性、最小成本。
? 實際開發(fā)當(dāng)中就可以根據(jù)需要,來切換IP的模式,達(dá)到最優(yōu)的效果。
16位總長度?
?描述了一個IP數(shù)據(jù)包的長度。一個IP數(shù)據(jù)包,包含了兩部分:
?IP報頭+IP載荷。這兩個部分合起來,就是一個IP報文的總的長度。
?所以:IP載荷部分長度=16位總長度-4位首部長度。
IP拆包
? ? ? ?IP報頭當(dāng)中有一個屬性——16位首部長度。這難道代表,IP數(shù)據(jù)報的最大長度就是64KB嗎?
? ? ? ?并不是的,當(dāng)一個IP報文的總長度如果達(dá)到了64KB之后,就會在網(wǎng)絡(luò)層進行拆包,把一個數(shù)據(jù)拆成多個IP數(shù)據(jù)報,然后發(fā)送給數(shù)據(jù)鏈路層。各自以數(shù)據(jù)幀的方式進行傳送
? ? ? ?在接收方接收這個IP報文的時候,會再次把這兩個IP數(shù)據(jù)報進行解析,然后再合并成一個IP報文傳送給接收方傳輸層。
? ? ? ?這就好像一個電梯的載重是9噸,如果一個貨物重10噸,那么就只能分成多次進行運送了。
? ? ? ?然后運送到目標(biāo)樓層之后,在進行拼裝組合。?
? ? ? ?和UDP不一樣的是,UDP雖然也有大小限制(64KB),但是一旦超過了這個限制,只能由
程序員手動拆包。并不像IP協(xié)議一樣可以自動拆包。
?16位標(biāo)識、3位標(biāo)志、13位片偏移
8位生存時間(TTL)
一個數(shù)據(jù)報在網(wǎng)絡(luò)上能夠傳輸?shù)淖畲髸r間。這個時間的單位不是"秒",而是次數(shù)
當(dāng)初始化之后,在鏈路上面進行傳輸?shù)臅r候,每經(jīng)過一個路由器,TTL的值就-1。
? ? ? ?如果TTL的值減為0之后,還沒有到達(dá)目標(biāo),此時就認(rèn)為這個數(shù)據(jù)永遠(yuǎn)也到達(dá)不了了,于是這個IP報文就會被丟棄。
?
8位協(xié)議
? ? ? ?8位協(xié)議,指明了此處的IP協(xié)議的載荷當(dāng)中的傳輸層協(xié)議是什么,例如指明了是TCP還是UDP的協(xié)議。
16位首部校驗和?
僅僅根據(jù)首部的特點計算出它的校驗和,并不需要根據(jù)整個ip報頭再計算一次。
原因:IP載荷已部分已經(jīng)有對應(yīng)的協(xié)議校驗過了,無需再次校驗。
如果校驗和不一致,直接丟棄?
IP地址功能?
?IP有兩個功能,一個是網(wǎng)絡(luò)地址管理,另外一個是路由器選擇。
下面,首先談一下IP是怎樣進行網(wǎng)絡(luò)地址管理的
網(wǎng)絡(luò)地址管理
32位源ip&32位目的ip?
? ? ? ?此處看到的IP地址是一個32位的整數(shù)。但是,我們平時看到的ip地址好像就是a.b.c.d這樣的格式的數(shù)字。
? ? ? ?我們一般期待,每一個網(wǎng)絡(luò)設(shè)備的ip地址都不一樣。32位,也就是代表了42億9千萬個數(shù)字。
? ? ? ?但是,如果放在整個世界的網(wǎng)絡(luò)設(shè)備當(dāng)中,42億9kw這個數(shù)字遠(yuǎn)遠(yuǎn)不夠用
? ? ?? 為了解決這個問題,于是就有了如下的解決方案:
? ? ?方案一:動態(tài)分配ip地址
? ? ? 此時,哪些設(shè)備需要網(wǎng)絡(luò),哪一些設(shè)備就連上網(wǎng)絡(luò)。但是,這是一個治標(biāo)不治本的方式。無法徹底解決ip地址不夠用的問題。
? ? ?方案2:NAT網(wǎng)絡(luò)地址轉(zhuǎn)換(使用一個ip代表一批設(shè)備)
? ? ? ?在NAT背景下,就把IP地址分為兩個大類:
? ? ? ?大類1:內(nèi)網(wǎng)IP(私有ip)
? ? ? ? 什么樣的IP,可以代表內(nèi)網(wǎng)IP呢?
? ? ? ? 有以下這三種IP:
? ? ? ? ①10.*開頭的IP地址;
? ? ? ? ②172.16.*~172.31.*;
? ? ? ? ③192.168.*
? ? ? ? 只要IP地址屬于這三類當(dāng)中的某一類,那么就一定屬于私網(wǎng)IP
? ? ? ?大類2:外網(wǎng)IP(公網(wǎng)IP)
除了大類1范圍以外的IP地址,都屬于公網(wǎng)IP
? ? ? NAT要求:公網(wǎng)IP必須是唯一的,不可以重復(fù)。
? ? ? 私網(wǎng)IP可以在不同的局域網(wǎng)內(nèi)重復(fù)出現(xiàn),但是不可以在同一個局域網(wǎng)內(nèi)重復(fù)
? ? ? ?如果某個私網(wǎng)想要訪問公網(wǎng),那么就需要使用NAT(路由器)把IP地址進行映射,從而完成網(wǎng)絡(luò)訪問。同樣地,不同局域網(wǎng)下面的設(shè)備,也無法直接訪問。
? ? ? ?同一個路由器下面的所有設(shè)備的公網(wǎng)ip都是一樣的。
使用IPV4+NAT+動態(tài)分配的技術(shù),是目前來說比較廣泛使用的方式。?
? ? ? ?小明說:我的電腦的IP地址是192.168.2.3,
? ? ? ?小紅說:我知道你的電腦的IP啦,我可以黑你!
? ? ? ?小明:你只知道我的私網(wǎng)IP,無法知道我的公網(wǎng)IP,也就是我家的路由器的IP。就算你知道了我家路由器的IP,也只能黑我的路由器呀,哈哈。你永遠(yuǎn)黑不到我的電腦噢~
?方案3:使用ipv6,從根本上解決IP不夠用的問題
? ? 對于ipv4,它使用的是32位,也就是4字節(jié)來表示ip地址。
? ?下圖是ipv4的
? ? ? 關(guān)于ipv6,它是使用了128位,也就是16字節(jié)來表示ip地址。
? ? ? 128位,可以表示的無符號范圍為(0,2^128-1)。這一個數(shù)字(大約是42億的4次方),可以表示足夠多的ip地址了。
網(wǎng)絡(luò)號&主機號
如果一個ip地址為192.168.10.1(本主機的私網(wǎng)地址)。
那么,網(wǎng)絡(luò)號為:192.168.10(也就是前三位),主機號為最后一位:1。
那么也就意味著,一個局域網(wǎng)下面的所有網(wǎng)絡(luò)設(shè)備,它們的網(wǎng)絡(luò)號都是192.168.10。
一個兩個不同的局域網(wǎng)之間的關(guān)系(圖解)?
①同一個路由器都擁有兩個接口,一個是WAN口(連接其中一個局域網(wǎng));
另外一個是LAN口(連接另外一個局域網(wǎng)),LAN口一般用于連接和這個路由器相連的網(wǎng)絡(luò)設(shè)備。
也就是LAN口的網(wǎng)絡(luò)號和各個主機的網(wǎng)絡(luò)號一致。
?②路由器連接的另外一個光貓:
?這個光貓的LAN口編號和路由器的WAN口編號處于同一個局域網(wǎng)內(nèi)部。
子網(wǎng)掩碼
如上圖,一個子網(wǎng)掩碼就是255.255.255.0;
子網(wǎng)掩碼也是一個32位的整數(shù):如上圖,表示就是:1111 1111 1111 1111 1111 1111 0000 0000
左側(cè)都是1,右側(cè)都是0。1的部分描述了IP地址的網(wǎng)絡(luò)號最多有多少位。
255.255.255就是網(wǎng)絡(luò)號的最大值了。
?幾個特殊的IP
?回環(huán)IP:
? ? ? 127.*的IP地址為本機回環(huán)IP,通常是127.0.0.1,這個IP地址通常用于測試本機的應(yīng)用程序。例如手寫一個客戶端——服務(wù)端程序的時候,用于測試是否可以連通網(wǎng)絡(luò)。
廣播地址:主機地址全為1的IP:(192.168.0.255)
? ? ? ?主機地址為一個ip地址最后一個.往后的部分。例如在上面的IP地址當(dāng)中,255就是這個IP地址的主機地址,255的用二進制表示就是11111111
? ? ? ? ? ? 這里的全為1并不是十進制的1,而是二進制的1。
? ? ? ?如果使用UDP協(xié)議往這個地址上面發(fā)送數(shù)據(jù)報,那么整個局域網(wǎng)的所有設(shè)備都可以收到。
主機地址為十進制1的IP(網(wǎng)關(guān)IP)
當(dāng)一個通信設(shè)備的IP地址為192.168.0.1.......或者192.168.3.1
也就是主機號為1的時候,這個通信設(shè)備就通常是一個網(wǎng)關(guān)
網(wǎng)關(guān)可以理解為一個局域網(wǎng)的入口
例如下圖當(dāng)中的LAN口就是一個局域網(wǎng)是入口:
?主機地址為0的IP
? 例如123.45.67.0
? 主機IP為0,說明這個IP地址代表了一個局域網(wǎng)的IP。
?路由地址選擇
? 這是IP地址的第二個功能。
? 每一個路由器都會保存一定的周圍設(shè)備的信息,這部分信息被稱為(路由表)。
? 每次有一個IP數(shù)據(jù)報經(jīng)過路由器,就需要匹配路由表,看一看接下來咋走。
? 如果路由表上面有匹配的項,就會往這一個匹配的項走。
? 以上內(nèi)容只是簡單了解一下路由器選擇,具體內(nèi)容,可以參考網(wǎng)絡(luò)。