tft每日頭條

 > 科技

 > tcp ip協議的高級協議

tcp ip協議的高級協議

科技 更新时间:2024-10-21 09:34:31
說明

之前介紹過EIGRP建立鄰居的過程,并且介紹了一些特性,這次主要看的是EIGRP的數據包格式,包括TLV,和EIGRP的三張表的内容。

EIGRP的包頭字段

tcp ip協議的高級協議(TCPIP卷一9EIGRP的數據包格式)1

1、版本:從EIGRP發布以來,一直為版本22、操作碼:指出EIGRP數據包的類型,1為更新 3為查詢 4為答複 5為hello和ACK3、标記:包括兩個标記,一個為init位,表示新的鄰居開始,第二位為接收位,使用一個私有可靠組播算法4、序列号:RTP中使用的32位序列号5、确認序列号(ACK):本地路由器從鄰居路由器那收到最新的序列号,單播傳送的6、自主系統号(AS):指定EIGRP協議所處的标示号,所以,兩端都必須一緻7、TLV:(1)一般TLV:攜帶K值和hold time時間,包括序列、軟件版本和下一個組播序列(一般用Hello包進行發送)

TLV的類型

在EIGRP中引用TLV的字段,TLV稱為 Type/Length/Value ,這個TLV在路由選擇協議中有非常好的擴展性,特别是ISIS中,它就是利用TLV字段來擴展支持更多的特性,當一個新的協議或者特性出現,路由協議需要去支持它,像OSPF的話,IPV6的支持就必須開發新的版本了,而ISIS對IPV6的支持,直接用TLV字段就能實現,EIGRP也是如此。

tcp ip協議的高級協議(TCPIP卷一9EIGRP的數據包格式)2

(1)一般TLV:攜帶K值和hold time時間,包括序列、軟件版本和下一個組播序列(一般用Hello包進行發送)

tcp ip協議的高級協議(TCPIP卷一9EIGRP的數據包格式)3

(2)IP内部路由TLV:從同一個AS内學習到的路由參數

1、下一跳:包括這個路由的更新源,如果為0.0.0.0,那麼表示自身2、延遲(delay):以10us為單位,沿途更新入向接口延遲總和3、帶寬(bandwidth):2560 000 000/沿途更新入向接口的最小帶寬4、MTU:指路由器沿途抵達目的地路由器上所有鍊路中最小的MTU,一般不作為metric的參數計算5、跳數:表示到達目的地路由的跳數,最大為255。6、可靠性:用于反映到達目的的路由上接口的出站誤碼率的總和,取值0x01~0xFF7、負載:用于反映到達目的的路由上接口的出站負載的總和,取值0x01~0xFF8、保留字段:未使用的字段9、前綴長度:攜帶子網掩碼10、目的地址:一個路由的目的地址

tcp ip協議的高級協議(TCPIP卷一9EIGRP的數據包格式)4

(3)IP外部路由TLV:從不同AS或不同路由協議重分布進本AS内的路由參數

1、下一跳:路由的下一跳地址。2、原路由器:一個IP地址,或者重分布外部路由到EIGRP的RID3、原自主系統号:始發路由的路由器所在的AS4、Arbitrary Tag:路由映射 Tag5、外部協議度量:标注外部路由的度量值6、保留字段:不被使用7、外部協議ID:用來标示外部路由從哪個協議學習到。8、标記:定義了兩個值,如果為0x01的話,那麼表示外部路由,如果是0x02表示缺省路由

EIGRP的五種類型數據包

1、hello :目标地址為224.0.0.10,用于發現和維持鄰居關系。鄰居收到後不需要确認,Hello間隔由接口類型決定,低速鍊路–90s,高速鍊路–5s。(hello包中包含版本号、Opcode=5、seq、ACK、AS、EIGRP K值,seq和ACK永遠為0,AS和EIGRP包括IP包的源地址是檢查能否成為鄰居的關鍵)

tcp ip協議的高級協議(TCPIP卷一9EIGRP的數據包格式)5

