dhcp位址分配方式及工作原理
位址分配方式網路管理員為某些少數特定的host繫結固定ip位址,且位址不會過期自動分配,其情形是:一旦 dhcp 客戶端第一次成功的從 dhcp 伺服器端租用到 ip 位址之後,就永遠使用這個位址。動態分配,當 dhcp 第一次從 dhcp 伺服器端租用到 ip 位址之後,並非永久的使用該位址,只要租約到期,客戶端就得釋放(release)這個 ip 位址,以給其它工作站使用。當然,客戶端可以比其它主機更優先的更新(renew)租約,或是租用其它的 ip 位址。 動態分配顯然比自動分配更加靈活,尤其是當您的實際 ip 位址不足的時候,例如:您是一家 isp ,只能提供 200 個ip位址用來給撥接客戶,但並不意味著您的客戶最多只能有 200 個。因為要知道,您的客戶們不可能全部同一時間上網的,除了他們各自的行為習慣的不同,也有可能是**線路的限制。這樣,您就可以將這 200 個位址,輪流的租用給撥接上來的客戶使用了。這也是為什麼當您檢視 ip 位址的時候,會因每次撥接而不同的原因了(除非您申請的是乙個固定 ip ,通常的 isp 都可以滿足這樣的要求,這或許要另外收費)。當然,isp 不一定使用 dhcp 來分配位址,但這個概念和使用 ip pool 的原理是一樣的。 dhcp 除了能動態的設定 ip 位址之外,還可以將一些 ip 保留下來給一些特殊用途的機器使用,它可以按照硬體位址來固定的分配 ip 位址,這樣可以給您更大的設計空間。同時,dhcp 還可以幫客戶端指定 router、netmask、dns server、wins server、等等專案,您在客戶端上面,除了將 dhcp 選項打勾之外,幾乎無需做任何的 ip 環境設定。根據客戶端是否第一次登入網路,dhcp 的工作形式會有所不同。 第一次登入的時候:當 dhcp 客戶端第一次登入網路的時候,也就是客戶發現本機上沒有任何 ip 資料設定,它會向網路發出乙個 dhcp discover 封包。因為客戶端還不知道自己屬於哪乙個網路,所以封包的**位址會為 0.0.0.0 ,而目的位址則為 255.255.255.255 ,然後再附上 dhcp discover 的資訊,向網路進行廣播。 在 windows 的預設情形下,dhcp discover 的等待時間預設為 1 秒,也就是當客戶端將第乙個 dhcp discover 封包送出去之後,在 1 秒之內沒有得到響應的話,就會進行第二次 dhcp discover 廣播。若一直得不到響應的情況下,客戶端一共會有四次 dhcp discover 廣播(包括第一次在內),除了第一次會等待 1 秒之外,其餘三次的等待時間分別是 9、13、16 秒。如果都沒有得到 dhcp 伺服器的響應,客戶端則會顯示錯誤資訊,宣告 dhcp discover 的失敗。之後,基於使用者的選擇,系統會繼續在 5 分鐘之後再重複一次 dhcp discover 的過程。當 dhcp 伺服器監聽到客戶端發出的 dhcp discover 廣播後,它會從那些還沒有租出的位址範圍內,選擇最前面的空置 ip ,連同其它 tcp/ip 設定,響應給客戶端乙個 dhcp offer 封包。 由於客戶端在開始的時候還沒有 ip 位址,所以在其 dhcp discover 封包內會帶有其 mac 位址資訊,並且有乙個 xid 編號來辨別該封包,dhcp 伺服器響應的 dhcp offer 封包則會根據這些資料傳遞給要求租約的客戶。根據伺服器端的設定,dhcp offer 封包會包含乙個租約期限的資訊。如果客戶端收到網路上多台 dhcp 伺服器的響應,只會挑選其中乙個 dhcp offer 而已(通常是最先抵達的那個),並且會向網路傳送乙個dhcp request廣播封包,告訴所有 dhcp 伺服器它將指定接受哪一台伺服器提供的 ip 位址。 同時,客戶端還會向網路傳送乙個 arp 封包,查詢網路上面有沒有其它機器使用該 ip 位址;如果發現該 ip 已經被占用,客戶端則會送出乙個 dhcpdeclient 封包給 dhcp 伺服器,拒絕接受其 dhcp offer ,並重新傳送 dhcp discover 資訊。 事實上,並不是所有 dhcp 客戶端都會無條件接受 dhcp 伺服器的 offer ,尤其這些主機安裝有其它 tcp/ip 相關的客戶軟體。客戶端也可以用 dhcp request 向伺服器提出 dhcp 選擇,而這些選擇會以不同的號碼填寫在 dhcp option field 裡面: 換一句話說,在 dhcp 伺服器上面的設定,未必是客戶端全都接受,客戶端可以保留自己的一些 tcp/ip 設定。而主動權永遠在客戶端這邊。
dhcp過程中的7個報文含義
1 dhcpdiscover: 此為client開始dhcp過程中的第乙個請求報文
2 dhcpoffer : 此為server 對dhcpdiscover 報文的響應
3 dhcprequst : 此為client 對dihcpoffer 報文的響應
4 dhcpdeclient: 當client發現server 分配給它的ip位址無法使用,如:
ip位址發生衝突時,將發出此報文讓server禁止使用這次分配的ip位址。
6 dhcpnak : 此報文是server對client的dhcprequst報文的拒絕響應,client 收到此報文後,一般會重新開始dhcp過程。
7 dhcprelease :此報文是 client主動釋放ip位址,當server 收到此報文後就可以收回ip位址分配給其他的client
記憶體分配方式及分配演算法優劣
內部碎片的產生 因為所有的記憶體分配必須起始於可被 4 8 或 16 整除 視 處理器體系結構而定 的位址或者因為mmu的分頁機制的限制,決定記憶體分配演算法僅能把預定大小的記憶體塊分配給客戶。假設當某個客戶請求乙個 43 位元組的記憶體塊時,因為沒有適合大小的記憶體,所以它可能會獲得 44位元組 ...
DHCP工作原理及例項
dhcp dynamic host configuration protocol 動態主機配置協議,它 提供了一種動態指定ip位址和配置引數的機制 是一種用於簡化主機 ip 配置管理的 ip 標準。通過採用 dhcp 標準,可以使用 dhcp 伺服器為網路上啟用了 dhcp 的客戶端管理動態 ip ...
記憶體分配方式及常見錯誤
記憶體操作對於程式開發人員來說,永遠是一塊雷區。在這片區域,總是不斷的埋雷 排雷,而且往往是排雷花了非常大的代價。記得在公司實習時,有大概2個星期的時間,team的幾個人去排雷 有地方發生了memory leak!記憶體分配方式有三種 1 從靜態儲存區域分配。內存在程式編譯的時候就已經分配好,這塊內...