TCP/IP筆記(四)IP協(xié)議

前言

IP相當(dāng)于OSI參考模型的第3層--網(wǎng)絡(luò)層:主要作用是"實現(xiàn)終端節(jié)點之間的通信"又稱"點對點通信"半夷。

IP作為整個TCP/IP中至關(guān)重要的協(xié)議,主要負(fù)責(zé)將數(shù)據(jù)包發(fā)送給最終的目標(biāo)計算機(jī)馒过。因此,IP能夠讓世界上任何兩臺計算機(jī)之間進(jìn)行通信。

數(shù)據(jù)鏈路層的作用在于實現(xiàn)同一種數(shù)據(jù)鏈路下的包傳遞,而網(wǎng)絡(luò)層則可以實現(xiàn)跨越不同數(shù)據(jù)鏈路的包傳遞。

屏幕快照 2017-03-14 上午10.07.11.png

主機(jī):配置有IP地址,但是不進(jìn)行路由控制的設(shè)備。
既配有IP地址又有路由控制能力的設(shè)備叫做"路由器"薄啥。
節(jié)點:主機(jī)和路由器的統(tǒng)稱。

網(wǎng)絡(luò)層和數(shù)據(jù)鏈路層的關(guān)系

  • 數(shù)據(jù)鏈路層提供兩個直連設(shè)備之間的通信功能逛尚。
  • 網(wǎng)絡(luò)層負(fù)責(zé)沒有直連的兩個網(wǎng)絡(luò)之間進(jìn)行通信傳輸垄惧。

舉個旅行的例子:
如果要去一個地方,計劃先飛機(jī)后火車再公交到達(dá)目的地。我們買好票,又制定一個行程表,幾點幾分去哪里坐車都一目了然绰寞。

機(jī)票和火車票只在特定區(qū)間有效,當(dāng)你換乘不同公司的飛機(jī)或不同區(qū)間的火車時,還要重新購票到逊。

IP與數(shù)據(jù)鏈路的作用.png

每張票,只能在特定的區(qū)間內(nèi)移動,就如同通信網(wǎng)絡(luò)上的數(shù)據(jù)鏈路。

而這個區(qū)間內(nèi)的出發(fā)地點和目的地點就圖同一個數(shù)據(jù)鏈路的原地址和目標(biāo)地址等首部信息滤钱。

整個過程的行程表的作用就相當(dāng)于網(wǎng)絡(luò)層觉壶。

如果只有行程表,沒有車票,就無法達(dá)成交通工具到達(dá)目的地。反之,如果只有車票,而不知道坐什么車,在哪換乘,恐怕也很難到達(dá)目的地件缸。
與之類似,計算機(jī)網(wǎng)絡(luò)中也需要數(shù)據(jù)鏈路層和網(wǎng)絡(luò)層才能實現(xiàn)向最終目標(biāo)地址的通信铜靶。

IP基礎(chǔ)知識

IP大致分為三大作用模塊,它們是IP尋址、路由(最終節(jié)點為止的轉(zhuǎn)發(fā))以及IP分包與組包他炊。

IP屬于面向無連接

  • 為了簡化
  • 為了提速

IP地址

為了識別通信終端,數(shù)據(jù)鏈路有MAC地址,網(wǎng)絡(luò)層有IP地址争剿。
IP地址用于在"連接到網(wǎng)絡(luò)中的所有主機(jī)中識別出進(jìn)行通信的目標(biāo)地址"已艰。
IP地址(IPv4地址)由32位正整數(shù)來表示。
IP地址有"網(wǎng)絡(luò)標(biāo)識(網(wǎng)絡(luò)地址)"和"主機(jī)標(biāo)識(主機(jī)地址)"兩部分組成蚕苇。
相互連接的不同段,以不同的網(wǎng)絡(luò)標(biāo)識來區(qū)別,在同一個段內(nèi),以不同的主機(jī)地址來區(qū)別哩掺。
由此,可以保證相互連接的整個網(wǎng)絡(luò)中的每臺主機(jī)的IP地址都不會重疊。

屏幕快照 2017-03-14 上午11.19.42.png

IP地址分類