在Hello包中攜帶了K值、hold time時間,還包括軟件的版本号,Opcode為5,如果兩邊鄰居處于同一網段的話,鄰居檢查Hello包,還會看K值是否一緻,如果不一緻,則鄰居建立不起來。

K值和軟件版本是攜帶在TLV中傳遞的,也就是一般TLV字段

2、Update:發送給鄰居路由表,通過單播或組播發送update數據包,鄰居收到以後必須回複确認信息,如果沒有收到來自鄰居的确認信息,那麼就會單播發送這個跟新包16次,在16次後還沒有關于這個鄰居的ACK信息,則認為鄰居失效。會标明這路由信息屬于外部還是内部的,内部的隻攜帶了K值的參數,而外部标明了起源着是誰,還有tag信息。

tcp ip協議的高級協議(TCPIP卷一9EIGRP的數據包格式)6

在update包中,攜帶了路由信息,可以看到我ip interal route,它就是内部TLV字段,内部TLV的每個路由條目中包含的内容,在TLV字段中介紹了,可以查看數據包看看

tcp ip協議的高級協議(TCPIP卷一9EIGRP的數據包格式)7

可以看到Opcode為1,攜帶了子網掩碼,和5個K值的參數,next hop為0.0.0.0,怎麼是自己發送的。

3、Query:當路由信息丢失并沒有備用路由時,使用Query數據包向鄰居查詢,鄰居必須回複确認ACK和等待鄰居的reply。

tcp ip協議的高級協議(TCPIP卷一9EIGRP的數據包格式)8

可以看到Opcode為3,當一條路由失效,并且沒有FS的時候,就會對鄰居進行插叙,可以看到192.168.4.0/24标記為目的不可達,這裡序列号為46,看下回應的ACK内容

tcp ip協議的高級協議(TCPIP卷一9EIGRP的數據包格式)9

回應了ACK 46,并且是單播回應給10.0.0.2的

4、Reply:是對鄰居Query數據包的回複,也需要鄰居回複确認。

tcp ip協議的高級協議(TCPIP卷一9EIGRP的數據包格式)10

Opcode為4,reply,它回應的是關于192.168.4.0/24的不可達信息,另外,看下啊 Sequece:57,Acnowledge為48,這個48回應就是之前query,它的序列号為48,這是一種可靠性的表現查看關于回應ACK的信息,因為在收到一個reply後,也需要回應ACK

tcp ip協議的高級協議(TCPIP卷一9EIGRP的數據包格式)11

5、Ack:是對收到的數據包的确認,告訴鄰居我已經收到數據包了,收到ACK,不需要對ACK做回複,這樣導緻死循環 (因為在IP中沒有可靠的傳輸機制,必須依靠EIGRP來完成)

其中hello包中還攜帶了hold time時間,這個時間是給鄰居使用的 ,告訴鄰居如果在這個時間内還沒收到關于我的任何hello信息的話,那麼就認為鄰居不存在了。

EIGRP的三張表探讨

tcp ip協議的高級協議(TCPIP卷一9EIGRP的數據包格式)12

地址信息如圖,從R1上觀看EIGRP的三張表情況,與在A與B之間還有個網段10.1.1.0/24

R1(config)#router eigrp 1R1(config-router)#network 10.1.1.1 0.0.0.0R1(config-router)#network 12.1.1.0 0.0.0.255

R2(config)#router eigrp 1R2(config-router)#network 12.1.1.2 0.0.0.0R2(config-router)#network 23.0.0.0R2(config-router)#network 10.1.1.2 0.0.0.0

R3(config)#router eigrp 1R3(config-router)#network 23.1.1.2 0.0.0.0

這裡一定要注意IGP也就是内部協議network的含義匹配上network範圍的網段都參路由協議,并且把這個網段宣告出去,也就是說12.1.1.2 0.0.0.0代表精确匹配,這裡掩碼為反掩碼,0代表精确匹配,1代表忽略,就像12.1.1.0 0.0.0.255,它匹配的範圍就是,12.1.1不變,因為0代表精确匹配,而255,則為忽略,也就是1~254, 另外不攜帶反掩碼信息的話,那麼就是以主類網絡宣告

一、鄰居表

通過 show ip eigrp neighbos查看鄰居狀态,包括可以加 detail參數,可以看到更加詳細的内容

tcp ip協議的高級協議(TCPIP卷一9EIGRP的數據包格式)13

1、H:代表序列号,鄰居的先後建立的順序

2、address:顯示鄰居建立的地址信息,EIGRP對于同一個直連路由器建立的鄰居,在有多條鍊路的情況下,會認為是多個鄰居存在,就像B一樣,同一台路由器,有多條鍊路,在A看來是不同的鄰居存放的

3、interface:自己哪個接口參與建立的鄰居關系

4、hold:在對方Hello包中攜帶的參數,在高速鍊路上,默認為15,也就是Hello包的3倍,當15s沒有收到來自鄰居的Hello包後,就認為對方失效 ,當然在正常情況下,每5s收到一個對方的Hello包,也就是hlod不低于10

5、uptime:與鄰居建立的時間計時器。

6、SRTT(Smooth Round-Trip Timer):平均往返時間,用來計算當一個路由器發送EIGRP數據包到鄰居,從鄰居接收到該數據包并且确認的平均時間。

7、multicast flow tmer:在說RTO之前,介紹個組播流計時器,當一個更新發送出去以後,鄰居沒有回應,那麼這個等待的時間就由組播計時器決定,當計時器超時以後,就切換成單播來再次發送更新給鄰居,等待鄰居回應的ACK

8、RTO:決定單播傳送之間的間隔時間

9、Q:當組播發送了更新後,而對方沒有回應ACK的時候,會緩存在本地 ,那麼會以單播的形式重新發送這個數據包給鄰居,如果16次還沒收到ACK,重置鄰居

10、 Seq : 收到了鄰居更新的次數,每次增加1

這裡說下,關于SRTT和RTP是思科私有的算法,所以,沒有公開的計算方法,在正常情況下,RTO是ST的6倍,但是,當鄰居出現了故障以後,這個參數就會改變,RTO最大值為5000, 另外 在Cisco IOS中,沒有可以定義這兩個值的命令,卷一也沒有提及過。

二、拓撲表

對于EIGRP來說,拓撲表中存在的内容是整個網絡收斂的關鍵,對于EIGRP在網絡中部署的關鍵,就是讓每條路由都有可用的FS,關于FS和其他概念在DUAL算法總總結,這裡拓撲表隻做一個小小的介紹。

show ip eigrp topology來查看參數

tcp ip協議的高級協議(TCPIP卷一9EIGRP的數據包格式)14

可以看到,拓撲表中存放着去往每個目的地的路由信息,這裡有FD和AD的概念,這個是DUAL的核心算法,在後面會再次介紹,當有多條路徑去往同一個目的地的,當滿足了特定的條件後,它也會出現在拓撲表中,這個條件就是FC,這個在DUAL算法的時候進行詳細說明。

三、路由表

路由表是存放最優的下一跳的信息,可以看到在拓撲表中去往23.0.0.0/8,經過不同的下一跳到達,在路由表中出現的則隻會是最優的,在拓撲表中為FD is 3087200,也就是最優的,下一跳為12.1.1.2。

tcp ip協議的高級協議(TCPIP卷一9EIGRP的數據包格式)15

總結:這次詳細講解了EIGRP的數據包格式,包括TLV中的作用,另外關于拓撲表的詳細内容必須到DUAL算法中才好講解,拓撲表的内容都是通過DUAL算法得來的。

如果大家有任何疑問或者文中有錯誤跟疏忽的地方,歡迎大家留言指出,博主看到後會第一時間修改,謝謝大家的支持,更多技術文章盡在網絡之路Blog,版權歸網絡之路Blog所有,原創不易,侵權必究,覺得有幫助的,關注轉發一波謝謝。

上一篇回顧

TCPIP卷一(8):EIGRP的組建和鄰居狀态機

下一篇學習

TCPIP卷一(10)EIGRP的DUAL算法SIA解決方案

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved