亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.430618.com 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

引言

IP協議是TCP/IP協議族中最核心的協議,所有的TCP,UDP、ICMP以及IGMP等協議都以IP數據報的格式傳輸。IP協議提供最好的傳輸服務,其提供無連接、不可靠的數據傳輸。或許這句話讀起來很矛盾,為什么說是最好的傳輸服務,但同時又是不可靠的呢。

最好的傳輸可以認為IP協議會盡一切能力到達目的主機,若中途發生錯誤無法到達目的主機,也會返回一個ICMP錯誤報文。收到IP協議返回的錯誤報文后,本機就知道報文沒有成功到達目的主機。而接下來的傳輸可靠性,即重傳,則不屬于IP協議的范疇,而是通過TCP協議(或者自己實現的應用層協議)來保證。

不可靠是指即使傳輸過程中出現錯誤,IP協議并不負責處理報文重傳的工作,而是交給上層協議。

無連接是指IP協議的首部中不保存維護任何關于后續數據報的相關狀態信息。

3.2.IP首部

IP數據報的格式如圖3-1:

TCP/IP協議——IP協議

3-1

版本:IP協議的版本號,IPV4即為4

首部長度:包含任意選項,以32位字為單位的長度。由于是一個4比特字段,可知IP首部最長為16*4字節,即64字節

服務類型:包括一個3 bit的優先權子字段(現在已被忽略),4 bit的TOS子字段和1 bit未用位但必須置0。4 bit的TOS分別代表:最小時延、最大吞吐量、最高可靠性和最小費用。4 bit中只能置其中1 bit。如果所有4 bit均為0,那么就意味著是一般服務。

總長度:代表IP數據包的總長(包括其后承載的協議首部與用戶數據),由于其有16bit,單位為字節數,可知IP數據報的總長度為65536字節。不過盡管IP首部允許其傳輸如此大的字節數,以太網封裝的鏈路層也是不允許的,以太網封裝的鏈路層,最大允許承載的IP數據報長度為1500字節。并且主機也要求不能接收超過576字節的數據報。該限制不會影響到TCP協議,因為TCP協議會主動將數據包分段傳輸。

標識:唯一的標識主機發送的每一份數據報,通常每發送一份數據報就會加1,在IP分片中起到順序重組的作用。

標志:標志該報文類型,在IP分片中代表該報文是否是分片報文

片偏移:分片報文中指明偏移量

生存時間TTL:設置數據報可以經過的路由跳數,每經過一個路由則減1,減到0仍為到達目的主機則丟棄該報文。可解決黑洞路由,報文一直占用帶寬的問題。TTL最大值為255.

協議:即指明IP首部后承載的協議類型,如ICMP/IGMP/TCP/UDP等,前文曾提到該字段。

首部檢驗和:僅包括IP數據報首部的檢驗和,檢驗和的計算不包含其承載的IGMP/ICMP等協議的報文內容。檢驗和可以檢驗IP數據報在傳輸過程中,首部是否出現的錯誤。RFC 1071包含了如何計算檢驗和的方法,感興趣可以了解。

源IP地址:即前文所述的32位互聯網地址,代表報文的始發主機。

目的ip地址:代表報文的目的主機。

選項:是一個任選項,可以用作以下領域,但很少被使用。

  • 安全和處理限制(詳細內容可參考RFC 1108)
  • 記錄路徑(即報文傳輸過程中,讓經過的路由器記錄其地址)
  • 時間戳(即報文傳輸過程中,讓經過的路由器記錄其時間與地址)
  • 寬松的源站選路(為數據報選定一系列必須經過的IP地址)
  • 嚴格的源站選路(與寬松的源站選路類似,但是要求只能經過指定的這些地址,不能經過其他的地址)

很少被使用且并不是所有的主機與路由器都實現了這些選項。值得注意的是選項字段必須是32位的整數倍,因為首部長度是32bit的整數倍。若未達到32位的整數倍,可以用0填充。

3.3.IP路由選路

IP協議提供的最本質的服務之一就是為報文提供選路功能。

IP層的路由功能存在兩種模式,一種是路由器模式,一種是主機模式。一般來說,主機是不作為路由器模式使用。

路由器模式與主機模式的本質區別在于系統是否轉發從網絡口接收進來的報文。若配置為主機模式,則對目的ip非本機的報文,系統做丟棄處理,而路由器則會去查找路由表(提供選路信息的轉發表),若查找到則將該報文從對應的網絡接口轉發出去,轉發之前需要更改報文的源目mac地址,且TTL-1(如前文所述,為了防止黑洞路由占用帶寬),若TTL被減為0,則做丟棄處理不轉發。兩種模式對于目的ip屬于本機或者為廣播地址(廣播地址即前文所述的5類互聯網地址中主機號為全1的互聯網地址)的報文,數據報就被送到由I P首部協議字段所指定的協議模塊進行處理。

包含選路信息的路由表中,一般都包含以下這些信息:

目的IP地址:可以是一個主機地址(即全掩碼的IP地址,主機號包含非0值,這種稱為主機路由),也可以是一個網絡地址(即非全掩碼的IP地址,主機號為全0,這種稱為網絡路由)

下一跳路由器的IP地址或直連IP的網絡地址:下一跳路由器的IP地址即報文需要轉發到的下一個網絡接口的IP地址(這個網絡接口與當前的路由器直連);而直連IP的網絡地址會直接標明該網段IP地址的路由出口,報文直接從該出口轉發(前提是該報文的目的IP必須存在,可通過ARP報文探測驗證)。

標志:指明路由的類型,例如路由是直連網絡地址還是真正的下一跳地址,路由時OSPF協議計算地址還是BGP協議學習地址等。

網絡接口:為數據報傳輸指定一個網絡接口。

IP路由選擇是逐跳地(hop-by-hop)進行的。從這個路由表信息可以看出,IP并不知道到達任何目的的完整路徑(當然,除了那些與主機直接相連的目的)。所有的I P路由選擇只為數據報傳輸提供下一站路由器的IP地址。它假定下一站路由器比發送數據報的主機更接近目的,而且下一站路由器與該主機是直接相連的。

IP路由選擇主要完成以下這些功能:

  1. 搜索路由表,尋找能與目的IP地址完全匹配的表目(網絡號和主機號都要匹配)。如果找到,則把報文發送給該表目指定的下一站路由器或直接連接的網絡接口(取決于標志字段的值)。
  2. 搜索路由表,尋找能與目的網絡號相匹配的表目。如果找到,則把報文發送給該表目指定的下一站路由器或直接連接的網絡接口(取決于標志字段的值)。目的網絡上的所有主機都可以通過這個表目來處置。例如,一個以太網上的所有主機都是通過這種表目進行尋徑的。這種搜索網絡的匹配方法必須考慮可能的子網掩碼。關于這一點我們在下一節中進行討論。
  3. 搜索路由表,尋找標為“默認(default)”的表目。如果找到,則把報文發送給該表目指定的下一站路由器。

如果上面這些步驟都沒有成功,那么該數據報就不能被傳送。如果不能傳送的數據報來自本機,那么一般會向生成數據報的應用程序返回一個“主機不可達”或“網絡不可達”(即IP協議附屬ICMP協議報文)的錯誤。

圖3-2,是我在一個路由器查看路由表的結果:

TCP/IP協議——IP協議

3-2

S代表該路由時靜態配置,不是通過協議生成。重點關注標注的三條路由,分別是主機路由、網絡路由和默認路由。查表時,優先查找主機路由表,若能匹配中,則報文直接按照查表結果轉發。若無法匹配中,則繼續查找網絡路由表,若匹配中網絡路由則按照查表結果轉發。若仍無法匹配中,查找是否存在默認路由,存在的話匹配默認路由轉發。若所有的都無法匹配中,那么丟棄該報文。

舉個例子,一個目的IP是200.1.1.2的報文進來,那么直接命中主機路由表,報文直接按照查表結果,往下一跳網絡接口IP為192.168.3.1的路由器轉發。若進來的報文目的IP為200.1.1.3,那么無法命中主機路由表,而命中了網絡路由表,那么就往下一跳網絡接口IP為192.168.4.1的路由器轉發。若進來的報文目的IP為100.1.1.2,那么既不能命中主機路由表,也不能命中網絡路由表,只能命中默認路由,那么就往下一跳網絡接口IP為101.0.0.1的路由器轉發.

這里有人可能會疑問,明顯主機路由能更精確匹配,直接全部使用主機路由就完事了,為什么還需要網絡路由的存在。這里主要考慮的是資源容量問題,硬件資源是有限的,一個路由表不可能無限大,能讓你容納那么多的主機路由。因此,網絡路由是很有必要的,網絡路由的存在大大縮減了對路由表容量的要求。

值得注意的是,在這個轉發過程中,報文中的目的IP地址始終都未修改(使用源路由選項時會修改,但這種情況很少出現),所有的路由決策都是通過這個目的IP來決策。

3.4.子網尋址與子網掩碼

現在所有的主機都要求支持子網尋址(RFC 950規定)。不再把一個互聯網IP地址單純的認作由網絡號與主機號組成,而是將主機號再次進行劃分,主機號分為子網號和主機號兩部分。這么做的主要好處在于使得互聯網地址的使用更加靈活,因為往往一個網絡號后是用不了這么多主機的,例如B類的互聯網地址,有16位的主機號,即可以包含2^16的主機數量,而往往這一個網絡號下不會存在這么多主機,存在極大的浪費。圖3-3展示了B類地址的一種子網編址方式。

TCP/IP協議——IP協議

3-3

這種對B類地址的子網劃分是比較典型的劃分方法,這種方式在利用點分十進制的方式表示IP地址時,可以很容易的區分子網號和主機號。大部分對互聯網地址的劃分都是對B類互聯網地址的劃分,其實對C類地址也是可以劃分的,只是C類地址的主機號本身只有8位,可用來劃分的位數較少。不止C類地址,A類地址也是經常會被劃分。

總結一句,這種劃分子網的方式非常靈活,不一定需要8位一個整體的劃分,可以通過子網掩碼來精確劃分到具體的位。例如一個A類地址表示成40.40.40.2/24,那么24就標識前24位屬于網絡號+子網號,而我們知道A類地址的網絡號只有8位,可以知道該地址的網絡號為前8位,即40,而子網號有16位,即40.40,主機號為2。掩碼有一種經常使用的表示方法,40.40.40.2/24這個也可以等價表示為40.40.40.2 255.255.255.0,其中255.255.255.0就是我們所說的真正的子網掩碼。

3.5.ifconfig命令與netstat命令

既然我們已經了解了所謂的IP地址與子網掩碼,那么在我們的主機上可以如何查看自己的網絡接口所屬的IP地址與相應的子網掩碼呢。

在unix系統與類unix系統(linux)上可以使用ifconfig命令查看相應的ip地址,圖3-4是我在一個linux系統上用命令查看的結果

TCP/IP協議——IP協議

3-4

可以看到存在多個網絡接口,分別分配有B類地址,C類地址與環回地址,其中netmask即子網掩碼,可以發現在這臺主機上,子網掩碼與互聯網地址的網絡號位數相同。同時可以發現,各個網絡接口的MTU最大值為1500(前文鏈路層所述,以太網接口的IP數據報MTU范圍為46-1500),而環回接口的MTU為65536,是IP首部所能承載的最大數據報字節數。這是因為環回接口接收的包是由本機發出,不需經過網絡傳輸(前文TCP/IP簡介所述,MTU的限制與傳輸時延相關),因此可以發最大的IP數據報。

除了ifconfig可以查詢本機網絡接口的信息,也可以通過netstat -in來查看主機的網絡接口與IP地址。

3.6.小結

本篇主要講述了

  1. IP首部的具體格式,并初步講述了各個字段的用途。
  2. IP的重要功能選路,講述了選路的原理,即根據報文的目的IP來查路由表,決策最終的報文出口。也大概講述了主機與路由器在處理報文時的差別。
  3. 介紹了子網以及子網掩碼的概念
  4. 講述了在系統上查閱主機網絡接口的兩條重要命令,ifconfig與netstat

分享到:
標簽:協議 IP
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定