熱點推薦:
您现在的位置: 電腦知識網 >> 電腦常識 >> 正文

TCP/IP基礎:IP位置

2013-11-11 12:58:26  來源: 電腦常識 

  網際網路協定( IP )是整個 TCP/IP 協定的基礎﹐它的一些功能在前面的介紹 OSI 和 TCP/IP 模型的時候已經略略提過了﹐不過﹐由於它的重要性實在太值得了解﹐因此我們在這裡再深入的探討一下網際網路層的協定而事實上若 IP 這個環節若不過關的話我會勸您別償試網路相關的工作了否則會桶苦一輩子!
  大體而言網際網路協定的功能包括如下﹕
  · 定義資網際網路中傳輸的基本單位
  · 定義網際網路的定址方式
  · 負責網路存取層和傳送層之間的資料傳遞
  · 決定資料傳送的路由路徑
  · 執行資料的分解和重組
  這層協定主要要做的事情﹐是將從傳送層傳來的資料准確的送到遠端機器上讓我們溫習一下剛學過的 ARP 協定﹐我們知道當主機獲得應該 IP 後﹐如果在 ARP 表格中找不到目的主機的實體位址的時候(因為底層的傳送是以實體位址為依據的)﹐那麼就理由 ARP 協定是以廣播的方式去尋問對方的實體位址不過﹐這裡有一個限制﹕廣播封包是有限制的﹐只能在同一個網段( segment )上的節點才能收到廣播封包假如當我們有一個封包﹐從教室傳到網際網路上地球另一邊的主機﹐那這時候要如何處理呢﹖
  Okay﹐這就是 IP 協定要解決的問題了讓我們先看看 IP 封包的格式吧
  IP 封包表頭格式
  首先﹐讓我們看看IP封包的組成部份﹐以及各部件的長度﹕
   
  在上圖中﹐括號之內的數字就是各部件的長度 (bit)﹐如果您夠細心﹐就會計算得出每一行的總長度都是 bit事實上真正的封包是有連續的位元依序排列在一起的之所以分行完全是因為排版的關系下面我們分別對各部件名稱解釋一下﹕
  Version
  版本 (VER)表示的是 IP 規格版本﹐目前的 IP 規格多為版本 (version )﹐所以這裡的數值通常為 x (注意﹕封包使用的數字通常都是十六進位的)
  Internet Header Length
  標頭長度 (IHL)我們從 IP 封包規格中看到前面的 行為 header ﹐如果 Options 和 Padding沒有設定的話﹐也就只有 行的長度﹔我們知道每行有 bit ﹐也就是 byt e﹔那麼 列就是 byte 了 這個數值換成 進位就成了 x﹐所以﹐當封包標頭長度為最短的時候﹐這裡數值會被換算為 x
  Type of Service
  服務類型 (TOS)這裡指的是 IP 封包在傳送過程中要求的服務類型﹐其中一共由 個 bit 組成﹐每組 bit 組合分別代表不同的意思﹕
   
  Total Length
  封包總長 (TL)通常以 byte 做單位來表示該封包的總長度﹐此數值包括標頭和數據的總和
  Identification
  識別碼 (ID)每一個IP封包都有一個 bit 的唯一識別碼我們從 OSI 和 TCP/IP 的網路層級知識裡面知道﹕當程式產生的數據要通過網路傳送時﹐都會在傳送層被拆散成封包形式發送﹐當封包要進行重組的時候﹐這個 ID 就是依據了
  Flag
  旗標 (FL)這是當封包在傳輸過程中進行最佳組合時使用的 個 bit 的識別記號請參考下表﹕
   當此值為 的時候﹐表示目前未被使用
   當此值為 的時候﹐表示封包可以被分割﹐若為 則不能被分割
   當上一個值為 時﹐此值為 就示該封包是最後一個封包﹐如果為 則表示其後還有被分割的封包
  Fragment Offset
  分割定位 (FO)當一個大封包在經過一些傳輸單位(MTU)較小的路徑時﹐會被被切割成碎片(fragment) 再進行傳送(這個切割和傳送層的打包有所不同﹐它是由網路層決定的)由於網路情況或其它因素影響﹐其抵達順序並不會和當初切割順序一至的所以當封包進行切割的時候﹐會為各片段做好定位記錄﹐所以在重組的時候﹐就能夠依號入座了
  如果封包沒有被切割﹐那麼 FO 的值為
  
  Time To Live
  存活時間 (TTL)這個 TTL 的概念﹐在許多網路協定中都會碰到當一個封包被賦予 TTL 值(以秒或跳站數目(hop)為單位)﹐之後就會進行倒數計時在 IP 協定中TTL 是以 hop 為單位每經過一個 router 就減一)﹐如果封包 TTL 值被降為 的時候﹐就會被丟棄這樣﹐當封包在傳遞過程中由於某些原因而未能抵達目的地的時候﹐就可以避免其一直充斥在網路上面有只叫做 traceroute 的程式﹐就是一個上佳的 TTL 利用實作﹐我們會在後面的章節裡面討論
  Protocol
  協定(PROT)這裡指的是該封包所使用的網路協定類型﹐例如﹕ICMP 或 TCP/UDP 等等要注意的是﹕這裡使用的協定是網路層的協定﹐這和上層的程式協定(如﹕FTP﹑HTTP 等)是不同的您可以從 Linux 的 /etc/protocol 這個檔案中找到這些協定和其代號﹔其內容如下﹕
  
  ip       IP       # internet protocol pseudo protocol number
  icmp      ICMP      # internet control message protocol
  igmp      IGMP      # Internet Group Management
  ggp       GGP       # gatewaygateway protocol
  ipencap     IPENCAP    # IP encapsulated in IP (officially ``IP)
  st       ST       # ST datagram mode
  tcp       TCP       # transmission control protocol
  egp       EGP       # exterior gateway protocol
  pup      PUP       # PARC universal packet protocol
  udp      UDP       # user datagram protocol
  hmp      HMP       # host monitoring protocol
  xnsidp    XNSIDP     # Xerox NS IDP
  rdp      RDP       # reliable datagram protocol
  isotp    ISOTP     # ISO Transport Protocol class
  xtp      XTP       # Xpress Tranfer Protocol
  ddp      DDP       # Datagram Delivery Protocol
  idprcmtp       IDPRCMTP    # IDPR Control Message Transport
  rspf     RSPF      #Radio Shortest Path First
  vmtp     VMTP      # Versatile Message Transport
  ospf     OSPFIGP     # Open Shortest Path First IGP
  ipip     IPIP      # Yet Another IP encapsulation
  encap     ENCAP      # Yet Another IP encapsulation
  
  Header Checksum
  標頭檢驗值(HC)這個數值主要用來檢錯用的﹐用以確保封包被正確無誤的接收到當封包開始進行傳送後﹐接收端主機會利用這個檢驗值會來檢驗余下的封包﹐如果一切看來無誤﹐就會發出確認信息﹐表示接收正常
  Source IP Address
  來源位址(SA)相信這個不用多解釋了﹐就是發送端的 IP 位址是也﹐長度為 bit
  Destination IP Address
  目的地位址(SA)也就是接收端的 IP 位址﹐長度為 bit
  Options & Padding
  這兩個選項甚少使用﹐只有某些特殊的封包需要特定的控制﹐才會利用到這裡也不作細表啦
  前面所介紹的 IP 封包格式﹐請花點時間研究一下﹐因為在日後的網路生涯中﹐許多概念都要求設計者非常了解 IP 和 TCP 封包(標頭)的結構﹐例如﹕防火牆設定和 socket 程式設計
  IP 位址
  當我們知道 IP 封包結構之後﹐接著我們就要接觸一個在 TCP/IP 網路管理中最重要的一個概念﹕ 子網切割( subnetting ) 子網路這個名詞我們前面不斷的碰到過﹐或許同學們心裡都很納悶它究竟是什麼東東?不過﹐在真正了解子網路的定義之前﹐我們必須要先了解的一個概念是 IP 位址
  IP 位址雖然只有 組用小點 () 分開的數字(IP v)﹐然而它卻是整個 TCP/IP 協定的基石如果我們在討論 TCP/IP 網路的時候﹐不知道 IP 位址的各個數字代表什麼意思﹐那就什麼都免談了
  那我們如何解讀出 IP 位址所隱含的深刻意思呢﹖首先我們要具備一定的數學和邏輯基礎﹐下面兩個概念是一定要知道的﹕十進位和二進位的換算﹐以及基本邏輯運算這裡不打算討論十進位和二進位的換算了﹐如果您忘記了﹐請回學校問問數學老師吧然而﹐邏輯運算也不打算詳細討論了﹐下面只把在學習 IP 子網計算所需的幾個運算﹐作一簡單歸納而已﹕
   
  如果不知道它們的工作原理﹐那麼以後我們在討論 IP 位址和子網的時候﹐您就只能靠死記一途了不過一旦你知道了其原理﹐那麼您在任何的 IP 網路中都不至於迷失﹐所謂萬變不離其宗是也
  我們在前面講述網路存取層的時候﹐層介紹過 ifconfig 命令來查找界面實體位址事實上在命令的輸出結果裡面﹐還包含了一個非常重要的資訊﹕inet addr 和 Mask﹕
  eth  Link encap:Ethernet HWaddr :A:C::EA:    inet addr: Bcast: Mask:    UP BROADCAST RUNNING MULTICAST MTU: Metric:    RX packets: errors: dropped: overruns: frame:    TX packets: errors: dropped: overruns: carrier:    collisions: txqueuelen:    Interrupt: Base address:xeth  Link encap:Ethernet HWaddr ::C::C:A    inet addr: Bcast: Mask:
From:http://tw.wingwit.com/Article/Common/201311/4675.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.