目錄
??網(wǎng)絡(luò)層重點(diǎn)協(xié)議(IP 協(xié)議)
一、地址管理
1.如何解決上述地址不夠用問(wèn)題?
2.NAT 機(jī)制
2.1?NAPT
2.2?在 NAT 背景下如何通信?
3.IPv6
4.IP地址
4.1?ABCDE類(lèi)
4.2 子網(wǎng)掩碼
4.3 特殊的 IP 地址
二、路由選擇
1.路由器
1.1 網(wǎng)關(guān)
1.2 路由
??數(shù)據(jù)鏈路層重點(diǎn)協(xié)議
1.以太網(wǎng)
1.1 認(rèn)識(shí)以太網(wǎng)
1.2?以太網(wǎng)幀格式
2.MTU
2.1 認(rèn)識(shí)MTU
2.2?MTU對(duì)IP協(xié)議的影響
2.3 MTU的值是幾?
????關(guān)于 TCP/IP協(xié)議的 應(yīng)用層和傳輸層的重點(diǎn)知識(shí),請(qǐng)看博客:【網(wǎng)絡(luò)原理】TCP/IP協(xié)議
??網(wǎng)絡(luò)層重點(diǎn)協(xié)議(IP 協(xié)議)
IP 協(xié)議做的兩部分核心工作
1??地址管理
每個(gè)網(wǎng)絡(luò)上的設(shè)備,要能分配一個(gè)地址(唯一)
2??路由選擇
A 給 B 發(fā)消息,具體走哪條路線?
一、地址管理
協(xié)議頭格式如下:
???32位的整數(shù),最多能表示多少個(gè)不同的地址呢?42億9千萬(wàn)
顯然上述地址是不夠用的,那么應(yīng)該怎么辦?
在這里我們需要記住幾個(gè)數(shù):
一個(gè)字節(jié):? 0 ---->255? ? ? ? ? ? ? ? ?-128 ----> +127
兩個(gè)字節(jié):? 0 ----> 65535? ? ? ? -32768 ----> +32767
三個(gè)字節(jié):? 0 ----> 42億9千萬(wàn)? ? -21億 ----> +21億
1.如何解決上述地址不夠用問(wèn)題?
1??動(dòng)態(tài)分配 IP 地址
?設(shè)備上網(wǎng)才分配,不上網(wǎng)就不分配;此時(shí)就可以省下一大批 ip 地址。但是并沒(méi)有增加 ip 的數(shù)量,只能一定程度的緩解,不能徹底解決問(wèn)題
2??NAT 機(jī)制
把IP地址分成“外網(wǎng)IP”’和“內(nèi)網(wǎng)IP”,用一個(gè)外網(wǎng)IP代替N個(gè)內(nèi)網(wǎng)IP
舉個(gè)例子:
就好比你買(mǎi)了一個(gè)快遞,地址寫(xiě)的XXX省XXX縣XXX區(qū)XXX大學(xué),不用寫(xiě)幾號(hào)樓,幾零幾。但是一個(gè)大學(xué)里有好多人,那怎么確定是誰(shuí)的包裹,所以我們就可以通過(guò)收件人和聯(lián)系電話再來(lái)做進(jìn)一步的區(qū)分。
2.NAT 機(jī)制
??把所有的 IP 地址分成兩大類(lèi):
內(nèi)網(wǎng)IP: 10.*? ? ? ? ?172.16.*-172.31.*? ? ? ? 192.168.*
外網(wǎng)IP(公網(wǎng)):? 剩下的ip
??外網(wǎng) IP 必須是唯一的;內(nèi)網(wǎng) IP 則可以重復(fù)出現(xiàn)(尤其是在不同的局域網(wǎng)中)
??內(nèi)網(wǎng)設(shè)備如果要訪問(wèn)外網(wǎng),會(huì)給他分配一個(gè)外網(wǎng) IP ,但是這個(gè)外網(wǎng) IP 不是這個(gè)設(shè)備獨(dú)占的,而是這個(gè)內(nèi)網(wǎng)中所有的設(shè)備都共用一個(gè)外網(wǎng) IP
一個(gè)外網(wǎng) IP 代表一系列的設(shè)備
??IP 如何進(jìn)行工作的
?假設(shè)現(xiàn)在有設(shè)備A和設(shè)備B要同時(shí)訪問(wèn)服務(wù)器的8080端口:
1):設(shè)備A =》路由器 =》 服務(wù)器
設(shè)備A發(fā)給路由器的IP數(shù)據(jù)報(bào):
源IP 192.168.0.2 源端口:1000
目的IP:1.2.3.4 目的端口:8080路由器正常是要把這個(gè)數(shù)據(jù)報(bào)原封不動(dòng)的轉(zhuǎn)發(fā),但是此時(shí)觸發(fā)了NAT機(jī)制,于是就產(chǎn)生了“移花接木”
路由器把IP數(shù)據(jù)報(bào)中的源IP進(jìn)行了替換,替換成路由器的外網(wǎng)IP
路由器發(fā)給服務(wù)器的消息:
源IP:1.2.3.5 源端口:1000
目的IP:1.2.3.4 目的端口:8080
2):設(shè)備B =》 路由器 =》 服務(wù)器
設(shè)備B先給路由器發(fā)IP數(shù)據(jù)報(bào):
源IP:192.168.0.3 源端口:1000
目的IP:1.2.3.4 目的端口:8080此時(shí)路由器發(fā)給服務(wù)器是同樣觸發(fā)NAT機(jī)制,再次“進(jìn)行替換”
路由器發(fā)給服務(wù)器的消息:
源IP:1.2.3.5 端口:1001(此時(shí)剛才的源IP:1.2.3.5 源端口:1000 已經(jīng)被用過(guò)了,如果使用同樣的,那么路由器無(wú)法區(qū)分出這個(gè)請(qǐng)求到底是哪個(gè)主機(jī)的)需要使用不同的端口
目的IP:1.2.3.4 目的端口:8080
?服務(wù)器看見(jiàn)兩個(gè)請(qǐng)求,但是源端口不一樣,所以服務(wù)器在返回?cái)?shù)據(jù)時(shí)就可以根據(jù)源端口,來(lái)分別返回不同的數(shù)據(jù)。
具體圖解:
NAT路由器將源地址從10.0.0.10替換成全局的IP 202.244.174.37;
NAT路由器收到外部的數(shù)據(jù)時(shí), 又會(huì)把目標(biāo)IP從202.244.174.37替換回10.0.0.10;
在NAT路由器內(nèi)部, 有一張自動(dòng)生成的, 用于地址轉(zhuǎn)換的表;
當(dāng) 10.0.0.10 第一次向 163.221.120.9 發(fā)送數(shù)據(jù)時(shí)就會(huì)生成表中的映射關(guān)系
2.1?NAPT
? ? ? ? 那么問(wèn)題來(lái)了,如果局域網(wǎng)內(nèi),有多個(gè)主機(jī)都訪問(wèn)同一個(gè)外網(wǎng)服務(wù)器,那么對(duì)于服務(wù)器返回的數(shù)據(jù)中,目的IP都是相同的。那么NAT路由器如何判定將這個(gè)數(shù)據(jù)包轉(zhuǎn)發(fā)給哪個(gè)局域網(wǎng)的主機(jī)??這時(shí)候 NAPT 來(lái)解決這個(gè)問(wèn)題了。使用 IP+port 來(lái)建立這個(gè)關(guān)聯(lián)關(guān)系。
主機(jī) 163.221.120.9 的端口號(hào)是 80,私網(wǎng)中有 2 個(gè)客戶(hù)端 10.0.0.10 和 10.0.0.11 同時(shí)進(jìn)行通信,并且這 2 個(gè)客戶(hù)端的本地端口都是 1025。此時(shí),僅僅轉(zhuǎn)換 IP 地址為全局地址 202.244.174.37 ,會(huì)令轉(zhuǎn)換后的數(shù)字完全一致。因此,為了區(qū)分這 2 個(gè)會(huì)話,只要將 10.0.0.11 的端口號(hào)轉(zhuǎn)換為 1026 就可以解決問(wèn)題。NAPT 路由器通過(guò)生成轉(zhuǎn)換表,就可以正確地轉(zhuǎn)換地址跟端口的組合,使客戶(hù)端A、B能同時(shí)與服務(wù)器之間進(jìn)行通信。這種關(guān)聯(lián)關(guān)系也是由NAT路由器自動(dòng)維護(hù)的。例如在TCP的情況下,建立連接時(shí),就會(huì)生成這個(gè)表項(xiàng); 在斷開(kāi)連接后,就會(huì)刪除這個(gè)表項(xiàng)
2.2?在 NAT 背景下如何通信?
外網(wǎng)設(shè)備 -> 外網(wǎng)設(shè)備:不需要任何 NAT ,直接就能通信
內(nèi)網(wǎng)設(shè)備 -> 其他內(nèi)網(wǎng)設(shè)備:不允許
外網(wǎng)設(shè)備 -> 內(nèi)網(wǎng)設(shè)備:不允許
內(nèi)網(wǎng)設(shè)備 -> 外網(wǎng)設(shè)備:對(duì)應(yīng)的內(nèi)網(wǎng)設(shè)備的路由器,觸發(fā) NAT 機(jī)制進(jìn)行 ip 替換,此時(shí)就會(huì)給這個(gè)網(wǎng)絡(luò)數(shù)據(jù)報(bào)的源 ip 替換成路由器自己的 ip,此時(shí)一個(gè)外網(wǎng) IP 就能代表一大批內(nèi)網(wǎng)中的設(shè)備
當(dāng)前,動(dòng)態(tài)分配 + NAT 來(lái)解決 IP 不夠用的問(wèn)題的;但是并沒(méi)有讓 IP 地址變多,只是提高利用率的方式來(lái)解決問(wèn)題;要想從根本上解決問(wèn)題,需要提供更多的 IP 地址,則會(huì)有第三種解決方案:IPv6
3.IPv6
之前所學(xué)的 IP 協(xié)議叫做 IPv4:使用4個(gè)字節(jié),32位來(lái)表示 ip 地址
IPv6:是更新一些的 IP 協(xié)議,使用16個(gè)字節(jié),128位來(lái)表示 ip 地址
2^128 = 2^32 * 2^32 * 2^32 * 2^32;這個(gè)數(shù)字巨大無(wú)比,相當(dāng)于給地球上的每一粒沙子分配一個(gè) ip 地址都是夠用的
4.IP地址
概念:IP地址(Internet Protocol Address)是指互聯(lián)網(wǎng)協(xié)議地址,又譯為網(wǎng)際協(xié)議地址。
?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-417862.html
組成:IP地址分為兩個(gè)部分,網(wǎng)絡(luò)號(hào)和主機(jī)號(hào)
網(wǎng)絡(luò)號(hào):標(biāo)識(shí)網(wǎng)段(表示一個(gè)局域網(wǎng)),保證相互連接的兩個(gè)網(wǎng)段具有不同的標(biāo)識(shí);
?對(duì)于網(wǎng)絡(luò)號(hào)主機(jī)號(hào)的劃分,主要有兩種分類(lèi)方式:
4.1?ABCDE類(lèi)
1??IP 地址分類(lèi)(ABCDE)簡(jiǎn)單了解
?文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-417862.html
?
?
4.2 子網(wǎng)掩碼
格式:子網(wǎng)掩碼格式和IP地址一樣,也是一個(gè)32位的二進(jìn)制數(shù)。其中左邊是網(wǎng)絡(luò)位,用二進(jìn)制數(shù)字“1”表示,1 的數(shù)目等于網(wǎng)絡(luò)位的長(zhǎng)度;右邊是主機(jī)位,用二進(jìn)制數(shù)字“0”表示,0的數(shù)目等于主機(jī)位的長(zhǎng)度。
計(jì)算方式:
將 IP 地址和子網(wǎng)掩碼進(jìn)行“按位與”操作(二進(jìn)制相同位,與操作,兩個(gè)都是1結(jié)果為1,否則為0),得 到的結(jié)果就是網(wǎng)絡(luò)號(hào)
將子網(wǎng)掩碼二進(jìn)制按位取反,再與 IP 地址位與計(jì)算,得到的就是主機(jī)號(hào)。
4.3 特殊的 IP 地址
假定子網(wǎng)掩碼是 255.255.255.0
1??主機(jī)號(hào)為 0 的 ip? ? ? ?
例如:192.168.0.0 就是網(wǎng)絡(luò)號(hào),局域網(wǎng)里不應(yīng)該存在某個(gè)主機(jī),主機(jī)號(hào)是0?
2??主機(jī)號(hào)全為1? ? ? ? ? ? ?
例如:192.168.0.255 廣播地址——將IP地址中的主機(jī)地址全部設(shè)為1,就成為了廣播地址。往這個(gè)地址上發(fā)送 udp 數(shù)據(jù)報(bào),此時(shí)這個(gè)數(shù)據(jù)報(bào)就會(huì)被轉(zhuǎn)發(fā)給整個(gè)局域網(wǎng)中的所有主機(jī)(TCP 不支持廣播)
?3??IP 為 172 開(kāi)頭的:127.*稱(chēng)為環(huán)回ip
127.0.0.1是最常用的
環(huán)回 ip 對(duì)應(yīng)特殊的虛擬網(wǎng)卡 IO,通過(guò)環(huán)回 ip 傳輸?shù)臄?shù)據(jù),走這個(gè)虛擬網(wǎng)卡(這個(gè)過(guò)程沒(méi)有 IO 操作,純內(nèi)存操作),要比一般的這種普通 ip 的數(shù)據(jù)傳輸要快
4??主機(jī)號(hào)為1
192.168.0.1? 一般作為“網(wǎng)關(guān)ip”;網(wǎng)關(guān)即局域網(wǎng)的出入口
二、路由選擇
描述的是:從 A 到 B 之間,具體線路怎么走(A 和 B 之間存在很多種不同的路線,具體走哪條路??路由選擇要做的事情就是這個(gè))
1.路由器
路由器主要有兩個(gè)作用:
1.1 網(wǎng)關(guān)
路由器作為網(wǎng)關(guān),可以劃分公網(wǎng)和局域網(wǎng),某些路由器還可以將局域網(wǎng)劃分為多個(gè)子網(wǎng)(不同網(wǎng)段)
1.2 路由
所謂路由,即在復(fù)雜的網(wǎng)絡(luò)結(jié)構(gòu)中,找出一條通往終點(diǎn)的路線;網(wǎng)絡(luò)通信(網(wǎng)絡(luò)數(shù)據(jù)傳輸),路由器中的路由功能,就類(lèi)似于規(guī)劃路線,往哪個(gè)方向行進(jìn)能更快到達(dá)目的地。
IP 數(shù)據(jù)報(bào) 在進(jìn)行網(wǎng)絡(luò)轉(zhuǎn)發(fā)的過(guò)程中,就是一個(gè)“逐漸問(wèn)路”的過(guò)程,每個(gè)路由器只能認(rèn)識(shí)周?chē)那闆r,很可能問(wèn)的目標(biāo)并不知道(目的 ip 在路由表中,沒(méi)有匹配結(jié)果),此時(shí)就會(huì)走路由器給指定的一條默認(rèn)的路徑(路由表中的“下一條表項(xiàng)”,就會(huì)把數(shù)據(jù)報(bào)指引更上一級(jí)的路由器,越上級(jí)的路由器就見(jiàn)多識(shí)廣)?
??數(shù)據(jù)鏈路層重點(diǎn)協(xié)議
1.以太網(wǎng)
1.1 認(rèn)識(shí)以太網(wǎng)
"以太網(wǎng)" 不是一種具體的網(wǎng)絡(luò),而是一種技術(shù)標(biāo)準(zhǔn);既包含了數(shù)據(jù)鏈路層的內(nèi)容,也包含了一些物理層的內(nèi)容。例如:規(guī)定了網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),訪問(wèn)控制方式,傳輸速率等;例如以太網(wǎng)中的網(wǎng)線必須使用雙絞線;傳輸速率有10M,100M,1000M等;以太網(wǎng)是當(dāng)前應(yīng)用最廣泛的局域網(wǎng)技術(shù);和以太網(wǎng)并列的還有令牌環(huán)網(wǎng),無(wú)線LAN等;
1.2?以太網(wǎng)幀格式
2.MTU
2.1 認(rèn)識(shí)MTU
把上述數(shù)據(jù)鏈路層數(shù)據(jù)幀,最大荷載長(zhǎng)度稱(chēng)為 MTU ;如果承載的數(shù)據(jù)長(zhǎng)度超過(guò)MTU,就會(huì)在 IP 層進(jìn)行分包,使每個(gè)分出來(lái)的結(jié)果都能在 MTU 之內(nèi)
MTU相當(dāng)于發(fā)快遞時(shí)對(duì)包裹尺寸的限制。這個(gè)限制是不同的數(shù)據(jù)鏈路對(duì)應(yīng)的物理層,產(chǎn)生的限制。
以太網(wǎng)幀中的數(shù)據(jù)長(zhǎng)度規(guī)定最小46字節(jié),最大1500字節(jié),ARP數(shù)據(jù)包的長(zhǎng)度不夠46字節(jié),要在后面補(bǔ)填充位;最大值1500稱(chēng)為以太網(wǎng)的最大傳輸單元(MTU),不同的網(wǎng)絡(luò)類(lèi)型有不同的MTU;如果一個(gè)數(shù)據(jù)包從以太網(wǎng)路由到撥號(hào)鏈路上,數(shù)據(jù)包長(zhǎng)度大于撥號(hào)鏈路的MTU了,則需要對(duì)數(shù)據(jù)包進(jìn)行分片(fragmentation);不同的數(shù)據(jù)鏈路層標(biāo)準(zhǔn)的MTU是不同的;
2.2?MTU對(duì)IP協(xié)議的影響
由于數(shù)據(jù)鏈路層MTU的限制,對(duì)于較大的IP數(shù)據(jù)包要進(jìn)行分包。
1.將較大的IP包分成多個(gè)小包,并給每個(gè)小包打上標(biāo)簽;
2.每個(gè)小包IP協(xié)議頭的 16位標(biāo)識(shí)(id) 都是相同的;3.每個(gè)小包的IP協(xié)議頭的3位標(biāo)志字段中,第2位置為0,表示允許分片,第3位來(lái)表示結(jié)束標(biāo)記(當(dāng)前是否是最后一個(gè)小包,是的話置為1,否則置為0);4.到達(dá)對(duì)端時(shí)再將這些小包,會(huì)按順序重組,拼裝到一起返回給傳輸層;5.一旦這些小包中任意一個(gè)小包丟失,接收端的重組就會(huì)失敗。但是IP層不會(huì)負(fù)責(zé)重新傳輸數(shù)據(jù);
雖然 IP 能拆包,仍然不能改變 UDP 最大長(zhǎng)度是 64K 這樣的現(xiàn)實(shí)(由于拆出的這些 IP 數(shù)據(jù)報(bào)中只有一份 UDP 首部,這個(gè)首部里就能夠填寫(xiě) UDP 長(zhǎng)度的地方,頁(yè)還是只有 2 個(gè)字節(jié)。則64K (即65535) 這個(gè)限制還是存在的)
2.3 MTU的值是幾?
??如果面試中被問(wèn)到,MTU的值是幾?
??千萬(wàn)不要回答 1500?。。∫?yàn)椴煌臄?shù)據(jù)鏈路層協(xié)議,MTU 不一樣,只有以太網(wǎng)才是1500?。?/p>
?
?
?
?
?
到了這里,關(guān)于【網(wǎng)絡(luò)原理】TCP/IP協(xié)議(續(xù))的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!