日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

TCP/IP之IP协议(网际协议)

發(fā)布時間:2023/12/19 综合教程 51 生活家
生活随笔 收集整理的這篇文章主要介紹了 TCP/IP之IP协议(网际协议) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

IP概述

一些概念:

IP是TCP/IP協(xié)議族中最為核心的協(xié)議。所有的TCP,UDP,ICMP,IGMP數(shù)據(jù)都是以IP數(shù)據(jù)報(bào)格式傳輸。IP協(xié)議就是定義數(shù)據(jù)如何從源地址傳送到目的地址,同時也定義在傳輸過程中的數(shù)據(jù)分片和重新組裝
IP協(xié)議是被它的上層協(xié)議(TCP,UDP)調(diào)用,同時它也調(diào)用它的下層協(xié)議(以太網(wǎng)協(xié)議,IEEE802),把IP數(shù)據(jù)報(bào)傳到下一個網(wǎng)關(guān)(gateway)或目的地址
IP協(xié)議主要實(shí)現(xiàn)兩個基本功能:尋址和數(shù)據(jù)分片

IP運(yùn)作模式(model of operation)

網(wǎng)絡(luò)1中的應(yīng)用程序把要數(shù)據(jù)交給IP模塊處理,加上目標(biāo),源地址和相關(guān)參數(shù)等信息放到IP頭中
IP模塊根據(jù)特定的鏈路層網(wǎng)絡(luò)協(xié)議,進(jìn)行相應(yīng)的協(xié)議轉(zhuǎn)換。例如如果現(xiàn)在是以太網(wǎng)局域網(wǎng),則根據(jù)目的IP地址得到相應(yīng)的MAC地址,并封裝IP數(shù)據(jù)包為特定的鏈路層數(shù)據(jù)幀格式進(jìn)行傳輸?shù)骄钟蛉獾木W(wǎng)關(guān)
網(wǎng)關(guān)接收到數(shù)據(jù)后,去掉相關(guān)的鏈路層頭信息,交由IP模塊處理
IP模塊去掉鏈路層相關(guān)數(shù)據(jù)頭信息后,根據(jù)IP地址和特定鏈路層協(xié)議,把數(shù)據(jù)報(bào)傳到網(wǎng)絡(luò)2中的網(wǎng)關(guān)。
網(wǎng)絡(luò)2中的網(wǎng)關(guān)根據(jù)目的IP地址得到對應(yīng)硬件地址MAC地址,并將數(shù)據(jù)傳輸?shù)街付康闹鳈C(jī)上
目的主機(jī)IP模塊將得到的數(shù)據(jù)去掉底層協(xié)議頭信息后將給相應(yīng)的應(yīng)用程序進(jìn)程以供調(diào)用處理

IP頭部格式定義(IP Header Format)

我們從上到下,從左到右介紹下各字段含義:

version(版本): 指IP協(xié)議版本號,目前是4,也稱IPv4,將來(現(xiàn)在已經(jīng)在用了)會是IPv6
IHL(internet header length):指頭部長度數(shù)值,以4字節(jié)(32比特)為單位。因?yàn)镮HL占四比特位置,所以最大值是:2^4 -1 = 15,則頭部可能最大為:15 * 4字節(jié) = 60字節(jié),一般沒有選項(xiàng)(options)數(shù)據(jù)時值為5(即5 * 4字節(jié)=20字節(jié))
Type of service(服務(wù)類型): 前三個比特指優(yōu)先權(quán)字段(已被忽略)。中間四個比特表示:最小時延,最大吞吐量,最高可靠性,最小費(fèi)用。0表時一般,1表示最優(yōu)。四個中只能一個置1。最后一比特預(yù)留,總置為0
Total length(IP數(shù)據(jù)總長度) : IP數(shù)據(jù)報(bào)內(nèi)容的長度,包括IP頭部部分,以字節(jié)為單位。因?yàn)檎?6比特,所以最長為65535(2^16-1)。盡管IP數(shù)據(jù)報(bào)最長可以達(dá)65535字節(jié),但是我們知道有些鏈路層有最大傳輸單元的限制(MTU),如以太網(wǎng)就是1500,這時候IP數(shù)據(jù)報(bào)就要分片(Fragmentation)傳輸。
Identification(唯一標(biāo)識): 每一個IP數(shù)據(jù)報(bào)都要有唯一的標(biāo)識字段,這樣在分片和重組時不至于混淆兩個完全不同的分片數(shù)據(jù)。這在后面分組,重組中會講到
Flages(標(biāo)志): 這個字段也是為IP數(shù)據(jù)報(bào)的分片和重組作用的。用于標(biāo)識收到的分片后續(xù)是否還有分片待接收。
Fragment offset(分片偏移):指當(dāng)前分片數(shù)據(jù)在整體IP數(shù)據(jù)報(bào)中所處的偏移量,以8字節(jié)(64比特)為單位。由此可見,「identification」,「Flages」,「Fragment offset」這三個字段是為IP數(shù)據(jù)報(bào)分片和重組功能作用的字段
Time to live(生存時間) : 設(shè)置IP數(shù)據(jù)報(bào)可以經(jīng)過的最多路由器數(shù)目。每次經(jīng)過一次處理它的路由器,它的值就減1,值到為0時,該數(shù)據(jù)報(bào)丟棄,并發(fā)送ICMP報(bào)文到源主機(jī)。
Protocol(協(xié)議) : 指定它的上層協(xié)議,如TCP。
Header checksum(頭檢驗(yàn)和) : 為了驗(yàn)證IP頭數(shù)據(jù)的完整性,進(jìn)行一系列計(jì)算求出的檢驗(yàn)和值,當(dāng)接收方收到后也要進(jìn)行同樣的計(jì)算并把求出的檢驗(yàn)和與收到的相比較,以判斷IP數(shù)據(jù)在傳輸?shù)倪^程中是無誤傳輸?shù)摹?br />關(guān)于計(jì)算檢驗(yàn)和的算法,在RFC1071里定義。我沒有詳細(xì)看這份rfc,但是這篇文章介紹得挺詳細(xì)的。
source address 和 destination address 分別指源IP地址和目的IP地址。
options(頭部選項(xiàng)):一些特定應(yīng)用時定義的選項(xiàng)值。只需要注意幾點(diǎn):「選項(xiàng)」是可選的(optional),且如果有選項(xiàng)值的話,長度值必需以32比特為上界,不足的話補(bǔ)0。這是因?yàn)镮P頭部始終以32比特為單元。

IP路由選擇

我們自己的電腦和一臺主機(jī)通信時,如訪問某一個網(wǎng)站的web服務(wù),映射到底層后其實(shí)就是IP數(shù)據(jù)報(bào)(ip datagrams)的傳輸。那么一個IP數(shù)據(jù)報(bào)(假如一個http地址請求的數(shù)據(jù))是怎么的方式從我的電腦達(dá)到web站點(diǎn)的呢?這里我們設(shè)置一個具體網(wǎng)絡(luò)環(huán)境,然后基于這個環(huán)境分析下。

我的電腦主機(jī)名是「host」,IP是「192.168.1.121」,假如我現(xiàn)在要訪問www.baidu.com的頁面,ping得baidu.com的服務(wù)器IP是220.181.111.53。則IP數(shù)據(jù)報(bào)的傳輸過程如下描述:

由于目的地址IP是「220.181.111.53」,與要機(jī)IP地址「192.168.1.121」不在一個網(wǎng)絡(luò)號,因此數(shù)據(jù)發(fā)送到本地局域網(wǎng)的網(wǎng)關(guān)上,即本地路由器「192.168.1.1」。
本地路由器接收到數(shù)據(jù)后,要進(jìn)行轉(zhuǎn)發(fā),由于本地路由器是通過電信ADSL撥號上網(wǎng),分配的IP是「113.89.201.22」,與目的IP,即baidu的服務(wù)器IP 「220.181.111.53」也不是在一個網(wǎng)絡(luò)上,因此把數(shù)據(jù)發(fā)到默認(rèn)網(wǎng)關(guān)上轉(zhuǎn)發(fā),即發(fā)到電信網(wǎng)關(guān)「113.89.201.1」
電信網(wǎng)關(guān)「113.89.201.1」通過查找路由表記錄,找到一條路由記錄項(xiàng)記錄的下一站路由IP「220.181.111.12」,它和我們的目的IP地址「220.181.111.53」處在同一個網(wǎng)絡(luò)號(network address)上
當(dāng)數(shù)據(jù)傳輸?shù)絙aidu網(wǎng)關(guān)「220.181.111.12」時,發(fā)現(xiàn)目的地址「220.181.111.53」處在同一個網(wǎng)絡(luò)中,則通過ARP得到目的主機(jī)的硬件地址(MAC),封裝成以太網(wǎng)數(shù)據(jù)幀格式后傳輸?shù)侥康闹鳈C(jī)「220.181.111.53」上。
至此,整個數(shù)據(jù)報(bào)從源主機(jī)「192.168.1.121」到「220.181.111.53」傳輸完畢

通過上面的一個實(shí)例分析,總結(jié)下IP路由的一些規(guī)范:

搜索路由表,尋找與目的IP地址完全匹配的表目:網(wǎng)絡(luò)號和主機(jī)號都要匹配。如果存在,則把報(bào)文直接發(fā)送到目的IP
搜索路由表,尋找與目的IP地址相匹配的網(wǎng)絡(luò)號表目,如果存在,則把報(bào)文發(fā)送到與之匹配網(wǎng)絡(luò)號的路由器上
如果上述兩步中都沒有查找成功,則把報(bào)文發(fā)送到路由器設(shè)置的默認(rèn)下一站路網(wǎng)器上。
如果到這里還沒有成功,則當(dāng)前數(shù)據(jù)報(bào)就不能傳送了(因?yàn)楝F(xiàn)在都不知道下一站去哪里),則表明發(fā)送失敗,那么需要向源發(fā)送端發(fā)送一個“錯誤”訊號。

子網(wǎng)

我們知道,IP地址是由網(wǎng)絡(luò)號和主機(jī)號組成的,如下圖所示一個B類地址:

網(wǎng)絡(luò)號一般是由一個國際組織機(jī)構(gòu)(InterNIC)頒發(fā)的,像上面的140.152;但是后面的子網(wǎng)號(5)和主機(jī)號(121)則是由擁有該網(wǎng)絡(luò)號的管理員自己分配。

假如我們看到一個IP地址,可以馬上知道它的網(wǎng)絡(luò)號(因?yàn)榭梢愿鶕?jù)IP地址的類型:A,B,C就可以得知網(wǎng)絡(luò)號),但是還要知道后面的比特值有多少是為子網(wǎng)號占有,有多少是主機(jī)號占有。像上圖所示的我們把8比特分給了子網(wǎng)號,另外8比特分給了主機(jī)號,但是這只是我們可選的一種分配方式,并沒有規(guī)定必需這樣,也可以按3:13這個比例來分配。所以這個時間,我們就需要設(shè)置規(guī)定這樣的一個分配比較規(guī)則,即就是「子網(wǎng)掩碼」這個概念。子網(wǎng)掩碼可以怎么定義:把32比特的地址值中網(wǎng)絡(luò)號和子網(wǎng)號全部置為1,主機(jī)號置為0,像上面的IP:140.152.5.121的子網(wǎng)掩碼格式如下:

所以給定一個IP地址,加上一個子網(wǎng)掩碼,我們就可以等到如下信息:

IP地址類型:根據(jù)最高位可知,如A,B,C類IP
網(wǎng)絡(luò)號 :根據(jù)IP類型后,就知道網(wǎng)絡(luò)號(每個IP類型明確知道網(wǎng)絡(luò)號占的比特位數(shù))
子網(wǎng)號 :根據(jù)子網(wǎng)掩碼的定義,對應(yīng)的網(wǎng)絡(luò)號和子網(wǎng)號的位置都是1,所以我們知道了子網(wǎng)號所占的比特值
主機(jī)號 :知道了子網(wǎng)號,同時也知道了主機(jī)號

-----------------------------------EOF-----------------------------------------------------------------------------------------------

原創(chuàng)文章,轉(zhuǎn)載請注明出處,謝謝!

總結(jié)

以上是生活随笔為你收集整理的TCP/IP之IP协议(网际协议)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。