計(jì)算機(jī)網(wǎng)絡(luò)篇——網(wǎng)絡(luò)層

計(jì)算機(jī)網(wǎng)絡(luò)系列

IP協(xié)議

IP協(xié)議的作用

網(wǎng)絡(luò)層的主要作用是“實(shí)現(xiàn)終端節(jié)點(diǎn)之間的通信”吃度,也就是點(diǎn)對(duì)點(diǎn)的通信直撤。IP協(xié)議主要負(fù)責(zé)將數(shù)據(jù)包發(fā)送給最終的目標(biāo)計(jì)算機(jī)抑胎。前面我們講過(guò)鏈路層主要是負(fù)責(zé)數(shù)據(jù)在鏈路中進(jìn)行傳輸灿意,那么網(wǎng)絡(luò)層和鏈路層有什么聯(lián)系呢?

舉個(gè)栗子让簿,把鏈路層比作各種交通軌道叮称,它可以把世界各地的交通連接起來(lái)并傳輸舒萎,但是它并沒(méi)有規(guī)定始發(fā)地和目的地, 而網(wǎng)絡(luò)層就相當(dāng)于你的車(chē)票鳍置,車(chē)票上有始發(fā)地和目的地辽剧,把車(chē)票交給鏈路層,它就知道你的需求税产,就把你運(yùn)輸?shù)较鄳?yīng)的目的地怕轿,而具體通過(guò)什么交通工具(采用什么鏈路層協(xié)議),網(wǎng)絡(luò)層是不關(guān)心的辟拷,只要你能安全送達(dá)就可以了撞羽。

IP地址

IP地址(IPv4)由32位正整數(shù)來(lái)表示。通常每一個(gè)主機(jī)都被分配了一個(gè)這樣的IP地址衫冻。IP地址分為“網(wǎng)絡(luò)標(biāo)識(shí)”和“主機(jī)標(biāo)識(shí)”兩部分诀紊,根據(jù)“網(wǎng)絡(luò)標(biāo)識(shí)”的位數(shù)對(duì)IP地址進(jìn)行了分類(lèi)。

IP地址的分類(lèi)
  • A類(lèi)地址從1到8位是網(wǎng)絡(luò)標(biāo)識(shí)羽杰,后28位是主機(jī)標(biāo)識(shí)渡紫,以“0”開(kāi)頭,所以它的十進(jìn)制表示范圍是0.0.0.0~127.0.0.0考赛。(十進(jìn)制二進(jìn)制的轉(zhuǎn)換這個(gè)不用說(shuō)吧)
  • B類(lèi)地址從1到16位是網(wǎng)絡(luò)標(biāo)識(shí)惕澎,以“10”開(kāi)頭,所以它的十進(jìn)制表示范圍是128.0.0.1~191.255.0.0
  • C類(lèi)地址從1到24位為它的網(wǎng)絡(luò)標(biāo)識(shí)颜骤,以“110”開(kāi)頭唧喉,它的十進(jìn)制表示范圍是192.168.0.0~239.255.255.0。
  • D類(lèi)地址的32位都是網(wǎng)絡(luò)標(biāo)識(shí)忍抽,它沒(méi)有主機(jī)標(biāo)識(shí)八孝,以“1110”開(kāi)頭,它常被用于多播鸠项。

多播:多播可以把數(shù)據(jù)包同時(shí)發(fā)送給指定的多臺(tái)主機(jī)干跛,因此它的效率高于廣播,且它能穿透路由祟绊,所以可以向其它網(wǎng)絡(luò)發(fā)送數(shù)據(jù)包楼入。

用一張圖來(lái)說(shuō)明一下單播哥捕、多播與廣播的區(qū)別:

單播、多播與廣播的區(qū)別

子網(wǎng)掩碼