IP地址分為四個級別涩笤,分別為A類嚼吞、B類、C類和D類辆它。分類的依據(jù)是IP地址的前四位:

A類IP地址是第一位為“0”的地址誊薄。A類IP地址的前8位是網(wǎng)絡(luò)標(biāo)識履恩,用十進(jìn)制標(biāo)識的話0.0.0.0-127.0.0.0是A類IP地址的理論范圍锰茉。另外我們還可以得知,A類IP地址最多只有128個(實際上是126個切心,下文不贅述)飒筑,每個網(wǎng)段內(nèi)主機(jī)上限為2的24次方,也就是16绽昏,777协屡,214個。

B類IP地址是前兩位為“10“的地址全谤。B類IP地址的前16位是網(wǎng)絡(luò)標(biāo)識肤晓,用十進(jìn)制標(biāo)識的話128.0.0.0-191.255.0.0是B類IP地址的范圍。B類IP地址的主機(jī)標(biāo)記長度為16位认然,因此一個網(wǎng)段內(nèi)可容納主機(jī)地址上限為65534個补憾。

C類IP地址是前三位為“110”的地址。C類IP地址的前24位是網(wǎng)絡(luò)標(biāo)識卷员,用十進(jìn)制標(biāo)識的話192.0.0.0-223.255.255.0是C類IP地址的范圍盈匾。C類地址的后8位是主機(jī)標(biāo)識,共容納254個主機(jī)地址毕骡。

D類IP地址是前四位為“1110”的地址削饵。D類IP地址的網(wǎng)絡(luò)標(biāo)識長32位,沒有主機(jī)標(biāo)識未巫,因此常用于多播窿撬。

子網(wǎng)掩碼

IP地址總長度32位,它能表示的主機(jī)數(shù)量有限叙凡,大約在43億左右尤仍。而IP地址分類更是造成了極大的浪費,A狭姨、B類地址一共也就一萬多個宰啦,而世界上包含主機(jī)數(shù)量超過254的網(wǎng)段顯然不止這么點苏遥。

我們知道IP地址分類的本質(zhì)是區(qū)分網(wǎng)絡(luò)標(biāo)識和主機(jī)標(biāo)識,另一種更加靈活赡模、細(xì)粒度的區(qū)分方法是使用子網(wǎng)掩碼田炭。使用原A,B,C,D類等分類中的主機(jī)地址部分用作子網(wǎng)地址,可以將原網(wǎng)絡(luò)分為多個物理網(wǎng)絡(luò)的一種機(jī)制。

子網(wǎng)是指一個ip地址上生成的邏輯網(wǎng)絡(luò)漓柑,它可以讓一個網(wǎng)絡(luò)地址跨越多個物理網(wǎng)絡(luò)教硫,即一個網(wǎng)絡(luò)地址代表多個網(wǎng)絡(luò)(很明顯這樣做可以節(jié)省ip地址)。呵呵辆布,聽起來是不是很蹊蹺瞬矩?一個網(wǎng)絡(luò)就這樣被莫名其妙的劃分成了許多子網(wǎng)?那么這樣做有什么用呢锋玲?

我舉個例子來跟你說吧:比如你是某個學(xué)校的網(wǎng)管景用,你的學(xué)校有四個處于不同物理位置的網(wǎng)絡(luò)教室,每個網(wǎng)絡(luò)教室25臺機(jī)器惭蹂,你的任務(wù)是給這些機(jī)器配置ip地址和子網(wǎng)掩碼伞插。你可能會覺得這再簡單不過了,申請4個C類地址盾碗,每個教室一個媚污,然后在一一配置不就搞定了。嗯廷雅,這樣做理論上沒錯耗美,但你有沒有想到這樣做很浪費,你一共浪費了(254-25)*4=916個ip地址航缀,如果所有的網(wǎng)管都像你這樣做商架,那么internet上的ip地址將會在極短的時間內(nèi)枯竭,顯然谬盐,你是不能這樣做甸私,你應(yīng)該做子網(wǎng)劃分。

子網(wǎng)劃分說白了是這樣一個事情:因為在劃分了子網(wǎng)后飞傀,ip地址的網(wǎng)絡(luò)號是不變的皇型,因此在局域網(wǎng)外部看來,這里仍然只存在一個網(wǎng)絡(luò)砸烦,即網(wǎng)絡(luò)號所代表的那個網(wǎng)絡(luò)弃鸦;但在網(wǎng)絡(luò)內(nèi)部卻是另外一個景象,因為我們每個子網(wǎng)的子網(wǎng)號是不同的幢痘,當(dāng)用化分子網(wǎng)后的ip地址與子網(wǎng)掩碼(注意唬格,這里指的子網(wǎng)掩碼已經(jīng)不是缺省子網(wǎng)掩碼了,而是自定義子網(wǎng)掩碼,是管理員在經(jīng)過計算后得出的)做'與'運算時购岗,每個子網(wǎng)將得到不同的子網(wǎng)地址汰聋,從而實現(xiàn)了對網(wǎng)絡(luò)的劃分(得到了不同的地址,當(dāng)然就能區(qū)別出各個子網(wǎng)了喊积,有趣吧)烹困。

子網(wǎng)編址技術(shù),即子網(wǎng)劃分將會有助于以下問題的解決:
1)巨大的網(wǎng)絡(luò)地址管理耗費:如果你是一個A類網(wǎng)絡(luò)的管理員乾吻,你一定會為管理數(shù)量龐大的主機(jī)而頭痛的髓梅;
2)路由器中的選路表的急劇膨脹:當(dāng)路由器與其他路由器交換選路表時,互聯(lián)網(wǎng)的負(fù)載是很高的绎签,所需的計算量也很高枯饿;
3)IP地址空間有限并終將枯竭:這是一個至關(guān)重要的問題,高速發(fā)展的internet,使原來的編址方法不能適應(yīng)诡必,而一些ip地址卻不能被充分的利用奢方,造成了浪費。
因此擒权,在配置局域網(wǎng)或其他網(wǎng)絡(luò)時袱巨,根據(jù)需要劃分子網(wǎng)是很重要的阁谆,有時也是必要的√汲現(xiàn)在,子網(wǎng)編址技術(shù)已經(jīng)被絕大多數(shù)局域網(wǎng)所使用场绿。

子網(wǎng)掩碼長度也是32位剖效,由一段連續(xù)的1和一段連續(xù)的0組成。1的長度就表示網(wǎng)絡(luò)標(biāo)識的長度焰盗。以IP地址172.20.100.52為例璧尸,它本來是一個B類IP地址(前16位是網(wǎng)絡(luò)標(biāo)識),但通過子網(wǎng)掩碼熬拒,它可以是前26為為網(wǎng)絡(luò)標(biāo)識的IP地址:

子網(wǎng)掩碼.png

路由控制

互聯(lián)網(wǎng)是由路由器連接的網(wǎng)絡(luò)組合而成的爷光。為了能讓數(shù)據(jù)包正確的到達(dá)目標(biāo)主機(jī),路由器必須在途中進(jìn)行正確的轉(zhuǎn)發(fā)。
這種"正確的方向"轉(zhuǎn)發(fā)數(shù)據(jù)所進(jìn)行的處理就叫做路由控制或路由澎粟。

路由控制是指將分組數(shù)據(jù)發(fā)送到最終目標(biāo)地址的功能蛀序。

"跳"指網(wǎng)絡(luò)的一個區(qū)間。IP包正是在網(wǎng)絡(luò)中一個跳間被轉(zhuǎn)發(fā)活烙。因此IP路由也叫做多跳路由徐裸。在每一個區(qū)間內(nèi)決定著包在下一條被轉(zhuǎn)發(fā)的路徑。

跳.png

路由器是根據(jù)由控制表轉(zhuǎn)發(fā)數(shù)據(jù)包啸盏。它根據(jù)所收到的數(shù)據(jù)包中目標(biāo)主機(jī)的IP地址與路由控制表的比較得出下一個應(yīng)該接收的路由器重贺。

為了將數(shù)據(jù)包發(fā)給目標(biāo)主機(jī),所有主機(jī)都維護(hù)者一張路由控制表。 該表記錄IP數(shù)據(jù)在下一步應(yīng)該發(fā)給哪個路由器。IP包將根據(jù)這個路由表在各個數(shù)據(jù)鏈路上傳輸气笙。

路由控制表.png

路由控制分為靜態(tài)和動態(tài)兩種類型次企。
靜態(tài):通常是由使用者手工操作完成的,是指事先設(shè)置好路由器和主機(jī)中并將路由信息固定的一種方法。
動態(tài):讓管理者設(shè)置好的路由協(xié)議在運行過程中自動的設(shè)置路由控制信息的一種方法潜圃。

IP分割處理

IP是實現(xiàn)多個數(shù)據(jù)鏈路之間通信的協(xié)議抒巢。
但是不同的數(shù)據(jù)鏈路,它們各自的最大傳輸單位不同。

為了解決這個問題,IP進(jìn)行分片處理秉犹。將較大的IP包分成多個較小的IP包蛉谜。分片的包到達(dá)了對端目標(biāo)地址以后會再備注合起來傳給上一層。經(jīng)過分片之后的IP數(shù)據(jù)報在被重組的時候,只能由目標(biāo)主機(jī)進(jìn)行崇堵。路由器雖然做分片,但不會進(jìn)行重組型诚。

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

分片會加重路由器的負(fù)擔(dān),因此只要條件允許鸳劳,我們都不希望路由器對IP數(shù)據(jù)包進(jìn)行分片處理狰贯。另外,如果一個分片丟失赏廓,整個IP數(shù)據(jù)報都會作廢涵紊。

解決以上問題的技術(shù)是“路徑MTU發(fā)現(xiàn)”。主機(jī)會首先獲取整個路徑中所有數(shù)據(jù)鏈路的最小MTU幔摸,并按照整個大小將數(shù)據(jù)分片摸柄。因此傳輸過程中的任何一個路由器都不用進(jìn)行分片工作。

為了找到路徑MTU既忆,主機(jī)首先發(fā)送整個數(shù)據(jù)包驱负,并將IP首部的禁止分片標(biāo)志設(shè)為1.這樣路由器在遇到需要分片才能處理的包時不會分片,而是直接丟棄數(shù)據(jù)并通過ICMP協(xié)議將整個不可達(dá)的消息發(fā)回給主機(jī)患雇。

主機(jī)將ICMP通知中的MTU設(shè)置為當(dāng)前MTU跃脊,根據(jù)整個MTU對數(shù)據(jù)進(jìn)行分片處理。如此反復(fù)下去苛吱,直到不再收到ICMP通知酪术,此時的MTU就是路徑MTU。

以UDP協(xié)議發(fā)送數(shù)據(jù)為例:

MTU路徑.png

IPv4首部

通過IP進(jìn)行通信是,需要在數(shù)據(jù)的前面加入IP首部信息翠储。IP首部中包含著用于IP協(xié)議進(jìn)行發(fā)包控制時所有的必要信息绘雁。所以,為了對IP所提供的功能有一個詳細(xì)的把握,還是有必要了解下IP首部的結(jié)構(gòu)的。

IPv4首部.png

