TCP/IP基礎(三)

TCP/IP基礎(三) – IP協議相關技術

DNS

由於IP地址不便記憶,在最開始的時候,人們用一種叫做hosts的數據庫文件來記錄IP和主機名的關係。在互聯網的起源ARPANET中,起初由互聯網信息中心(SRINIC)整體管理一份hosts文件。如果新增一臺計算機接入到ARPANET網或者已有的某臺計算機要進行IP地址變更,中心的這個hosts文件就得更新,而其他計算機則不得不定期下載最新的hosts文件才能正常使用網絡。然而,隨着網絡規模的不斷擴大、接入計算機的個數不斷增加,使得這種集中管理主機名和IP地址的登錄、變更處理的可行性逐漸降低。後面這個hosts文件逐漸演變成DNS系統。

域名的構成

域名是指爲了識別主機名稱和組織機構名稱的一種具有分層的名稱。
例如,倉敷藝術科學大學的域名如下:kusa.ac.jp

  • kusa 表示倉敷藝術科學大學(Kurashiki University ofScience and the Arts)固有的域名。
  • ac 表示大學(academy)或高等專科以及技術專門學校等高等教育相關機構。
  • jp 則代表日本(japan)。

在使用域名時,可以在每個主機名後面追加上組織機構的域名(持有域名的組織機構可以設置自己的子網,此時的子域名要介於主機名和域名之間) 。
例如,有pepper、piyo、kinoko等主機時,它們完整的帶域名的主機名將呈如下形式:

  • pepper.kusa.ac.jp
  • piyo.kusa.ac.jp
  • kinoko.kusa.ac.jp

域名的樹形結構:
yuming
每一級域名都對應有域名服務器:
fuwiqi

DNS查詢

chaxun

ARP

ARP(Address Resolution Protocol) 是一種解決地址問題的協議。以目標IP地址爲線索,用來定位下一個應該接收數據分包的網絡設備對應的MAC地址。如果目標主機不在同一個鏈路上時,可以通過ARP查找下一跳路由器的MAC地址。不過ARP只適用於IPv4,不能用IPv6。IPv6中可以用ICMPv6替代ARP發送鄰居探索消息。

ARP的工作機制

假定主機A向同一鏈路上的主機B發送IP包,主機A的IP地址爲172.20.1.1,主機B的IP地址爲172.20.1.2,它們互不知道對方的MAC地址。
主機A爲了獲得主機B的MAC地址,起初要通過廣播發送一個ARP請求包。這個包中包含了想要了解其MAC地址的主機IP地址。也就是說,ARP請求包中已經包含了主機B的IP地址172.20.1.2。由於廣播的包可以被同一個鏈路上所有的主機或路由器接收,因此ARP的請求包也就
會被這同一個鏈路上所有的主機和路由器進行解析。如果ARP請求包中的目標IP地址與自己的IP地址一致,那麼這個節點就將自己的MAC地址塞入ARP響應包返回給主機A。
arp
總之,從一個IP地址發送ARP請求包以瞭解其MAC地址(ARP請求包還有一個作用,那就是將自己的MAC地址告訴給對方。) ,目標地址將自己的MAC地址填入其中的ARP響應包返回到IP地址。由此,可以通過ARP從IP地址獲得MAC地址,實現鏈路內的IP通信。

ICMP

  • CMP的主要功能包括,確認IP包是否成功送達目標地址,通知在發送過程當中IP包被廢棄的具體原因,改善網絡設置等。

在IP通信中如果某個IP包因爲某種原因未能達到目標地址,那麼這個具體的原因將由ICMP負責通知。
如下圖,主機A向主機B發送了數據包,由於某種原因,途中的路由器2未能發現主機B的存在,這時,路由器2就會向主機A發送一個ICMP包,說明發往主機B的包未能成功。ICMP的這種通知消息會使用IP進行發送。因此,從路由器2返回的ICMP包會按照往常的路由控制先經過路由器1再轉發給主機A。收到該ICMP包的主機A則分解ICMP的首部和數據域以後得知具體發生問題的原因。
**Note:**在ICMP中,包以明文的形式像TCP/UDP一樣通過IP進行傳輸。然而,ICMP所承擔的功能並非傳輸層的補充,而應該把它考慮爲IP的一部分。
icmp

ICMP消息類型

CMP的消息大致可以分爲兩類:一類是通知出錯原因的錯誤消息,另一類是用於診斷的查詢消息。
leixing

  • ICMP目標不可達消息(類型3)

IP路由器無法將IP數據包發送給目標地址時,會給發送端主機返回一個目標不可達(Destination Unreachable Message)的ICMP消息,並在這個消息中顯示不可達的具體原因,如下表所示。
bukeda

  • ICMP重定向消息(類型5)
    如果路由器發現發送端主機使用了次優的路徑發送數據,那麼它會返回一個ICMP重定向(ICMP Redirect Message)的消息給這個主機。
    在這個消息中包含了最合適的路由信息和源數據。這主要發生在路由器持有更好的路由信息的情況下。路由器會通過這樣的ICMP消息給發送端主機一個更合適的發送路由。
    cdx

  • ICMP超時消息(類型11)
    IP包中有一個字段叫做TTL(Time To Live,生存週期),它的值隨着每經過一次路由器就會減1(當IP包在路由器上停留1秒以上時減去所停留的秒數,但是現在絕大多數設備並不做這樣的處理。) ,直到減到0時該IP包會被丟棄。此時,IP路由器將會發送一個ICMP超時的消息(ICMP Time Exceeded Message,錯誤號0(錯誤號1表示將被拆分包做重構處理時超時。) )給發送端主機,並通知該包已被丟棄。
    設置IP包生存週期的主要目的,是爲了在路由控制遇到問題發生循環狀況時,避免IP包無休止地在網絡上被轉發。此外,有時可以用TTL控制包的到達範圍,例如設置一個較小的TTL值。

  • ICMP回送消息(類型0、8)
    用於進行通信的主機或路由器之間,判斷所發送的數據包是否已經成功到達對端的一種消息。可以向對端主機發送回送請求的消息(ICMP Echo Request Message,類型8),也可以接收對端主機發回來的回送應答消息(ICMP Echo Reply Message,類型0)。網絡上最常用的ping命令(Packet InterNetwork Groper,判斷對端主機是否可達的一種命令。) 就是利用這個消息實現的。
    icmpxxxx

NAT

NAT定義

NAT(Network Address Translator)是用於在本地網絡中使用私有地址,在連接互聯網時轉而使用全局IP地址的技術。除轉換IP地址外,
還出現了可以轉換TCP、UDP端口號的NAPT(Network Address PortsTranslator)技術,由此可以實現用一個全局IP地址與多個主機的通信(通常人們提到的NAT,多半是指NAPT。NAPT也叫做IP僞裝或MultiNAT。)

nat

NAT的工作機制

如下圖所示,以10.0.0.10的主機與163.221.120.9的主機進行通信爲例。利用NAT,途中的NAT路由器將發送源地址從10.0.0.10轉換爲全局的IP地址(202.244.174.37)再發送數據。反之,當包從地址163.221.120.9發過來時,目標地址(202.244.174.37)先被轉換成私有IP地10.0.0.10以後再被轉發(在TCP或UDP中,由於IP首部中的IP地址還要用於校驗和的計算,因此當IP地址發生變化時,也需要相應地將TCP、UDP的首部進行轉換) 。
在NAT(NAPT)路由器的內部,有一張自動生成的用來轉換地址的表。當10.0.0.10向163.221.120.9發送第一個包時生成這張表,並按照表中的映射關係進行處理。
444

NAT的潛在問題

由於NAT(NAPT)都依賴於自己的轉換表,因此會有如下幾點限制:

  • 無法從NAT的外部向內部服務器建立連接(雖然可以指定端口號允許向內部訪問,但是數量要受限於全局IP地址的個數。) 。
  • 轉換表的生成與轉換操作都會產生一定的開銷。
  • 通信過程中一旦NAT遇到異常需重新啓動時,所有的TCP連接都將被重置。
  • 即使備置兩臺NAT做容災備份,TCP連接還是會被斷開。
發佈了26 篇原創文章 · 獲贊 0 · 訪問量 2852
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章