由于IP地址的分類(lèi)嘉熊,對(duì)IP地址造成了極大的浪費(fèi)(一個(gè)A類(lèi)地址可以有1600多萬(wàn)的主機(jī)遥赚,但是一個(gè)B類(lèi)地址只能有6萬(wàn)多的主機(jī),而C類(lèi)地址的主機(jī)上限則為254個(gè))阐肤,顯然這樣劃分也是不夠靈活的凫佛,所以就產(chǎn)生了一種子網(wǎng)掩碼的技術(shù),來(lái)對(duì)IP地址進(jìn)行更加靈活孕惜、細(xì)粒度更高的劃分愧薛。

子網(wǎng)掩碼用二進(jìn)制表示的話(huà),也是32位诊赊,它對(duì)應(yīng)IP地址網(wǎng)絡(luò)標(biāo)識(shí)的位全為1厚满,主機(jī)標(biāo)識(shí)位全為0。

使用子網(wǎng)掩碼來(lái)劃分IP地址

由圖可以看到碧磅,子網(wǎng)掩碼可以把一個(gè)B類(lèi)IP地址的網(wǎng)絡(luò)號(hào)擴(kuò)展到了26位(10位子網(wǎng)掩碼)碘箍,此時(shí)根據(jù)網(wǎng)絡(luò)號(hào)就可以劃分不同的子網(wǎng),每個(gè)子網(wǎng)也可以分配一定數(shù)量的主機(jī)鲸郊。

路由控制

路由控制(Routing)是指將分組數(shù)據(jù)發(fā)送到目標(biāo)地址的功能丰榴,這個(gè)功能一般由路由器完成。(不要與家里用的小型無(wú)線(xiàn)路由器混為一談)

路由器通過(guò)保存路由表秆撮,來(lái)對(duì)路由進(jìn)行控制四濒。類(lèi)似于你在旅行的時(shí)候,你想要從A到B职辨,但是A和B中間還有很多其它的城市盗蟆,你要通過(guò)哪些城市才能順利從A到B呢,路由表就是保存著這些“航線(xiàn)”信息舒裤。

IP地址與路由控制

如圖喳资,主機(jī)A想把數(shù)據(jù)包發(fā)送給目標(biāo)地址為10.1.2.10的主機(jī)B,它先通過(guò)查找它的路由腾供,然后根據(jù)路由表的信息把數(shù)據(jù)包發(fā)送給默認(rèn)路(IP地址為0.0.0.0/0表示默認(rèn)路由)由10.1.1.1的路由器1仆邓。然后路由器1查找它的路由表,通過(guò)對(duì)比可以知道伴鳖,目標(biāo)地址10.1.2.10與圈出的地址最為吻合(一般采用最長(zhǎng)匹配法則)节值。然后路由器1繼續(xù)講數(shù)據(jù)包轉(zhuǎn)發(fā)給地址為10.1.0.2的路由器2,然后一直轉(zhuǎn)發(fā)知道轉(zhuǎn)發(fā)給目標(biāo)主機(jī)B榜聂。

IP分割處理與再構(gòu)處理

在數(shù)據(jù)鏈路層中搞疗,其實(shí)每一種數(shù)據(jù)鏈路都有它的最大傳輸單元(MTU),所以如果你傳輸?shù)臄?shù)據(jù)包大于了數(shù)據(jù)鏈路的最大傳輸單元须肆,就需要對(duì)它進(jìn)行分割匿乃。

IP報(bào)文的分片與重組

路徑MTU發(fā)現(xiàn)

由于分片機(jī)制脐往,會(huì)對(duì)路由器帶來(lái)強(qiáng)大的負(fù)擔(dān),而且如果在分片處理中某個(gè)分片丟失扳埂,會(huì)造成整個(gè)IP報(bào)文作廢。因此就產(chǎn)生了“路徑MTU發(fā)現(xiàn)”技術(shù)瘤礁。路徑MTU發(fā)現(xiàn)其實(shí)就是從發(fā)送主機(jī)按照路徑MTU的大小將數(shù)據(jù)報(bào)進(jìn)行分片后進(jìn)行發(fā)送阳懂。

