第4章 網際層

第4章 網際層

尋址與發送

計算機經過網絡接口設備好比網絡適配器與網絡進行通訊,網絡接口設備具備惟一的物理地址,用於接收發向該地址的數據。像以太網網卡這樣的設備對於上層協議層的細節是一點也不瞭解的,它不知道IP地址,它只是監聽是否收到了數據幀,發現其中目標地址與本身物理地址相符的幀,並把這個幀傳遞給上層協議棧。緩存

這種物理尋址方式適合單個局域網網段。由不間斷介質鏈接在一塊兒的若干臺計算機利用物理地址就能夠實現所需的功能。網絡

可是,在路由式網絡中不能利用物理地址實現數據傳輸,由於根據物理地址進行傳輸所需的過程不能跨越路由接口來運行。即便這樣是可行的,根據物理地址傳輸數據也是很是麻煩的,由於內置在網卡里的固定物理地址不能在地址空間上引入邏輯結構測試

所以,TCP/IP隱藏了物理地址,以一種邏輯化的尋址方式對網絡進行組織。這個邏輯尋址方案由網際層的IP協議維護。ARP是另外一種網際層協議,它維護一個表格,用於把IP地址映射到物理地址。這個ARP錶鏈接了IP地址與網卡物理地址。調試

發送數據的過程:排序

  1. 若是目的地址與源地址是同一個網段,源計算機就把數據包直接發送給目的計算機。IP地址被ARP解析爲物理地址,數據被直接發送到目的網絡適配器
  2. 若是目的地址與源地址不在一個網段上,就執行以下過程。
    1. 直接將數據報發送到網關。網關是位於局域網網段的一個設備,可以把數據報轉發到其餘網段。網關地址被ARP解析爲物理地址,數據被髮送到網關的適配器
    2. 數據報經過網關被路由到較高級別,再次重複上述過程。若是目的地址在這個新網段,數據就被髮送到目的,不然數據報就會被髮送到另外一個網關。

網絡協議(IP)

IP協議提供了一種分層的、與硬件無關的尋址系統,具備在複雜的路由式網絡中傳遞數據所需的服務。每一個網絡適配器都有一個惟一的IP地址接口

IP地址分爲兩個部分:ip

  • 網絡ID
  • 主機ID內存

  • A類地址使用地址前8位做爲網絡ID
  • B類地址使用前16位做爲網絡ID
  • C類地址使用前24位做爲網絡ID路由

IP報頭字段

每一個IP數據報都以一個IP報頭開始。源計算機構造這個報頭的目的是TCP軟件利用IP報頭中封裝的信息處理數據。IP報頭的最小長度是20字節。報頭字段以下:同步

  • 版本:這個4位的字段表示所使用的IP版本。目的IP版本是4,相應的二進制是0100
  • 網際報頭長度(IHL):這個4位字段表示IP報頭以32字爲單位的長度。
  • 服務類型:源IP可以指定特殊的路由信息。這個8位字段的主要用途是對等待經過路由器的數據報區分優先級
  • 總長度:這個16位的字段表示IP數據報的長度,單位爲字節。
  • 標識:這個16位的字段是一個依序變大的數值,分配給源IP發出的信息。當傳遞到IP層的消息太大而不能放到一個數據報裏時,IP會把消息拆分到多個數據報,並對這些數據報排序分配相同的標識號。
  • 標記:這個字段表示字段分段可能性。
  • 分段位移:這個13位的字段是一個數值,被賦予每一個連續的字段。目的設備的IP利用這個值重組分組。
  • 生存時間(TTL):這個字段表示數據報在被拋棄以前可以保留的時間或路由器跳數。每一個路由器都會檢查這個字段,而且至少把它減去1,或數據報在路由器延遲的秒數。當這個字段的值爲0時,數據報會被拋棄。

IP尋址

IP地址是一個32位的地址,被分爲4個8位段(八位組)。人們不習慣使用32位的二進制地址或8位的二進制八位組,因此IP地址最經常使用的表達形式是「點分十進制形式」。在這種形式裏,每一個八位組都以相應的十進制數值表示,4個十進制數值以句號分割。

IP地址一部分是網絡ID,另外一部分是主機ID。劃分網絡ID和主機ID最初方案是使用地址分類。最近出現的CIDR無類別尋址下降了地址分類的重要性,但做爲理解TCP/IP尋址的一個出發點,地址分類仍是值得討論的。

地址分類系統把IP地址劃分到不一樣的地址類。絕大多數IP地址屬於如下幾類

  • A類地址前8位表示網絡ID,後24位表示主機ID
  • B類地址前16位表示網絡ID,後16位表示主機ID
  • C類地址前24位表示網絡ID,後8位表示主機ID

關於D類和E類地址:

  • D類地址用於多播。多播是把一個消息發送到網絡的子網。D類地址最前面的4位是1110
  • E類網絡是實驗性質的,通常不用於生產環境。最前面5位是11110。

怎麼判斷二進制地址的前幾個位說明了地址屬於哪一類?

  • 若是32位的地址以0開頭,它就是A類地址
  • 若是32位的地址以10開頭,它就是B類地址
  • 若是32位的地址以110開頭,它就是C類地址

特殊的IP地址

全0的主機ID表示網絡自己。好比IP地址129.152.0.0是指網絡ID爲129.152的B類網絡。

全1的主機ID表示廣播。廣播是向網絡中所有主機發送的消息。IP地址129.152.255.255就是網絡ID爲129.152的B類網絡的廣播地址

以十進制127開頭的地址是環回地址。目的地址爲環回地址的消息是由本地軟件發送的,其目的在於測試TCP軟件是否工做正常

RFC1597保留了一些IP地址範圍用於私有網絡,其設想是,這些私有網絡不會鏈接到internet,因此沒必要要求是惟一的。目前,這些私有地址範圍常常用於「網絡地址轉換」設備背後的受保護網絡。

  • 10.0.0.0~10.255.255.255
  • 172.16.0.0~172.31.255.255
  • 192.168.0.0~192.168.255.255

因爲私有地址範圍沒必要與其他地址同步,因此整個地址範圍對於任何網絡都是可用的,網絡管理員利用這些私有地址能夠得到更大的子網空間和可用地址範圍。

地址解析協議(ARP)

網段上每臺主機在內存中都保存着一個被稱爲ARP表或ARP緩存的表格,其中包含網段上其餘主機IP與其物理地址對應關係。當主機須要向網段上的其餘主機發送數據時,它會查看ARP緩存來得到目的的物理地址。若是要接收數據的地址當前並不存在於ARP緩存,主機就會發送一個名爲ARP請求幀的廣播。

ARP請求幀包含未解析的IP地址,還包含發送這個請求的主機IP和物理地址。網段上的其餘主機接收到這個ARP請求,未解析IP地址的主機會向發出請求的主機發送主機的物理地址。這個新的IP地址與物理地址的對應關係就會添加到請求主機的ARP緩存裏。

通常來講,ARP緩存裏的條目在必定時間以後會過時,條目就會被從表裏刪除。當主機須要向這個條目所包含的IP地址發送數據時,解析過程會再次重複

逆向ARP(RARP)

RARP的含義是逆向ARP,也就是ARP的逆過程。當咱們知道IP地址而不是物理地址時,可使用ARP;而在知道物理地址而不知道IP地址時,則應使用RARP。

Internet控制消息協議(ICMP)

發送到遠程計算機的數據一般會通過一個或多個路由器,這些路由器在把數據傳輸到最終目的地的過程當中可能發生多種問題。路由器利用Internet控制消息協議(ICMP)消息把問題通知給源IP。ICMP還有用於其餘調試和排錯的功能。

下面列出了最多見的ICMP消息:

  • Echo Request(回顯請求)和Echo Reply(回顯應答):ICMP常常被用於測試,好比測試鏈接的ping命令實際上就是在使用ICMP。ping向某個IP地址發送一個數據報,而且要求目的計算機在響應中返回所發送的數據
  • Source Quench(源抑制):若是一臺高速計算機向遠程計算機發送大量數據,可能使路由器產生過載。這時路由器能夠利用ICMP向源IP發送Source Quench消息,讓它下降發送發送數據的速度。
  • Destination Unreachable(目的不可到達):若是路由器收到一個不能傳遞的數據報,源IP就會返回一個Destination Unreachable消息
  • Time Exceeded(超時):當數據報因爲TTL爲0而被拋棄時,ICMP就會向源IP發送這個消息
  • Fragmentation Needed(須要分段):若是一個數據報的「Don't Fragment」位被設置爲1。
相關文章
相關標籤/搜索