其中幾個重要的部分介紹如下:

  • 總長度(Total Length):表示IP首部與數(shù)據(jù)部分總的字節(jié)數(shù)彰亥,該段長16比特咧七,所以IP包的最大長度為65535字節(jié)(2^16)。雖然不同數(shù)據(jù)鏈路的MTU不同任斋,但是IP協(xié)議屏蔽了這些區(qū)別继阻,通過自己實現(xiàn)的數(shù)據(jù)分片功能耻涛,從上層的角度來看,IP協(xié)議總是能夠以65535為最大包長進(jìn)行傳輸瘟檩。

  • 標(biāo)識(ID:Identification):用于分片重組抹缕。屬于同一個分片的幀的ID相同。但即使ID相同墨辛,如果目標(biāo)地址卓研、源地址、上層協(xié)議中有任何一個不同睹簇,都被認(rèn)為不屬于同一個分片奏赘。

  • 標(biāo)志(Flags):由于分片重組,由三個比特構(gòu)成太惠。

    第一個比特未使用磨淌,目前必須是0。

    第二個比特表示是否進(jìn)行分片凿渊,0表示可以分片梁只,1表示不能分片。在路徑MTU發(fā)現(xiàn)技術(shù)中就用到了這個位埃脏。

    第三個比特表示在分片時搪锣,是否表示最后一個包。1表示不是最后一個包彩掐,0表示分配中最后一個包构舟。

  • 片偏移(FO: Fragment Offset):由13比特組成,表示被分片的段相對于原始數(shù)據(jù)的位置佩谷。它可以表示8192(2^13)個位置旁壮,單位為8字節(jié)监嗜,所以最大可以表示8 x 8192 = 65536字節(jié)的偏移量谐檀。

  • 生存時間(TTL: Time To Live):表示包可以經(jīng)過多少個路由器的中轉(zhuǎn)。每經(jīng)過一個路由器裁奇,TTL減1桐猬。這樣可以避免前文提到的無限傳遞包的問題。

  • 協(xié)議: 表示IP首部的下一個首部屬于哪個協(xié)議刽肠。比如TCP協(xié)議的編號為6溃肪,UDP編號為17.

  • 首部校驗和:用于檢查IP首部是否損壞

  • 源地址:由32比特構(gòu)成(4個字節(jié)),表示發(fā)送端IP地址。

  • 目標(biāo)地址:由32比特構(gòu)成(4個字節(jié)),表示接收端IP地址音五。

  • 可選項:僅在試驗或診斷時用惫撰,可以沒有。如果有躺涝,需要配合填充(Padding)占滿32比特厨钻。

IPv6

IPv6是為了根本解決IPv4地址耗盡的問題而被標(biāo)準(zhǔn)化的網(wǎng)際協(xié)議。IPv4地址長度32比特,而IPv6地址長度128比特,一般寫成8個16位字節(jié)。

IPv6特點

  • IP地址的擴(kuò)大與路由控制表的聚合
  • 性能提升
  • 支持即插即用功能
  • 采用認(rèn)證與加密功能
  • 多播夯膀、Mobile IP成為拓展功能

IPv6中IP地址的標(biāo)記方法

一般人們將128比特IP地址以每16比特為一組,每組用冒號(":")隔開進(jìn)行標(biāo)記诗充。而且如果出現(xiàn)連續(xù)的0時還可以將這些0省略掉,并用冷兒冒號("::")隔開。但是一個IP地址中只允許出現(xiàn)一次兩個連續(xù)的冒號诱建。

在互聯(lián)網(wǎng)通信中,使用一種全局的單播地址蝴蜓。他是互聯(lián)萬中唯一的一個地址,不需要正式分配IP地址。

單播.png

IPv6首部

IPv6首部.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末俺猿,一起剝皮案震驚了整個濱河市茎匠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌押袍,老刑警劉巖汽抚,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異伯病,居然都是意外死亡造烁,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進(jìn)店門午笛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來惭蟋,“玉大人,你說我怎么就攤上這事药磺「孀椋” “怎么了?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵癌佩,是天一觀的道長木缝。 經(jīng)常有香客問我,道長围辙,這世上最難降的妖魔是什么我碟? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮姚建,結(jié)果婚禮上矫俺,老公的妹妹穿的比我還像新娘。我一直安慰自己掸冤,他們只是感情好厘托,可當(dāng)我...
    茶點故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著稿湿,像睡著了一般铅匹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上饺藤,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天包斑,我揣著相機(jī)與錄音考杉,去河邊找鬼。 笑死舰始,一個胖子當(dāng)著我的面吹牛崇棠,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播丸卷,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼枕稀,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了谜嫉?” 一聲冷哼從身側(cè)響起萎坷,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎沐兰,沒想到半個月后哆档,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡住闯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年瓜浸,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片比原。...
    茶點故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡插佛,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出量窘,到底是詐尸還是另有隱情雇寇,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布蚌铜,位于F島的核電站锨侯,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏冬殃。R本人自食惡果不足惜囚痴,卻給世界環(huán)境...
    茶點故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望造壮。 院中可真熱鬧渡讼,春花似錦、人聲如沸耳璧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽旨枯。三九已至,卻和暖如春混驰,著一層夾襖步出監(jiān)牢的瞬間攀隔,已是汗流浹背皂贩。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留昆汹,地道東北人明刷。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像满粗,于是被迫代替她去往敵國和親辈末。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,675評論 2 359

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