路徑MTU發(fā)現(xiàn)的機(jī)制

在發(fā)送端發(fā)送IP數(shù)據(jù)報(bào)時(shí),會(huì)將其首部的分片禁止標(biāo)志位設(shè)置為1柜思,根據(jù)這個(gè)標(biāo)志岩调,途中的路由器即使遇到需要分片才能處理的打包,也不會(huì)去分片赡盘。而是將包丟棄号枕,隨后通過(guò)一個(gè)ICMP的不可達(dá)消息將數(shù)據(jù)鏈路上MTU值發(fā)送給發(fā)送主機(jī)。下一次發(fā)送主機(jī)就會(huì)根據(jù)這個(gè)MTU值進(jìn)行分片

重組

接收端根據(jù)IP首部中的標(biāo)志(Flag)和片偏移(Fragment Offset)進(jìn)行數(shù)據(jù)重組陨享。

IP的首部(IPv4)

IPv4的首部

首部結(jié)構(gòu)比較復(fù)雜葱淳,說(shuō)幾個(gè)重要一點(diǎn)的吧。

  • 版本(Version):由4bit構(gòu)成抛姑,標(biāo)識(shí)IP首部的版本號(hào)赞厕。如IPv4的版本號(hào)位4,IPv6的版本號(hào)為6.

  • 總長(zhǎng)度(Total Length):標(biāo)識(shí)IP首部與數(shù)據(jù)部分合起來(lái)的總字節(jié)數(shù)定硝。該字段長(zhǎng)16bit皿桑,因此IP包的最大長(zhǎng)度為65535(2^16)字節(jié)。

  • 標(biāo)識(shí):用于分片重組蔬啡。同一個(gè)分片的標(biāo)識(shí)值相同诲侮,不同分片的標(biāo)識(shí)值不同。

  • 標(biāo)志(Flags):由3bit組成箱蟆,表示包被分片的相關(guān)信息沟绪。每一位的含義如下


    標(biāo)志段各位含義
  • 片偏移:標(biāo)識(shí)被分片的每一分段相對(duì)于原始數(shù)據(jù)的位置,單位為8字節(jié)顽腾。

  • 生存時(shí)間(TTL):記錄當(dāng)前包在網(wǎng)絡(luò)上應(yīng)該生存的期限近零。每經(jīng)過(guò)一個(gè)路由器,它的值就會(huì)減一抄肖,當(dāng)變?yōu)?則丟棄該包久信。

  • 協(xié)議:表示IP首部下一個(gè)首部的協(xié)議。即傳輸層的協(xié)議漓摩。

  • 首部校驗(yàn)和:用于檢查首部部分是否被破壞裙士。

IPv6

IPv6是為了解決IPv4地址耗盡而產(chǎn)生,它的長(zhǎng)度是IPv4的4倍管毙,即128bit腿椎,一般寫(xiě)成8個(gè)16位字節(jié)桌硫。

IPv6的特點(diǎn)

  • IP地址的擴(kuò)大與路由表控制的聚合
    IP地址依然適應(yīng)互聯(lián)網(wǎng)的分層構(gòu)造。分配與其地址結(jié)構(gòu)相適應(yīng)的IP地址啃炸,盡可能避免路由表膨大
  • 性能提升
    包首部長(zhǎng)度采用固定的值(40字節(jié))铆隘,不再采用首部檢驗(yàn)碼。簡(jiǎn)化首部結(jié)構(gòu)南用,減輕路由負(fù)荷膀钠。
  • 支持即插即用功能
  • 采用認(rèn)證與加密功能
  • 多播、Mobile IP成為擴(kuò)展

IP協(xié)議的相關(guān)技術(shù)

IP旨在讓最終目標(biāo)主機(jī)收到數(shù)據(jù)包裹虫,但是僅憑IP協(xié)議是無(wú)法完成這一工作的肿嘲。如怎樣解析主機(jī)名稱(chēng)和MAC地址,以及數(shù)據(jù)包在發(fā)送過(guò)程中產(chǎn)生異常如何處理筑公。所以還有一些很重要的技術(shù)來(lái)幫助IP一起工作雳窟。

