DHCP یا Dynamic Host Configuration Protocol برای اختصاص دادن IP در اینترنت استفاده میشود. هر دستگاه برای آنکه بتواند به شبکهی اینترنت متصل شود، به شناسهی IP نیاز دارد و آدرس IP هر دستگاه باید منحصر به فرد باشد. اگر این شناسههای IP را افرادی که با دستگاه کار میکنند انتخاب و تنظیم کنند، یا یک مدیر شبکه بهشکل دستی آنها را تعیین کند، همواره احتمال بروز این خطا وجود دارد که IPهای مشابه به دستگاههای مختلف اختصاص داده شود.
از DHCP بیشتر در یک شبکهی محلی استفاده میشود. در هر یک از این شبکهها، یک روتر یا یک gateway (که میتواند یک فایروال هم باشد)، سرویس DHCP را ارایه میدهد و DHCP server نام دارد. هر DHCP server، تمام اطلاعات مربوط به یک شبکه را در اختیار دارد که برخی از این اطلاعات را پس از درخواست کاربر، برای او ارسال میکند. همچنین DHCP server، محدودهی IP مورد استفادهی شبکه را از قبل دریافت میکند (محدودهی IP مورد استفاده را معمولن مدیر یک شبکه تعیین میکند) و براساس آن، تصمیم میگیرد که به هر دستگاه جدید که به شبکه وصل میشود، باید چه شناسهای را اختصاص دهد.
عملکرد DHCP
فرض کنید که یک دستگاه جدید به شبکه اضافه شده است و میخواهد به شبکهی داخلی یا شبکهی اینترنت وصل شود. همانطور که گفته شد، این دستگاه نیاز به یک شناسهی IP یکتا دارد. از آنجایی که این دستگاه هنوز شناسهی IP ندارد و همچنین آدرس IP مربوط به DHCP server برایش نامعلوم است، درخواست خود را از طریق آدرس 255.255.255.255 برای همهی دستگاههای موجود در ساختار شبکهای که به آن متصل است، ارسال میکند (این آدرس IP در بیشتر شبکهها، آدرس broadcast نام دارد و پیامی که به مقصد این IP ارسال میشود، برای همهی دستگاهها ارسال میشود). DHCP server پس از دریافت این پیام، جوابی برای کاربر ارسال میکند که شامل اطلاعاتی مانند آدرسIP پیشنهادی برای آن کاربر و آدرس DHCP server پاسخدهنده به این پیام است (البته، هم در این مرحله و هم در مرحلههای بعد، سرور بنا به درخواست کاربر میتواند اطلاعات بیشتری مانند subnet mask، مدت زمان اعتبار آدرس IP اختصاص داده شده، آدرس DNS server، آدرس Time server و … را برای کاربر ارسال کند). پس از اینکه کاربر پیام را دریافت کرد، میتواند آدرس IP پیشنهادی سرور را برای خود انتخاب کند. به این ترتیب، یک پیام درخواست برای سرور ارسال میکند و از این طریق اعلام میکند که آدرس IP ارسال شده را پذیرفته است. سرور در جواب درخواست، یک پیام تایید برای کاربر میفرستد و به همراه آن، اطلاعات بیشتری مانند، اطلاعاتی که کاربر درخواست داده را ارسال میکند.
سناریوی بالا، بیشتر برای شبکههای کوچکتری که تنها یک DHCP server در آنها وجود دارد استفاده میشود. در شبکههایی با چند DHCP server، هر server ممکن است درخواستهایی از زیرشبکههای مختلف دریافت کند و در نتیجه باید روندی وجود داشته باشد که مشخص کند هر درخواست مربوط به چه شبکهای است. همچنین، هر کاربر پس از broadcast کردن درخواست خود، ممکن است از چند سرور مختلف پاسخ دریافت کند ولی در نهایت باید به یکی از آنها پاسخ بدهد و یک IP را برای خود انتخاب کند. در این شبکهها، یک DHCP relay agent، به عنوان نمایندهی یک DHCP server وجود دارد. درخواست هر کاربر نخست برای agent ارسال میشود و سپس agent، آن را برای سرور اصلی ارسال میکند و پس از دریافت پاسخ از سرور، آن را برای کاربر میفرستد. سرور با توجه به agentای که درخواست را از آن دریافت کرده است، تشخیص میدهد که کاربر درخواستکننده در کدام زیرشبکه قرار دارد و با توجه به مشخصات همان زیرشبکه، آدرس IP را برای کاربر انتخاب میکند.