Чому трансляція використовується на кроці DHCPREQUEST?


19

Це процес DHCPексплуатації, введіть тут опис зображення

Моє питання на 3-му кроці, чому Клієнт надсилає широкомовні програми, а не Unicast, як після двох попередніх операцій повинна бути відома адреса сервера DHCP / реле?


Чи допомогла вам якась відповідь? Якщо так, то слід прийняти відповідь, щоб питання не з’являлося вічно, шукаючи відповідь. Крім того, ви можете надати та прийняти власну відповідь.
Рон Моупін

Відповіді:


30

https://tools.ietf.org/html/rfc2131#page-13

Сервери отримують передачу DHCPREQUEST від клієнта. Ті сервери, які не вибрані повідомленням DHCPREQUEST, використовують повідомлення як повідомлення про те, що клієнт відмовився від пропозиції цього сервера.

Протокол передбачає, що може бути декілька серверів DHCP. Передаючи повідомлення про запит, всі сервери, які, можливо, видали пропозицію, можуть бути обізнані про вибір клієнта.


11

Ви потенційно можете мати декілька серверів DHCP - запит надсилається як трансляція, щоб повідомити інші сервери DHCP, які потенційно надіслали пропозиції, про те, що їх пропозиція не приймається.


7

Тому що поки сервер не надсилає DHCPACK, клієнт все ще не має IP-адреси. DHCP-сервер може відповісти на запит DHCPNACK.


Чому це означає, що потрібно використовувати мовлення? Клієнт знає MAC-адресу сервера з повідомлення DHCPOFFER, щоб він міг відправити DHCPREQUEST однозначно на цей сервер - для цього не потрібно IP-адреси.
psmears

1
@psmears, оскільки трансляції L3 надсилаються як L2-трансляції. DHCP не є протоколом L2, тому ви зобов'язані правилами, коли дані передаються з L3 в L2.
YLearn

2
@YLearn: Вам також потрібен IP-код джерела та призначення для пакетного пакету L3 або широкомовної передачі, тож це очевидно не проблема :) Немає теоретичної причини, чому пакет DHCPREQUEST не міг бути відправлений із IP-адресою призначення та MAC сервер і (як і в пакеті широкомовної інформації) джерело IP 0,0.0,0. Причина трансляції полягає в тому, щоб повідомити іншим серверам DHCP (якщо такі є) про те, що клієнт відхиляє свої пропозиції.
psmears

1
@psmears, місце трансляції L3 - 255.255.255.255. Ви можете джерело трансляції L3 з 0.0.0.0. Однак ви не можете отримати джерело одноадресу L3 від 0.0.0.0.
YLearn

2
@YLearn: Ви, звичайно, можете надіслати пакет з байтами для вихідної адреси, встановленої на нуль! Це, можливо, заборонено деяким RFC - ви знаєте про це? RFC1700 каже, що 0.0.0.0 "може використовуватися лише як адреса джерела" (але нічого про одноадресну передачу / трансляцію); RFC1122 говорить, що 0.0.0.0 "НЕ МОЖЕ бути надісланий, за винятком адреси джерела, як частини ініціалізації процедури, за допомогою якої хост дізнається власну IP-адресу" (знову ж таки, відсутність обмеження uni / широкомовної передачі). Це мандат десь ще?
psmears
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.