DNS(域名解析系統(tǒng))

我們平常在訪問(wèn)某個(gè)網(wǎng)站的時(shí)候都不是使用的IP地址,而是通過(guò)“網(wǎng)址”來(lái)進(jìn)行訪問(wèn)匣屡,那么計(jì)算機(jī)網(wǎng)絡(luò)如何通過(guò)“網(wǎng)址”來(lái)尋找對(duì)應(yīng)的主機(jī)呢封救?這就是DNS的工作了。所謂的“網(wǎng)址”捣作,其中包含的最重要的信息就是域名兴泥,域名是指為了識(shí)別主機(jī)名稱(chēng)和組織機(jī)構(gòu)名稱(chēng)的一種具有分層的名稱(chēng)。它和IP地址都可以對(duì)應(yīng)一臺(tái)主機(jī)虾宇,DNS協(xié)議的作用就是將域名轉(zhuǎn)換為IP地址搓彻,以方便尋找對(duì)應(yīng)的主機(jī)。

DNS查詢(xún)

如圖所示嘱朽,計(jì)算機(jī)要訪問(wèn)某個(gè)網(wǎng)站時(shí)旭贬,它都是向DNS服務(wù)器查詢(xún)IP地址,然后DNS服務(wù)器按層進(jìn)行查詢(xún)搪泳。

ARP

ARP是以目標(biāo)IP地址為索引稀轨,來(lái)定位下一個(gè)應(yīng)該接受數(shù)據(jù)分包的網(wǎng)絡(luò)設(shè)備的對(duì)應(yīng)的MAC地址,簡(jiǎn)單點(diǎn)說(shuō)岸军,ARP就是用來(lái)進(jìn)行IP地址到MAC地址的對(duì)應(yīng)奋刽。

ARP的工作原理:簡(jiǎn)單點(diǎn)說(shuō),ARP就是通過(guò)ARP請(qǐng)求與ARP響應(yīng)兩種包來(lái)確定MAC地址艰赞。

ARP工作機(jī)制

如上所示佣谐,每次發(fā)送請(qǐng)求前都需要先發(fā)送ARP請(qǐng)求來(lái)確定MAC地址,這樣的效率就太低了方妖。所以通常的做法是把獲取到的MAC地址緩存一段時(shí)間狭魂。一般來(lái)說(shuō),一旦源主機(jī)向目標(biāo)地址發(fā)送一個(gè)數(shù)據(jù)包,接下來(lái)繼續(xù)發(fā)送多次的概率非常大雌澄,因此這種緩存非常容易命中斋泄。

為什么要同時(shí)有MAC地址和IP地址?

肯定有人會(huì)產(chǎn)生這樣的疑問(wèn)镐牺,明明通過(guò)IP地址就可以確定一條主機(jī)了炫掐,為什么還要有MAC地址?

如果在相同的鏈路中睬涧,確實(shí)通過(guò)廣播就能發(fā)送到對(duì)應(yīng)的主機(jī)卒废,此時(shí),僅僅使用IP地址也能工作宙地。但是如果兩臺(tái)通信的主機(jī)處于不同的鏈路上,此時(shí)就得通過(guò)路由器來(lái)進(jìn)行轉(zhuǎn)發(fā)逆皮,而路由器是工作在鏈路層的宅粥,此時(shí)你想把數(shù)據(jù)報(bào)發(fā)送哦出去,必須得先發(fā)送給路由器的MAC地址电谣。

MAC地址與IP地址的作用

此外秽梅,假如不適用IP地址,而是通過(guò)MAC地址連接世界上所有網(wǎng)絡(luò)中的主機(jī)和結(jié)點(diǎn)剿牺,我們想象一下企垦,網(wǎng)橋和交換機(jī)等設(shè)備得維護(hù)一張多么大的表格來(lái)保存所有MAC地址。

NAT和NAPT

NAT是用于在本地網(wǎng)絡(luò)中使用私有地址晒来,在連接互聯(lián)網(wǎng)時(shí)轉(zhuǎn)而使用全局IP地址的技術(shù)钞诡,它實(shí)際上是為正在面臨的IPv4地址枯竭而產(chǎn)生。

NAT

在NAT路由器內(nèi)部湃崩,有一張自動(dòng)生成的用來(lái)轉(zhuǎn)換地址的表荧降。當(dāng)10.0.0.10163.221.120.9發(fā)送第一個(gè)包時(shí)生成這張表,并按照表中的映射關(guān)系進(jìn)行處理攒读。但是這樣對(duì)應(yīng)的話(huà)好像并沒(méi)有完全減少全局IP地址的數(shù)量朵诫,如果私有網(wǎng)絡(luò)中多臺(tái)主機(jī)要和外部通信時(shí),很可能造成全局IP不夠用的情況薄扁,此時(shí)剪返,就可以用包含端口號(hào)一起轉(zhuǎn)換方式(NAPT)。

NAPT

此時(shí)邓梅,在轉(zhuǎn)換IP地址的同時(shí)脱盲,再加上端口號(hào)進(jìn)行區(qū)分,就可以節(jié)省很多全局IP地址了(同一全局IP地址對(duì)應(yīng)不同端口號(hào)不同私有IP地址)日缨。

不管是 NAT 還是 NAPT宾毒,都需要路由器路由器內(nèi)部維護(hù)一張自動(dòng)生成的地址轉(zhuǎn)換表。以 TCP 為例,建立 TCP 連接首次握手的 SYN 包發(fā)出時(shí)會(huì)生成這個(gè)表诈铛,關(guān)閉連接時(shí)會(huì)發(fā)出 FIN 包乙各,收到這個(gè)包的應(yīng)答時(shí)轉(zhuǎn)換表被刪除。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末幢竹,一起剝皮案震驚了整個(gè)濱河市耳峦,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌焕毫,老刑警劉巖蹲坷,帶你破解...
    沈念sama閱讀 219,366評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異邑飒,居然都是意外死亡循签,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)疙咸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)县匠,“玉大人,你說(shuō)我怎么就攤上這事撒轮∑虻” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,689評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵题山,是天一觀的道長(zhǎng)兰粉。 經(jīng)常有香客問(wèn)我,道長(zhǎng)顶瞳,這世上最難降的妖魔是什么玖姑? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,925評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮慨菱,結(jié)果婚禮上客峭,老公的妹妹穿的比我還像新娘。我一直安慰自己抡柿,他們只是感情好舔琅,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布洲劣。 她就那樣靜靜地躺著备蚓,像睡著了一般。 火紅的嫁衣襯著肌膚如雪囱稽。 梳的紋絲不亂的頭發(fā)上郊尝,一...
    開(kāi)封第一講書(shū)人閱讀 51,727評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音战惊,去河邊找鬼流昏。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的况凉。 我是一名探鬼主播谚鄙,決...
    沈念sama閱讀 40,447評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼刁绒!你這毒婦竟也來(lái)了闷营?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,349評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤知市,失蹤者是張志新(化名)和其女友劉穎傻盟,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體嫂丙,經(jīng)...
    沈念sama閱讀 45,820評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡娘赴,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了跟啤。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片诽表。...
    茶點(diǎn)故事閱讀 40,127評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖腥光,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情糊秆,我是刑警寧澤武福,帶...
    沈念sama閱讀 35,812評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站痘番,受9級(jí)特大地震影響捉片,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜汞舱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評(píng)論 3 331
  • 文/蒙蒙 一伍纫、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧昂芜,春花似錦莹规、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,017評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至欢际,卻和暖如春母市,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背损趋。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,142評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工患久, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,388評(píng)論 3 373
  • 正文 我出身青樓蒋失,卻偏偏與公主長(zhǎng)得像返帕,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子高镐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容