計算機網絡-4-3-ARP地址解析協議以及IP數據報不可變組成部分


地址解析協議ARP

​ 在實際的應用中,我們會經常遇見這樣的一個問題:我們已知一個機器(主機或者路由器的),我們怎么獲取相應的硬件地址?,地址解析協議就是用來解決這個問題的。

  1. ARP協議的作用:

    • image
    • 由上圖可知:
      1. 首先ARP協議划歸為網絡層,但是ARP協議是為了從網絡層使用的IP地址,解析出在數據鏈路層的MAC地址,因此有的書也會把ARP協議划分到數據鏈路層。
  2. ARP協議的要點

    1. 網絡層使用的是IP地址,但在實際的鏈路層傳輸數據幀我們使用的是MAC地址。在一個網絡上可能會有新的主機加入或者舊的主機撤去。除此之外更換網絡適配器也會導致MAC地址發生變化。ARP地址解析協議解決這個問題的方法是在主機ARP高速緩存中存放一張IP地址到MAC地址的映射表,而且這個表還要動態更新(添加或者刪除)

    2. 每個主機都有一個ARP高速緩存(ARP cache),里面有着本局域網的各個主機和路由器的IP地址到硬件地址的映射表,這些都是該主機目前知道的一些地址。那么主機該怎么知道這些地址呢?

      • image
          1. ARP進程在本局域網內廣播發送一個ARP請求分組。ARP請求分組的主要內容是:我的IP是209.0.0.5,我的MAC地址為00-00-C0-15-AD-18,我想知道IP地址為209.0.0.6的MAC地址為多少?
          1. 在本局域網所有的主機運行的ARP進程都會收到這條此ARP請求分組。
          1. 在主機B的IP地址與ARP請求分組中要查詢的IP地址一致,就收下這個ARP請求分組,並向主機主動發送一個ARP響應分組,同時在這個ARP響應分組寫入自己的MAC地址。由於其他主機的IP地址和ARP請求要查詢的IP地址不一樣,因此都不會理會這個ARP請求分組。
            *image
        • 注意:
          • ARP請求分組是廣播,但是ARP響應分組單播,就從源地址發送到一個目的地址。
          1. 主機A收到這個ARP響應分組后,就在自己本地的ARP緩存中寫入主機B的IP地址到MAC地址的映射。同理,當主機B在接收到這個主機A發送過來的ARP請求分組時也會在主機B本地的ARP緩存中寫入主機A的IP地址到MAC地址的映射。
        • 可見。ARP高速緩存是非常的有用,如果不使用ARP高速緩存,那么任何一台主機只要進行一次通信,就必須要使用ARP協議廣播ARP請求分組,只會導致網絡上的通信量大大增加。ARP把已經得到的地址映射寫入高速緩存中,這樣該主機下次再和具有同樣目的主機進行通信的時候,可以直接從緩存中獲取到硬件地址。
      • ARP對保存在緩存中的每一個地址映射項都設立了一個生存周期(TTL),凡是超過TTL項都會被從高速緩存中清除掉,,然后會重新廣播獲取最新的IP地址與MAC地址映射記錄。
    3. ARP協議解決的是同一個局域網內的主機或者路由器IP地址和硬件地址之間的映射關系。如果要找的目標主機和源主機不在同一個網段內,就無法解析出另一個局域網上主機的MAC地址

    4. ARP的四種經典情況

    image

    1. 發送方是主機(H1),要把IP數據報發送到同一個網絡的另一台主機(H2),這時候H1發送一個ARP請求分組報文找到目的主機H2的MAC地址.
    2. 發送主機是(H2),要把IP數據報發送到另一個網絡上的主機(H3/H4),這時(H1)發送一個ARP請求分組在局域網1內廣播,找到局域網1 的路由器R1的MAC地址,剩下的工作交給路由器R1來完成。R1要做的是3和4.
    3. 發送方是路由器(R1),要把數據報發送給與R1連接在同一個網絡上的主機(H3),這時候路由器R1會發送一個ARP請求分組在局域網2內廣播,找到主機(H3)的MAC地址。
    4. 發送方是路由器R1,要把IP數據包報轉發到網絡3上的一台主機,如(H4),由於H4主機與R1路由器不是在同一個網段內,這時候路由器R1會發送一個ARP請求分組給路由器R2,剩下的步驟和3類似。

IP數據報的格式

  1. IP數據報的格式
    • image
    • IP數據報長度為4個字節,也就是32位
    • IP數據報是由報首和數據兩部分組成。
      • 首部包括20個字節的固定長度和可選字段
        • (1:)版本占4位。指的是IP協議的版本。通信雙方必須要使用相同的IP協議版本。目前廣泛使用的是IP協議版本是IPV4和和IPV6
        • (2:)首部長度占用4位,可以表示最大的1111(15)
        • (3:)區分服務占用8位,用來獲取更好的服務,這個字段只有在使用區分服務的時候才起作用。
        • (4:)總長度占用16位,指的是首部和數據之和的長度。單位為字節,總長度字段為16位,因此數據報的長度為(2^16)-1=65535字節,但在現實生活中確實很少遇到。
    • 在網絡層的下面數據鏈路層,規定了一個數據幀中的數據字段最大傳送單元MTU,當一個IP數據報文封裝成鏈路層的幀的時候,此數據報的長度,一定不能超過數據鏈路成所規定的MTU值。最常用的以太網規定其MTU最大值為1500字節。如果傳輸的數據報長度超過數據鏈路層的MTU值,就必須把過長的數據報進行分片處理。
    • 雖然使用盡可能長的IP數據報會使得傳輸效率更高一些(因為內一個IP數據報中首部長度占數據報總長度的比例小一些),但數據報短些也有好處。每一個IP數據報越短,路由器轉發的速度越快。為此,IP協議規定,在互聯網中所有的主機和路由器,必須能夠接受長度不能超過576字節的數據報,這是假定上層交下來的數據長度有512字節(合理的長度),加上最長部分的IP數據報首部60字節再加上4個字節的富余量,就得到了576字節。當主機需要發送576字節的數據報的時候。應當需要先詢問目標主機能否接受所要發送的數據報長度,否則,就要進行分片
      • (5:)標識占16位,IP軟件在存儲器中維持一個計數器,每產生一個數據報,計數器就+1 ,但是這個並不是序號,因為IP是無連接服務,數據報不存在按序接收的問題,當數據報由於長度超過網絡的MTU而必須分片的時候,這個標識的字段的值就會被復制到所有的數據報片的標識字段中,相同標識字段的值使得分片后最后能夠正確的重裝為原來的數據報。
      • (6:)標志(Flag)占3位,只有兩位有意義
        • 最低位MF(more fragment):當MF=1時候表示后面還有分片,當MF=0表示這已經是最后一個數據報片。
        • 中間位DF(don't fragment)意思之不能再分片,只有當DF=0才允許分片。
      • (7:)片偏移:占13位,較長的分組在分片后,某片在原分組中的相對位置,也就是說,相對與用戶數據字段的起點,該片從何時開始。片偏移以8個字節為便宜單位,也就是說:每個分片的長度一定是8字節的整數倍。
      • (8:)生存周期TTL:占8位,表明這是數據報在網絡中的壽命,稱之為跳數限制。目的就是為了防止在路由器之間無限轉圈導致白白耗費網絡資源。每經過一個路由器,TTL就-1,當TTL=0,路由器就會丟掉這個IP數據報,一般TTL默認為16
      • (9:)協議,占8位,協議字段指的是此數據報所攜帶的數據是使用的何種協議,以便於目的主機的IP層知道應將數據部分上交給哪一個協議來處理。
        • image
      • (10:)首部校驗和:占16位,這個字段只檢驗數據報的首部,不包括數據本身部分,這是因為數據報每經過一次路由器,路由器都會重新計算生存周期,標志,偏移量等等,不檢驗數據部分可以減少路由器的工作量。除此之外,為了減少校驗工作量,IP數據報的首部校驗和並不會使用CRC檢驗碼,而是采用從下面簡單的校驗方式:
        • image
        • (1)在發送方,先把IP數據報首部划分為許多16位子的序列,並把檢驗和字段設置為0,用反碼算數()把所有16位字相加后,將得到的和的反碼寫入檢驗校驗和中,接收方收到數據報之后,把首部的所有16位字在使用反碼算相加一次,將得到的和取反碼,即得到接收端檢驗和的計算結果。若首部未發生變化,則檢驗和必然為0,於是就保留這個數據報,否則認為出錯,就直接丟棄。
      • (11:)源地址 占32位
      • (12:)目的地址 占32位
    • 以上就是IP數據報不可變組成部分。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM