网际协议:动态主机配置协议(DHCP)和NAT
一、DHCP
某組織一旦獲得了一塊地址,它就可以為本組織內的主機與路由器接口逐個分配IP地址。
主機地址可以手動配置,但是這項任務目前通常更多的是使用動態主機配置協議(DHCP)。
DHCP允許一個主機自動獲取以下信息:IP地址、子網掩碼、默認網關、DNS地址。
該協議支持即插即用,即一個新的網絡設備加入網絡時不需要重新啟動該協議。
1、DHCP工作過程
對于一臺新到達的主機而言,針對上圖所示的網絡設置,DHCP協議是一個4個步驟的過程,如下圖所示。
(1)DHCP服務器發現:當一個筆記本連入網絡時,它需要請求IP地址,首先客戶在UDP分組中向端口67發送DHCP發現報文(DHCP discover),這個消息聲明自己的存在;src是0.0.0.0這是因為筆記本也不知道自己的IP地址。目的地址是255.255.255.255廣播地址,會生成一個廣播幀,而這個廣播幀會在局域網廣播。
(2)DHCP服務器提供:當DHCP發現報文被同一個局域網的DHCP服務器收到時,它會返回一個DHCP提供報文(DHCP offer)。這個報文的目的地址仍然是廣播地址。DHCP offer消息中還有收到的DHCP discover報文的事務ID 號、向客戶主機推薦的IP地址、網絡掩碼、IP地址租用期等信息。
(3)當筆記本收到來自DHCP服務器的DHCP offer消息時,它會返回DHCP請求報文(DHCP request)進行IP地址的請求。
(4)DHCP ACK:最后服務器用DHCP ACK消息對請求進行響應。
我們可以看到DHCP返回的不僅僅是IP地址,還包括了:
(1)客戶的第一跳路由器的地址。
(2)DNS服務器的IP地址和域名。
(3)網絡掩碼(用于指示網絡的網絡號部分和主機號部分)。
2、DHCP實例
DHCP實例:
(1)相連的筆記本請求IP地址、第一跳路由器的IP地址、DNS服務器的IP地址:使用DHCP。
(2)DHCP請求被封裝成UDP包,進而被封裝到IP包,進而被封裝為802.1以太幀。
(3)以太幀在局域網中廣播,運行DHCP服務器程序的路由器收到該廣播幀。
(4)廣播幀在DHCP服務器上逐層解封裝得到DHCP請求消息。
(5)DHCP服務器構建DHCP ACK消息,包括客戶的IP地址、第一跳路由器的IP地址、DNS的IP地址和名字。
(6)DHCP服務器封裝消息成幀,轉發給客戶,在客戶端將幀解封裝為DHCP消息。
(7)客戶目前知道了它的IP地址,第一跳路由器的IP地址,DNS服務器的IP地址和名字。
下圖為運用Wireshark抓包工具抓到的DHCP請求和響應報文:
3、IP地址分配
關于IP地址及域名的獲得:
互聯網提供商是通過向一個國際組織申請IP地址和域名的。這個組織叫做ICANN,其主要職責是分配IP地址、管理DNS、分配域名,解決糾紛。
IP地址具體怎么分配呢?即給定一個地址塊,怎么進行子網劃分,以及為每個子網分配地址段呢?
某單位從ISP處購買了一個IP地址塊202.40.70.0/24。如果該單位有3個部門,第一個部門78臺計算機,第2個和第3個部門各有48臺計算機,現在我們為這3個部門劃分子網,給出各部門的網絡號、子網掩碼和主機可分配的IP地址范圍:
因為202.40.70.0/24前24位是網絡號,后8比特是主機號可以用于分配。在后8比特中可以將其劃分為3個子網。每個子網對應一個部門。子網劃分的好處是可以進行廣播流量的隔離。子網1分配的IP地址范圍至少需要支持78臺電腦,子網2和子網3分配的IP地址范圍至少需要分別支持48臺電腦。78個IP地址至少需要用7比特來表示(因為2KaTeX parse error: Expected 'EOF', got '&' at position 1: &?6是64,不夠分配78臺電腦)。因此可以選擇用最高位為0表示子網1即前25位是網絡號,后7位是主機號;最高位為1表示子網2和子網3,那么進一步怎么區分子網2和子網3呢?48個IP地址只需要6比特來表示即可,因此可以采用次高位來區別子網2和子網3。次高位為0表示子網2,次高位為1表示子網3。由此可得如下圖設置:
二、NAT:網絡地址轉換
1、轉換原因
我們在家里組建了一個本地局域網絡,互聯家里的網絡設備,每臺設備配置的都是內部私有的IP地址。對于內部私有IP地址,互聯網上的路由器是不能進行尋址的,因此在與外界網絡進行通信時會在家里的網關路由器上進行網絡地址轉換。將私有的內部IP地址轉換為一個全局、可尋址的IP地址。在上圖中,全局IP地址是138.76.29.7.。
NAT轉換動機:對外部來講,本地網絡的所有主機只需要使用一個共同的全局IP地址。詳細來說:
(1)不需要從ISP分配一系列地址,只要一個IP地址用于所有設備。
(2)在本地網絡改變設備的IP地址不用通知外部世界。
(3)可以變更ISP而不用改變本地網絡的設備的地址。
(4)本地網絡內部設備不能被外部世界明確尋址,或是不可見(增加了安全性)。
使用NAT轉換,路由器必須做到:
(1)外出的分組:替換每個外出的分組即源IP地址、端口號為NAT IP地址、新端口號,遠程客戶/服務器用NAT IP地址、新端口號作為目的地來響應。
(2)在NAT轉換表中記錄每個源IP地址、端口號到NAT IP地址、新端口號轉換配對。
(3)進來的分組:對每個進來的分組,用保存在NAT表中的對應的源IP地址、端口號替換分組中的NAT IP地址、新端口號。
2、轉換過程
轉換過程如下:
如上圖所示,首先主機10.0.0.1發送數據報外部服務器128.119.40.186。這個分組到達網絡路由器時,路由器在NAT轉換表中建立一個表項記錄本地的源IP地址和源端口號到NAT IP地址和新端口號的映射。這里NAT IP地址是138.76.29.7,新的端口號是5001。當該分組到達外部服務器時,外部服務器對此產生一個響應消息,如分組3所示,這里響應消息的目的IP地址是NAT轉換后的全局IP地址。因此該分組到達網關路由器時需要用本地IP地址和源端口號對其進行切換,如分組4所示。這就是整個NAT代換的工作過程。
3、NAT限制
NAT:網絡地址轉換的一些限制:
(1)由于本地網絡的映射,不同主機的不通透應用都是通過全局IP加源端口號進行區分,因此同時可以支持的并發連接數為216^{16}16即65536個。
(2)NAT應用在學術界任然存在爭議,例如通常認為路由器只應該處理到第三層,而在NAT需要需改端口號就是需改了傳輸層的信息。此外,NAT的設計違反了因特網設計的端到端的主張。最后很多學者認為NAT只能緩解地址短缺的問題,應該及時過度到IPv6協議,從根本上解決地址短缺問題。
(3)NAT的另一個重要問題是它妨礙P2P應用程序,包括P2P文件共享應用和P2PIP語音應用。在一個P2P程序中,任何參與對等方A應當能夠對任何其它參與對等方B發起一條TCP連接。但是如果對等放B在一個NAT后面,它不能充當服務器并接收TCP連接,若同時對等方A不在一個NAT的后面,則該NAT問題可以繞過去。在這種情況下,對等方A能夠首先通過一個中間對等方C與對等方B聯系,其中C不位于NAT之后并與B已經創建了一條進行中的TCP連接。對等方A則能夠經過對等方C請求對等方B,發起直接返回對等方A的一條TCP連接。一旦對等方A和B之間創建一條直接的P2P TCP連接,這兩個對等方就能夠交換報文或文件。這種雇傭關系被稱為連接反轉,實際上被許多P2P應用程序用于NAT穿越。如果對等方A和對等方B都在它們自己的NAT后面,這種情況要使用應用程序進行中繼處理。
總結
以上是生活随笔為你收集整理的网际协议:动态主机配置协议(DHCP)和NAT的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网络层:IP 协议(用于封装 IP)
- 下一篇: 通用即插即用(UPnP)