പൈത്തണിലെ DHCP+Mysql സെർവർ

പൈത്തണിലെ DHCP+Mysql സെർവർ

ഈ പദ്ധതിയുടെ ഉദ്ദേശ്യം ഇതായിരുന്നു:

  • ഒരു IPv4 നെറ്റ്‌വർക്കിൽ DHCP-യെ കുറിച്ച് പഠിക്കുന്നു
  • പൈത്തൺ പഠിക്കുന്നു (ആദ്യം മുതൽ 😉)
  • സെർവർ മാറ്റിസ്ഥാപിക്കൽ DB2DHCP (എന്റെ നാൽക്കവല), ഒറിജിനൽ ഇവിടെ, ഇത് പുതിയ OS-നായി കൂട്ടിച്ചേർക്കാൻ കൂടുതൽ കൂടുതൽ ബുദ്ധിമുട്ടാണ്. "ഇപ്പോൾ മാറ്റാൻ" ഒരു വഴിയുമില്ലാത്ത ഒരു ബൈനറി ആണെന്ന് എനിക്ക് ഇഷ്ടമല്ല
  • വരിക്കാരന്റെ മാക് അല്ലെങ്കിൽ സ്വിച്ച് മാക്+പോർട്ട് കോമ്പിനേഷൻ (ഓപ്ഷൻ 82) ഉപയോഗിച്ച് വരിക്കാരന്റെ ഐപി വിലാസം തിരഞ്ഞെടുക്കാനുള്ള കഴിവുള്ള ഒരു പ്രവർത്തിക്കുന്ന ഡിഎച്ച്സിപി സെർവർ നേടുന്നു
  • മറ്റൊരു ബൈക്ക് എഴുതുന്നു (ഓ! ഇത് എന്റെ പ്രിയപ്പെട്ട പ്രവർത്തനമാണ്)
  • ഹബ്രഹാബറിൽ (അല്ലെങ്കിൽ അതിലും മികച്ചത്, ഒരു ക്ഷണം) നിങ്ങളുടെ ക്ലബ് ഹാൻഡ്‌നെസിനെക്കുറിച്ചുള്ള അഭിപ്രായങ്ങൾ സ്വീകരിക്കുന്നു 😉

ഫലം: ഇത് പ്രവർത്തിക്കുന്നു 😉 FreeBSD, Ubuntu OS എന്നിവയിൽ പരീക്ഷിച്ചു. സൈദ്ധാന്തികമായി, ഏതെങ്കിലും OS-ന് കീഴിൽ പ്രവർത്തിക്കാൻ കോഡ് ആവശ്യപ്പെടാം, കാരണം കോഡിൽ പ്രത്യേക ബൈൻഡിംഗുകളൊന്നും ഇല്ലെന്ന് തോന്നുന്നു.
ശ്രദ്ധയോടെ! ഇനിയും ഒരുപാട് വരാനുണ്ട്.

അമച്വർമാർക്കുള്ള സംഭരണിയിലേക്കുള്ള ലിങ്ക് "ജീവനോടെ സ്പർശിക്കുക".

"ഹാർഡ്‌വെയർ പഠിക്കുക" എന്നതിന്റെ ഫലം ഇൻസ്റ്റാൾ ചെയ്യുന്നതിനും ക്രമീകരിക്കുന്നതിനും ഉപയോഗിക്കുന്നതിനുമുള്ള പ്രക്രിയ വളരെ കുറവാണ്, തുടർന്ന് DHCP പ്രോട്ടോക്കോളിനെക്കുറിച്ചുള്ള ഒരു ചെറിയ സിദ്ധാന്തം. എനിക്ക് വേണ്ടി. പിന്നെ ചരിത്രത്തിനും 😉

ഒരു ചെറിയ സിദ്ധാന്തം

എന്താണ് DHCP

ഒരു DHCP സെർവറിൽ നിന്ന് ഉപകരണത്തിന്റെ IP വിലാസം (ഗേറ്റ്‌വേ, DNS മുതലായവ പോലുള്ള മറ്റ് പാരാമീറ്ററുകൾ) കണ്ടെത്താൻ ഉപകരണത്തെ അനുവദിക്കുന്ന ഒരു നെറ്റ്‌വർക്ക് പ്രോട്ടോക്കോൾ ആണിത്. UDP പ്രോട്ടോക്കോൾ ഉപയോഗിച്ചാണ് പാക്കറ്റുകൾ കൈമാറുന്നത്. നെറ്റ്‌വർക്ക് പാരാമീറ്ററുകൾ അഭ്യർത്ഥിക്കുമ്പോൾ ഉപകരണത്തിന്റെ പ്രവർത്തനത്തിന്റെ പൊതു തത്വം ഇപ്രകാരമാണ്:

  1. "ശരി, ആരെങ്കിലും എനിക്കൊരു IP വിലാസം തരൂ" എന്ന അഭ്യർത്ഥനയോടെ ഉപകരണം (ക്ലയന്റ്) നെറ്റ്‌വർക്കിലുടനീളം UDP ബ്രോഡ്‌കാസ്റ്റ് അഭ്യർത്ഥന (DHCPDISCOVER) അയയ്ക്കുന്നു. മാത്രമല്ല, സാധാരണയായി (എന്നാൽ എല്ലായ്‌പ്പോഴും അല്ല) അഭ്യർത്ഥന പോർട്ട് 68 (ഉറവിടം) ൽ നിന്നാണ് സംഭവിക്കുന്നത്, ലക്ഷ്യസ്ഥാനം പോർട്ട് 67 ആണ് (ലക്ഷ്യം). ചില ഉപകരണങ്ങൾ പോർട്ട് 67 ൽ നിന്ന് പാക്കറ്റുകളും അയയ്ക്കുന്നു. ക്ലയന്റ് ഉപകരണത്തിന്റെ MAC വിലാസം DHCPDISCOVER പാക്കറ്റിനുള്ളിൽ ഉൾപ്പെടുത്തിയിട്ടുണ്ട്.
  2. നെറ്റ്‌വർക്കിൽ സ്ഥിതിചെയ്യുന്ന എല്ലാ DHCP സെർവറുകളും (അവയിൽ പലതും ഉണ്ടായിരിക്കാം) DHCPDISCOVER അയച്ച ഉപകരണത്തിനായുള്ള നെറ്റ്‌വർക്ക് ക്രമീകരണങ്ങളുള്ള ഒരു DHCPOFFER ഓഫർ രൂപീകരിക്കുകയും അത് നെറ്റ്‌വർക്കിലൂടെ പ്രക്ഷേപണം ചെയ്യുകയും ചെയ്യുന്നു. DHCPDISCOVER അഭ്യർത്ഥനയിൽ മുമ്പ് നൽകിയ ക്ലയന്റിൻറെ MAC വിലാസത്തെ അടിസ്ഥാനമാക്കിയാണ് ഈ പാക്കറ്റ് ആർക്കുവേണ്ടിയുള്ളതെന്ന് തിരിച്ചറിയുക.
  3. ക്ലയന്റ് നെറ്റ്‌വർക്ക് ക്രമീകരണങ്ങൾക്കായുള്ള നിർദ്ദേശങ്ങളുള്ള പാക്കറ്റുകൾ സ്വീകരിക്കുന്നു, ഏറ്റവും ആകർഷകമായത് തിരഞ്ഞെടുക്കുന്നു (മാനദണ്ഡം വ്യത്യസ്തമായിരിക്കാം, ഉദാഹരണത്തിന്, പാക്കറ്റ് ഡെലിവറി സമയം, ഇന്റർമീഡിയറ്റ് റൂട്ടുകളുടെ എണ്ണം), കൂടാതെ നെറ്റ്‌വർക്ക് ക്രമീകരണങ്ങൾക്കൊപ്പം "ഔദ്യോഗിക അഭ്യർത്ഥന" DHCPREQUEST നടത്തുന്നു. അത് ഇഷ്ടപ്പെടുന്ന DHCP സെർവറിൽ നിന്ന്. ഈ സാഹചര്യത്തിൽ, പാക്കറ്റ് ഒരു നിർദ്ദിഷ്ട DHCP സെർവറിലേക്ക് പോകുന്നു.
  4. DHCPREQUEST ലഭിച്ച സെർവർ ഒരു DHCPACK ഫോർമാറ്റ് പാക്കറ്റ് അയയ്‌ക്കുന്നു, അതിൽ ഈ ക്ലയന്റിനായി ഉദ്ദേശിച്ചിട്ടുള്ള നെറ്റ്‌വർക്ക് ക്രമീകരണങ്ങൾ വീണ്ടും ലിസ്റ്റുചെയ്യുന്നു.

പൈത്തണിലെ DHCP+Mysql സെർവർ

കൂടാതെ, ക്ലയന്റിൽ നിന്ന് വരുന്ന DHCPINFORM പാക്കറ്റുകൾ ഉണ്ട്, ഇതിന്റെ ഉദ്ദേശ്യം "ക്ലയന്റ് ജീവിച്ചിരിപ്പുണ്ട്" എന്നും ഇഷ്യൂ ചെയ്ത നെറ്റ്‌വർക്ക് ക്രമീകരണങ്ങൾ ഉപയോഗിക്കുന്നുണ്ടെന്നും DHCP സെർവറിനെ അറിയിക്കുക എന്നതാണ്. ഈ സെർവറിന്റെ നടപ്പാക്കലിൽ, ഈ പാക്കറ്റുകൾ അവഗണിക്കപ്പെടുന്നു.

പാക്കേജ് ഫോർമാറ്റ്

പൊതുവേ, ഒരു ഇഥർനെറ്റ് പാക്കറ്റ് ഫ്രെയിം ഇതുപോലെ കാണപ്പെടുന്നു:

പൈത്തണിലെ DHCP+Mysql സെർവർ

ഞങ്ങളുടെ കാര്യത്തിൽ, OSI ലെയർ പ്രോട്ടോക്കോൾ ഹെഡറുകൾ ഇല്ലാതെ UDP പാക്കറ്റിലെ ഉള്ളടക്കത്തിൽ നിന്നുള്ള ഡാറ്റ മാത്രമേ ഞങ്ങൾ നേരിട്ട് പരിഗണിക്കൂ, അതായത് DHCP ഘടന:

ഡിഎച്ച്സിപിഡിസ്കവർ

അതിനാൽ, ഒരു ഉപകരണത്തിനായി ഒരു IP വിലാസം നേടുന്നതിനുള്ള പ്രക്രിയ ആരംഭിക്കുന്നത് DHCP ക്ലയന്റ് പോർട്ട് 68 ൽ നിന്ന് 255.255.255.255:67 ലേക്ക് ഒരു ബ്രോഡ്കാസ്റ്റ് അഭ്യർത്ഥന അയക്കുന്നതിലൂടെയാണ്. ഈ പാക്കേജിൽ, ക്ലയന്റ് അതിന്റെ MAC വിലാസവും DHCP സെർവറിൽ നിന്ന് കൃത്യമായി ലഭിക്കാൻ ആഗ്രഹിക്കുന്നതും ഉൾപ്പെടുന്നു. പാക്കേജ് ഘടന ചുവടെയുള്ള പട്ടികയിൽ വിവരിച്ചിരിക്കുന്നു.

DHCPDISCOVER പാക്കറ്റ് ഘടന പട്ടിക

പാക്കേജിലെ സ്ഥാനം
മൂല്യത്തിന്റെ പേര്
ഉദാഹരണം:
ആമുഖം
ബൈറ്റ്
വിശദീകരണം

1
ബൂട്ട് അഭ്യർത്ഥന
1
ഹെക്സ്
1
സന്ദേശ തരം. 1 - ക്ലയന്റിൽ നിന്ന് സെർവറിലേക്കുള്ള അഭ്യർത്ഥന, 2 - സെർവറിൽ നിന്ന് ക്ലയന്റിലേക്കുള്ള പ്രതികരണം

2
ഹാർഡ്‌വെയർ തരം
1
ഹെക്സ്
1
ഹാർഡ്‌വെയർ വിലാസത്തിന്റെ തരം, ഈ പ്രോട്ടോക്കോളിൽ 1 - MAC

3
ഹാർഡ്‌വെയർ അഡ്രസ് ദൈർഘ്യം
6
ഹെക്സ്
1
ഉപകരണത്തിന്റെ MAC വിലാസ ദൈർഘ്യം

4
ഹംസ
1
ഹെക്സ്
1
ഇന്റർമീഡിയറ്റ് റൂട്ടുകളുടെ എണ്ണം

5
ഇടപാട് ഐഡി
23:cf:de:1d
ഹെക്സ്
4
അദ്വിതീയ ഇടപാട് ഐഡന്റിഫയർ. ഒരു അഭ്യർത്ഥന പ്രവർത്തനത്തിന്റെ തുടക്കത്തിൽ ക്ലയന്റ് സൃഷ്ടിച്ചത്

7
രണ്ടാമത്തേത് കഴിഞ്ഞു
0
ഹെക്സ്
4
ഒരു വിലാസം നേടുന്നതിനുള്ള പ്രക്രിയയുടെ ആരംഭം മുതൽ നിമിഷങ്ങൾക്കുള്ളിൽ സമയം

9
ബൂട്ട് പതാകകൾ
0
ഹെക്സ്
2
പ്രോട്ടോക്കോൾ പാരാമീറ്ററുകൾ സൂചിപ്പിക്കുന്നതിന് സജ്ജമാക്കാൻ കഴിയുന്ന ചില ഫ്ലാഗുകൾ

11
ക്ലയന്റ് IP വിലാസം
0.0.0.0
സ്ട്രിംഗ്
4
ക്ലയന്റ് ഐപി വിലാസം (എന്തെങ്കിലും ഉണ്ടെങ്കിൽ)

15
നിങ്ങളുടെ ക്ലയന്റ് IP വിലാസം
0.0.0.0
സ്ട്രിംഗ്
4
സെർവർ വാഗ്ദാനം ചെയ്യുന്ന IP വിലാസം (ലഭ്യമെങ്കിൽ)

19
അടുത്ത സെർവർ IP വിലാസം
0.0.0.0
സ്ട്രിംഗ്
4
സെർവർ IP വിലാസം (അറിയാമെങ്കിൽ)

23
റിലേ ഏജന്റ് IP വിലാസം
172.16.114.41
സ്ട്രിംഗ്
4
റിലേ ഏജന്റിന്റെ IP വിലാസം (ഉദാഹരണത്തിന്, ഒരു സ്വിച്ച്)

27
ക്ലയന്റ് MAC വിലാസം
14:d6:4d:a7:c9:55
ഹെക്സ്
6
പാക്കറ്റ് അയച്ചയാളുടെ (ക്ലയന്റ്) MAC വിലാസം

31
ക്ലയന്റ് ഹാർഡ്‌വെയർ വിലാസ പാഡിംഗ്
 
ഹെക്സ്
10
റിസർവ് ചെയ്ത സീറ്റ്. സാധാരണയായി പൂജ്യങ്ങൾ കൊണ്ട് നിറയും

41
സെർവർ ഹോസ്റ്റിന്റെ പേര്
 
സ്ട്രിംഗ്
64
DHCP സെർവറിന്റെ പേര്. സാധാരണയായി കൈമാറ്റം ചെയ്യപ്പെടുന്നില്ല

105
ബൂട്ട് ഫയലിന്റെ പേര്
 
സ്ട്രിംഗ്
128
ബൂട്ട് ചെയ്യുമ്പോൾ ഡിസ്ക്ലെസ് സ്റ്റേഷനുകൾ ഉപയോഗിക്കുന്ന സെർവറിലെ ഫയലിന്റെ പേര്

235
മാജിക് കുക്കികൾ
ചൊവ്വ: 63: 82: 53
ഹെക്സ്
4
"മാജിക്" നമ്പർ, അതനുസരിച്ച്, ഉൾപ്പെടെ. ഈ പാക്കറ്റ് DHCP പ്രോട്ടോക്കോളിന്റേതാണെന്ന് നിങ്ങൾക്ക് നിർണ്ണയിക്കാനാകും

DHCP ഓപ്ഷനുകൾ. ഏത് ക്രമത്തിലും പോകാം

236
ഓപ്ഷൻ നമ്പർ
53
ഡിസംബർ
1
ഓപ്ഷൻ 53, ഇത് ഡിഎച്ച്സിപി പാക്കറ്റ് തരം വ്യക്തമാക്കുന്നു

1 - ഡിഎച്ച്സിപിഡിസ്കവർ
3 - DHCPREQUEST
2 - DHCPOFFER
5 - DHCPACK
8 - DHCPINFORM

 
ഓപ്ഷൻ ദൈർഘ്യം
1
ഡിസംബർ
1

 
ഓപ്‌ഷൻ മൂല്യം
1
ഡിസംബർ
1

 
ഓപ്ഷൻ നമ്പർ
50
ഡിസംബർ
1
ഏത് IP വിലാസമാണ് ക്ലയന്റ് സ്വീകരിക്കാൻ ആഗ്രഹിക്കുന്നത്?

 
ഓപ്ഷൻ ദൈർഘ്യം
4
ഡിസംബർ
1

 
ഓപ്‌ഷൻ മൂല്യം
172.16.134.61
സ്ട്രിംഗ്
4

 
ഓപ്ഷൻ നമ്പർ
55
 
1
ക്ലയന്റ് ആവശ്യപ്പെട്ട നെറ്റ്‌വർക്ക് പാരാമീറ്ററുകൾ. രചന വ്യത്യാസപ്പെടാം

01 - നെറ്റ്വർക്ക് മാസ്ക്
03 - ഗേറ്റ്‌വേ
06 - ഡിഎൻഎസ്
oc - ഹോസ്റ്റിന്റെ പേര്
0f - നെറ്റ്‌വർക്ക് ഡൊമെയ്‌ൻ നാമം
1c - പ്രക്ഷേപണ അഭ്യർത്ഥനയുടെ വിലാസം (പ്രക്ഷേപണം)
42 - TFTP സെർവറിന്റെ പേര്
79 - ക്ലാസില്ലാത്ത സ്റ്റാറ്റിക് റൂട്ട്

 
ഓപ്ഷൻ ദൈർഘ്യം
8
 
1

 
ഓപ്‌ഷൻ മൂല്യം
01:03:06:0c:0f:1c:42:79
 
8

 
ഓപ്ഷൻ നമ്പർ
82
ഡിസംബർ
 
റിപ്പീറ്റർ ഉപകരണത്തിന്റെ MAC വിലാസവും ചില അധിക മൂല്യങ്ങളും കൈമാറുന്ന ഓപ്ഷൻ 82.

മിക്കപ്പോഴും, ഇത് അവസാനത്തെ DHCP ക്ലയന്റ് പ്രവർത്തിപ്പിക്കുന്ന സ്വിച്ചിന്റെ പോർട്ട് ആണ്. ഈ ഓപ്ഷനിൽ അധിക പാരാമീറ്ററുകൾ അടങ്ങിയിരിക്കുന്നു. ആദ്യ ബൈറ്റ് "സബ്ഓപ്ഷൻ" ന്റെ നമ്പറാണ്, രണ്ടാമത്തേത് അതിന്റെ നീളം, തുടർന്ന് അതിന്റെ മൂല്യം.

ഈ സാഹചര്യത്തിൽ, ഓപ്ഷൻ 82 ൽ, ഉപ-ഓപ്ഷനുകൾ നെസ്റ്റഡ് ചെയ്യുന്നു:
Agent Circuit ID = 00:04:00:01:00:04, അഭ്യർത്ഥന വന്ന DHCP ക്ലയന്റ് പോർട്ട് ആണ് അവസാനത്തെ രണ്ട് ബൈറ്റുകൾ

ഏജന്റ് റിമോട്ട് ഐഡി = 00:06:c8:be:19:93:11:48 - DHCP റിപ്പീറ്റർ ഉപകരണത്തിന്റെ MAC വിലാസം

 
ഓപ്ഷൻ ദൈർഘ്യം
18
ഡിസംബർ
 

 
ഓപ്‌ഷൻ മൂല്യം
01:06
00:04:00:01:00:04
02:08
00:06:c8:be:19:93:11:48
ഹെക്സ്
 

 
പാക്കേജിന്റെ അവസാനം
255
ഡിസംബർ
1
255 പാക്കറ്റിന്റെ അവസാനത്തെ പ്രതീകപ്പെടുത്തുന്നു

DHCPOFER

സെർവറിന് DHCPDISCOVER പാക്കറ്റ് ലഭിച്ചാലുടൻ, അഭ്യർത്ഥിച്ചതിൽ നിന്ന് ക്ലയന്റിന് എന്തെങ്കിലും വാഗ്ദാനം ചെയ്യാൻ കഴിയുമെന്ന് കണ്ടാൽ, അത് അതിനായി ഒരു പ്രതികരണം സൃഷ്ടിക്കുന്നു - DHCPDISCOVER. പ്രതികരണം പ്രക്ഷേപണം വഴി "എവിടെ നിന്ന് വന്നു" പോർട്ടിലേക്ക് അയയ്ക്കുന്നു, കാരണം ഇപ്പോൾ, ക്ലയന്റിന് ഇതുവരെ ഒരു IP വിലാസം ഇല്ല, അതിനാൽ ബ്രോഡ്കാസ്റ്റ് വഴി അയച്ചാൽ മാത്രമേ പാക്കറ്റ് സ്വീകരിക്കാൻ കഴിയൂ. പാക്കേജിനുള്ളിലെ MAC വിലാസവും ആദ്യ പാക്കേജ് സൃഷ്‌ടിക്കുന്ന സമയത്ത് അവൻ സൃഷ്‌ടിക്കുന്ന ഇടപാട് നമ്പറും ഉപയോഗിച്ച് ഇത് തനിക്കുള്ള ഒരു പാക്കേജാണെന്ന് ക്ലയന്റ് തിരിച്ചറിയുന്നു.

DHCPOFFER പാക്കറ്റ് ഘടന പട്ടിക

പാക്കേജിലെ സ്ഥാനം
മൂല്യത്തിന്റെ പേര് (പൊതുവായത്)
ഉദാഹരണം:
ആമുഖം
ബൈറ്റ്
വിശദീകരണം

1
ബൂട്ട് അഭ്യർത്ഥന
1
ഹെക്സ്
1
സന്ദേശ തരം. 1 - ക്ലയന്റിൽ നിന്ന് സെർവറിലേക്കുള്ള അഭ്യർത്ഥന, 2 - സെർവറിൽ നിന്ന് ക്ലയന്റിലേക്കുള്ള പ്രതികരണം

2
ഹാർഡ്‌വെയർ തരം
1
ഹെക്സ്
1
ഹാർഡ്‌വെയർ വിലാസത്തിന്റെ തരം, ഈ പ്രോട്ടോക്കോളിൽ 1 - MAC

3
ഹാർഡ്‌വെയർ അഡ്രസ് ദൈർഘ്യം
6
ഹെക്സ്
1
ഉപകരണത്തിന്റെ MAC വിലാസ ദൈർഘ്യം

4
ഹംസ
1
ഹെക്സ്
1
ഇന്റർമീഡിയറ്റ് റൂട്ടുകളുടെ എണ്ണം

5
ഇടപാട് ഐഡി
23:cf:de:1d
ഹെക്സ്
4
അദ്വിതീയ ഇടപാട് ഐഡന്റിഫയർ. ഒരു അഭ്യർത്ഥന പ്രവർത്തനത്തിന്റെ തുടക്കത്തിൽ ക്ലയന്റ് സൃഷ്ടിച്ചത്

7
രണ്ടാമത്തേത് കഴിഞ്ഞു
0
ഹെക്സ്
4
ഒരു വിലാസം നേടുന്നതിനുള്ള പ്രക്രിയയുടെ ആരംഭം മുതൽ നിമിഷങ്ങൾക്കുള്ളിൽ സമയം

9
ബൂട്ട് പതാകകൾ
0
ഹെക്സ്
2
പ്രോട്ടോക്കോൾ പാരാമീറ്ററുകൾ സൂചിപ്പിക്കുന്നതിന് സജ്ജമാക്കാൻ കഴിയുന്ന ചില ഫ്ലാഗുകൾ. ഈ സാഹചര്യത്തിൽ, 0 എന്നാൽ യുണികാസ്റ്റ് അഭ്യർത്ഥന തരം എന്നാണ് അർത്ഥമാക്കുന്നത്

11
ക്ലയന്റ് IP വിലാസം
0.0.0.0
സ്ട്രിംഗ്
4
ക്ലയന്റ് ഐപി വിലാസം (എന്തെങ്കിലും ഉണ്ടെങ്കിൽ)

15
നിങ്ങളുടെ ക്ലയന്റ് IP വിലാസം
172.16.134.61
സ്ട്രിംഗ്
4
സെർവർ വാഗ്ദാനം ചെയ്യുന്ന IP വിലാസം (ലഭ്യമെങ്കിൽ)

19
അടുത്ത സെർവർ IP വിലാസം
0.0.0.0
സ്ട്രിംഗ്
4
സെർവർ IP വിലാസം (അറിയാമെങ്കിൽ)

23
റിലേ ഏജന്റ് IP വിലാസം
172.16.114.41
സ്ട്രിംഗ്
4
റിലേ ഏജന്റിന്റെ IP വിലാസം (ഉദാഹരണത്തിന്, ഒരു സ്വിച്ച്)

27
ക്ലയന്റ് MAC വിലാസം
14:d6:4d:a7:c9:55
ഹെക്സ്
6
പാക്കറ്റ് അയച്ചയാളുടെ (ക്ലയന്റ്) MAC വിലാസം

31
ക്ലയന്റ് ഹാർഡ്‌വെയർ വിലാസ പാഡിംഗ്
 
ഹെക്സ്
10
റിസർവ് ചെയ്ത സീറ്റ്. സാധാരണയായി പൂജ്യങ്ങൾ കൊണ്ട് നിറയും

41
സെർവർ ഹോസ്റ്റിന്റെ പേര്
 
സ്ട്രിംഗ്
64
DHCP സെർവറിന്റെ പേര്. സാധാരണയായി കൈമാറ്റം ചെയ്യപ്പെടുന്നില്ല

105
ബൂട്ട് ഫയലിന്റെ പേര്
 
സ്ട്രിംഗ്
128
ബൂട്ട് ചെയ്യുമ്പോൾ ഡിസ്ക്ലെസ് സ്റ്റേഷനുകൾ ഉപയോഗിക്കുന്ന സെർവറിലെ ഫയലിന്റെ പേര്

235
മാജിക് കുക്കികൾ
ചൊവ്വ: 63: 82: 53
ഹെക്സ്
4
"മാജിക്" നമ്പർ, അതനുസരിച്ച്, ഉൾപ്പെടെ. ഈ പാക്കറ്റ് DHCP പ്രോട്ടോക്കോളിന്റേതാണെന്ന് നിങ്ങൾക്ക് നിർണ്ണയിക്കാനാകും

DHCP ഓപ്ഷനുകൾ. ഏത് ക്രമത്തിലും പോകാം

236
ഓപ്ഷൻ നമ്പർ
53
ഡിസംബർ
1
DHCP 53 പാക്കറ്റ് തരം നിർവചിക്കുന്ന ഓപ്ഷൻ 2 - DHCPOFFER

 
ഓപ്ഷൻ ദൈർഘ്യം
1
ഡിസംബർ
1

 
ഓപ്‌ഷൻ മൂല്യം
2
ഡിസംബർ
1

 
ഓപ്ഷൻ നമ്പർ
1
ഡിസംബർ
1
DHCP ക്ലയന്റിന് ഒരു നെറ്റ്‌വർക്ക് മാസ്ക് വാഗ്ദാനം ചെയ്യാനുള്ള ഓപ്ഷൻ

 
ഓപ്ഷൻ ദൈർഘ്യം
4
ഡിസംബർ
1

 
ഓപ്‌ഷൻ മൂല്യം
255.255.224.0
സ്ട്രിംഗ്
4

 
ഓപ്ഷൻ നമ്പർ
3
ഡിസംബർ
1
DHCP ക്ലയന്റിന് ഒരു ഡിഫോൾട്ട് ഗേറ്റ്‌വേ വാഗ്ദാനം ചെയ്യാനുള്ള ഓപ്ഷൻ

 
ഓപ്ഷൻ ദൈർഘ്യം
4
ഡിസംബർ
1

 
ഓപ്‌ഷൻ മൂല്യം
172.16.12.1
സ്ട്രിംഗ്
4

 
ഓപ്ഷൻ നമ്പർ
6
ഡിസംബർ
1
DNS ക്ലയന്റിലേക്ക് DHCP ഓഫർ ചെയ്യാനുള്ള ഓപ്ഷൻ

 
ഓപ്ഷൻ ദൈർഘ്യം
4
ഡിസംബർ
1

 
ഓപ്‌ഷൻ മൂല്യം
8.8.8.8
സ്ട്രിംഗ്
4

 
ഓപ്ഷൻ നമ്പർ
51
ഡിസംബർ
1
ഇഷ്യൂ ചെയ്ത നെറ്റ്‌വർക്ക് പാരാമീറ്ററുകളുടെ ആയുസ്സ് നിമിഷങ്ങൾക്കുള്ളിൽ, അതിനുശേഷം DHCP ക്ലയന്റ് അവ വീണ്ടും അഭ്യർത്ഥിക്കണം

 
ഓപ്ഷൻ ദൈർഘ്യം
4
ഡിസംബർ
1

 
ഓപ്‌ഷൻ മൂല്യം
86400
ഡിസംബർ
4

 
ഓപ്ഷൻ നമ്പർ
82
ഡിസംബർ
1
ഓപ്ഷൻ 82, DHCPDISCOVER-ൽ വന്നത് ആവർത്തിക്കുന്നു

 
ഓപ്ഷൻ ദൈർഘ്യം
18
ഡിസംബർ
1

 
ഓപ്‌ഷൻ മൂല്യം
01:08:00:06:00
01:01:00:00:01
02:06:00:03:0f
26:4d:ec
ഡിസംബർ
18

 
പാക്കേജിന്റെ അവസാനം
255
ഡിസംബർ
1
255 പാക്കറ്റിന്റെ അവസാനത്തെ പ്രതീകപ്പെടുത്തുന്നു

DHCPREQUEST

ക്ലയന്റിന് DHCPOFFER ലഭിച്ചുകഴിഞ്ഞാൽ, അവൻ നെറ്റ്‌വർക്കിലെ എല്ലാ DHCP സെർവറുകളിലേക്കും നെറ്റ്‌വർക്ക് പാരാമീറ്ററുകൾ അഭ്യർത്ഥിക്കുന്ന ഒരു പാക്കറ്റ് രൂപീകരിക്കുന്നു, മറിച്ച് അവൻ ഏറ്റവും കൂടുതൽ ഇഷ്ടപ്പെട്ട DHCPOFFER ഓഫർ ഒരു നിർദ്ദിഷ്ട ഒന്നിലേക്ക് മാത്രം. "ലൈക്ക്" മാനദണ്ഡം വ്യത്യസ്തവും ക്ലയന്റിന്റെ ഡിഎച്ച്സിപി നടപ്പാക്കലിനെ ആശ്രയിച്ചിരിക്കുന്നതുമാകാം. DHCP സെർവറിന്റെ MAC വിലാസം ഉപയോഗിച്ചാണ് അഭ്യർത്ഥന സ്വീകർത്താവ് വ്യക്തമാക്കുന്നത്. കൂടാതെ, സെർവറിന്റെ IP വിലാസം മുമ്പ് ലഭിച്ചിട്ടുണ്ടെങ്കിൽ, ആദ്യം DHCPDISCOVER സൃഷ്ടിക്കാതെ തന്നെ ക്ലയന്റ് ഒരു DHCPREQUEST പാക്കറ്റ് അയയ്ക്കാൻ കഴിയും.

DHCPREQUEST പാക്കറ്റ് ഘടന പട്ടിക

പാക്കേജിലെ സ്ഥാനം
മൂല്യത്തിന്റെ പേര് (പൊതുവായത്)
ഉദാഹരണം:
ആമുഖം
ബൈറ്റ്
വിശദീകരണം

1
ബൂട്ട് അഭ്യർത്ഥന
1
ഹെക്സ്
1
സന്ദേശ തരം. 1 - ക്ലയന്റിൽ നിന്ന് സെർവറിലേക്കുള്ള അഭ്യർത്ഥന, 2 - സെർവറിൽ നിന്ന് ക്ലയന്റിലേക്കുള്ള പ്രതികരണം

2
ഹാർഡ്‌വെയർ തരം
1
ഹെക്സ്
1
ഹാർഡ്‌വെയർ വിലാസത്തിന്റെ തരം, ഈ പ്രോട്ടോക്കോളിൽ 1 - MAC

3
ഹാർഡ്‌വെയർ അഡ്രസ് ദൈർഘ്യം
6
ഹെക്സ്
1
ഉപകരണത്തിന്റെ MAC വിലാസ ദൈർഘ്യം

4
ഹംസ
1
ഹെക്സ്
1
ഇന്റർമീഡിയറ്റ് റൂട്ടുകളുടെ എണ്ണം

5
ഇടപാട് ഐഡി
23:cf:de:1d
ഹെക്സ്
4
അദ്വിതീയ ഇടപാട് ഐഡന്റിഫയർ. ഒരു അഭ്യർത്ഥന പ്രവർത്തനത്തിന്റെ തുടക്കത്തിൽ ക്ലയന്റ് സൃഷ്ടിച്ചത്

7
രണ്ടാമത്തേത് കഴിഞ്ഞു
0
ഹെക്സ്
4
ഒരു വിലാസം നേടുന്നതിനുള്ള പ്രക്രിയയുടെ ആരംഭം മുതൽ നിമിഷങ്ങൾക്കുള്ളിൽ സമയം

9
ബൂട്ട് പതാകകൾ
8000
ഹെക്സ്
2
പ്രോട്ടോക്കോൾ പാരാമീറ്ററുകൾ സൂചിപ്പിക്കുന്നതിന് സജ്ജമാക്കാൻ കഴിയുന്ന ചില ഫ്ലാഗുകൾ. ഈ സാഹചര്യത്തിൽ, "പ്രക്ഷേപണം" സജ്ജീകരിച്ചിരിക്കുന്നു

11
ക്ലയന്റ് IP വിലാസം
0.0.0.0
സ്ട്രിംഗ്
4
ക്ലയന്റ് ഐപി വിലാസം (എന്തെങ്കിലും ഉണ്ടെങ്കിൽ)

15
നിങ്ങളുടെ ക്ലയന്റ് IP വിലാസം
172.16.134.61
സ്ട്രിംഗ്
4
സെർവർ വാഗ്ദാനം ചെയ്യുന്ന IP വിലാസം (ലഭ്യമെങ്കിൽ)

19
അടുത്ത സെർവർ IP വിലാസം
0.0.0.0
സ്ട്രിംഗ്
4
സെർവർ IP വിലാസം (അറിയാമെങ്കിൽ)

23
റിലേ ഏജന്റ് IP വിലാസം
172.16.114.41
സ്ട്രിംഗ്
4
റിലേ ഏജന്റിന്റെ IP വിലാസം (ഉദാഹരണത്തിന്, ഒരു സ്വിച്ച്)

27
ക്ലയന്റ് MAC വിലാസം
14:d6:4d:a7:c9:55
ഹെക്സ്
6
പാക്കറ്റ് അയച്ചയാളുടെ (ക്ലയന്റ്) MAC വിലാസം

31
ക്ലയന്റ് ഹാർഡ്‌വെയർ വിലാസ പാഡിംഗ്
 
ഹെക്സ്
10
റിസർവ് ചെയ്ത സീറ്റ്. സാധാരണയായി പൂജ്യങ്ങൾ കൊണ്ട് നിറയും

41
സെർവർ ഹോസ്റ്റിന്റെ പേര്
 
സ്ട്രിംഗ്
64
DHCP സെർവറിന്റെ പേര്. സാധാരണയായി കൈമാറ്റം ചെയ്യപ്പെടുന്നില്ല

105
ബൂട്ട് ഫയലിന്റെ പേര്
 
സ്ട്രിംഗ്
128
ബൂട്ട് ചെയ്യുമ്പോൾ ഡിസ്ക്ലെസ് സ്റ്റേഷനുകൾ ഉപയോഗിക്കുന്ന സെർവറിലെ ഫയലിന്റെ പേര്

235
മാജിക് കുക്കികൾ
ചൊവ്വ: 63: 82: 53
ഹെക്സ്
4
"മാജിക്" നമ്പർ, അതനുസരിച്ച്, ഉൾപ്പെടെ. ഈ പാക്കറ്റ് DHCP പ്രോട്ടോക്കോളിന്റേതാണെന്ന് നിങ്ങൾക്ക് നിർണ്ണയിക്കാനാകും

DHCP ഓപ്ഷനുകൾ. ഏത് ക്രമത്തിലും പോകാം

236
ഓപ്ഷൻ നമ്പർ
53
ഡിസംബർ
3
ഓപ്ഷൻ 53, ഇത് DHCP പാക്കറ്റ് തരം 3 - DHCPREQUEST നിർവചിക്കുന്നു

 
ഓപ്ഷൻ ദൈർഘ്യം
1
ഡിസംബർ
1

 
ഓപ്‌ഷൻ മൂല്യം
3
ഡിസംബർ
1

 
ഓപ്ഷൻ നമ്പർ
61
ഡിസംബർ
1
ക്ലയന്റ് ഐഡി: 01 (Ehernet-ന്) + ക്ലയന്റ് MAC വിലാസം

 
ഓപ്ഷൻ ദൈർഘ്യം
7
ഡിസംബർ
1

 
ഓപ്‌ഷൻ മൂല്യം
01:2c:ab:25:ff:72:a6
ഹെക്സ്
7

 
ഓപ്ഷൻ നമ്പർ
60
ഡിസംബർ
 
"വെണ്ടർ ക്ലാസ് ഐഡന്റിഫയർ". എന്റെ കാര്യത്തിൽ, ഇത് DHCP ക്ലയന്റ് പതിപ്പ് റിപ്പോർട്ട് ചെയ്യുന്നു. ഒരുപക്ഷേ മറ്റ് ഉപകരണങ്ങൾ വ്യത്യസ്തമായ എന്തെങ്കിലും നൽകുന്നു. വിൻഡോസ് ഉദാഹരണമായി MSFT 5.0 റിപ്പോർട്ട് ചെയ്യുന്നു

 
ഓപ്ഷൻ ദൈർഘ്യം
11
ഡിസംബർ
 

 
ഓപ്‌ഷൻ മൂല്യം
udhcp 0.9.8
സ്ട്രിംഗ്
 

 
ഓപ്ഷൻ നമ്പർ
55
 
1
ക്ലയന്റ് ആവശ്യപ്പെട്ട നെറ്റ്‌വർക്ക് പാരാമീറ്ററുകൾ. രചന വ്യത്യാസപ്പെടാം

01 - നെറ്റ്വർക്ക് മാസ്ക്
03 - ഗേറ്റ്‌വേ
06 - ഡിഎൻഎസ്
oc - ഹോസ്റ്റിന്റെ പേര്
0f - നെറ്റ്‌വർക്ക് ഡൊമെയ്‌ൻ നാമം
1c - പ്രക്ഷേപണ അഭ്യർത്ഥനയുടെ വിലാസം (പ്രക്ഷേപണം)
42 - TFTP സെർവറിന്റെ പേര്
79 - ക്ലാസില്ലാത്ത സ്റ്റാറ്റിക് റൂട്ട്

 
ഓപ്ഷൻ ദൈർഘ്യം
8
 
1

 
ഓപ്‌ഷൻ മൂല്യം
01:03:06:0c:0f:1c:42:79
 
8

 
ഓപ്ഷൻ നമ്പർ
82
ഡിസംബർ
1
ഓപ്ഷൻ 82, DHCPDISCOVER-ൽ വന്നത് ആവർത്തിക്കുന്നു

 
ഓപ്ഷൻ ദൈർഘ്യം
18
ഡിസംബർ
1

 
ഓപ്‌ഷൻ മൂല്യം
01:08:00:06:00
01:01:00:00:01
02:06:00:03:0f
26:4d:ec
ഡിസംബർ
18

 
പാക്കേജിന്റെ അവസാനം
255
ഡിസംബർ
1
255 പാക്കറ്റിന്റെ അവസാനത്തെ പ്രതീകപ്പെടുത്തുന്നു

DHCPACK

DHCP സെർവറിൽ നിന്ന് "അതെ, അത് ശരിയാണ്, ഇതാണ് നിങ്ങളുടെ IP വിലാസം, ഞാൻ ഇത് മറ്റാർക്കും നൽകില്ല" എന്നതിന്റെ സ്ഥിരീകരണമെന്ന നിലയിൽ, സെർവറിൽ നിന്ന് ക്ലയന്റിലേക്ക് DHCPACK ഫോർമാറ്റിലുള്ള ഒരു പാക്കറ്റ് സേവനം നൽകുന്നു. മറ്റ് പാക്കറ്റുകളെ പോലെ തന്നെ ഇത് പ്രക്ഷേപണം ചെയ്യപ്പെടുന്നു. എന്നിരുന്നാലും, പൈത്തണിൽ നടപ്പിലാക്കിയ ഒരു DHCP സെർവറിനുള്ള കോഡിൽ, ഏതെങ്കിലും ബ്രോഡ്കാസ്റ്റ് അഭ്യർത്ഥന ഇതിനകം അറിയാമെങ്കിൽ, ഒരു നിർദ്ദിഷ്ട ക്ലയന്റ് ഐപിയിലേക്ക് ഒരു പാക്കറ്റ് അയച്ചുകൊണ്ട് ഞാൻ ഡ്യൂപ്ലിക്കേറ്റ് ചെയ്യുന്നു. മാത്രമല്ല, DHCPACK പാക്കറ്റ് ക്ലയന്റിലേക്ക് എത്തിയിട്ടുണ്ടോ എന്ന് DHCP സെർവർ ശ്രദ്ധിക്കുന്നില്ല. ക്ലയന്റിന് DHCPACK ലഭിക്കുന്നില്ലെങ്കിൽ, കുറച്ച് സമയത്തിന് ശേഷം അത് DHCPREQUEST ആവർത്തിക്കുന്നു.

DHCPACK പാക്കറ്റ് ഘടന പട്ടിക

പാക്കേജിലെ സ്ഥാനം
മൂല്യത്തിന്റെ പേര് (പൊതുവായത്)
ഉദാഹരണം:
ആമുഖം
ബൈറ്റ്
വിശദീകരണം

1
ബൂട്ട് അഭ്യർത്ഥന
2
ഹെക്സ്
1
സന്ദേശ തരം. 1 - ക്ലയന്റിൽ നിന്ന് സെർവറിലേക്കുള്ള അഭ്യർത്ഥന, 2 - സെർവറിൽ നിന്ന് ക്ലയന്റിലേക്കുള്ള പ്രതികരണം

2
ഹാർഡ്‌വെയർ തരം
1
ഹെക്സ്
1
ഹാർഡ്‌വെയർ വിലാസത്തിന്റെ തരം, ഈ പ്രോട്ടോക്കോളിൽ 1 - MAC

3
ഹാർഡ്‌വെയർ അഡ്രസ് ദൈർഘ്യം
6
ഹെക്സ്
1
ഉപകരണത്തിന്റെ MAC വിലാസ ദൈർഘ്യം

4
ഹംസ
1
ഹെക്സ്
1
ഇന്റർമീഡിയറ്റ് റൂട്ടുകളുടെ എണ്ണം

5
ഇടപാട് ഐഡി
23:cf:de:1d
ഹെക്സ്
4
അദ്വിതീയ ഇടപാട് ഐഡന്റിഫയർ. ഒരു അഭ്യർത്ഥന പ്രവർത്തനത്തിന്റെ തുടക്കത്തിൽ ക്ലയന്റ് സൃഷ്ടിച്ചത്

7
രണ്ടാമത്തേത് കഴിഞ്ഞു
0
ഹെക്സ്
4
ഒരു വിലാസം നേടുന്നതിനുള്ള പ്രക്രിയയുടെ ആരംഭം മുതൽ നിമിഷങ്ങൾക്കുള്ളിൽ സമയം

9
ബൂട്ട് പതാകകൾ
8000
ഹെക്സ്
2
പ്രോട്ടോക്കോൾ പാരാമീറ്ററുകൾ സൂചിപ്പിക്കുന്നതിന് സജ്ജമാക്കാൻ കഴിയുന്ന ചില ഫ്ലാഗുകൾ. ഈ സാഹചര്യത്തിൽ, "പ്രക്ഷേപണം" സജ്ജീകരിച്ചിരിക്കുന്നു

11
ക്ലയന്റ് IP വിലാസം
0.0.0.0
സ്ട്രിംഗ്
4
ക്ലയന്റ് ഐപി വിലാസം (എന്തെങ്കിലും ഉണ്ടെങ്കിൽ)

15
നിങ്ങളുടെ ക്ലയന്റ് IP വിലാസം
172.16.134.61
സ്ട്രിംഗ്
4
സെർവർ വാഗ്ദാനം ചെയ്യുന്ന IP വിലാസം (ലഭ്യമെങ്കിൽ)

19
അടുത്ത സെർവർ IP വിലാസം
0.0.0.0
സ്ട്രിംഗ്
4
സെർവർ IP വിലാസം (അറിയാമെങ്കിൽ)

23
റിലേ ഏജന്റ് IP വിലാസം
172.16.114.41
സ്ട്രിംഗ്
4
റിലേ ഏജന്റിന്റെ IP വിലാസം (ഉദാഹരണത്തിന്, ഒരു സ്വിച്ച്)

27
ക്ലയന്റ് MAC വിലാസം
14:d6:4d:a7:c9:55
ഹെക്സ്
6
പാക്കറ്റ് അയച്ചയാളുടെ (ക്ലയന്റ്) MAC വിലാസം

31
ക്ലയന്റ് ഹാർഡ്‌വെയർ വിലാസ പാഡിംഗ്
 
ഹെക്സ്
10
റിസർവ് ചെയ്ത സീറ്റ്. സാധാരണയായി പൂജ്യങ്ങൾ കൊണ്ട് നിറയും

41
സെർവർ ഹോസ്റ്റിന്റെ പേര്
 
സ്ട്രിംഗ്
64
DHCP സെർവറിന്റെ പേര്. സാധാരണയായി കൈമാറ്റം ചെയ്യപ്പെടുന്നില്ല

105
ബൂട്ട് ഫയലിന്റെ പേര്
 
സ്ട്രിംഗ്
128
ബൂട്ട് ചെയ്യുമ്പോൾ ഡിസ്ക്ലെസ് സ്റ്റേഷനുകൾ ഉപയോഗിക്കുന്ന സെർവറിലെ ഫയലിന്റെ പേര്

235
മാജിക് കുക്കികൾ
ചൊവ്വ: 63: 82: 53
ഹെക്സ്
4
"മാജിക്" നമ്പർ, അതനുസരിച്ച്, ഉൾപ്പെടെ. ഈ പാക്കറ്റ് DHCP പ്രോട്ടോക്കോളിന്റേതാണെന്ന് നിങ്ങൾക്ക് നിർണ്ണയിക്കാനാകും

DHCP ഓപ്ഷനുകൾ. ഏത് ക്രമത്തിലും പോകാം

236
ഓപ്ഷൻ നമ്പർ
53
ഡിസംബർ
3
ഓപ്ഷൻ 53, ഇത് DHCP പാക്കറ്റ് തരം 5 - DHCPACK നിർവചിക്കുന്നു

 
ഓപ്ഷൻ ദൈർഘ്യം
1
ഡിസംബർ
1

 
ഓപ്‌ഷൻ മൂല്യം
5
ഡിസംബർ
1

 
ഓപ്ഷൻ നമ്പർ
1
ഡിസംബർ
1
DHCP ക്ലയന്റിന് ഒരു നെറ്റ്‌വർക്ക് മാസ്ക് വാഗ്ദാനം ചെയ്യാനുള്ള ഓപ്ഷൻ

 
ഓപ്ഷൻ ദൈർഘ്യം
4
ഡിസംബർ
1

 
ഓപ്‌ഷൻ മൂല്യം
255.255.224.0
സ്ട്രിംഗ്
4

 
ഓപ്ഷൻ നമ്പർ
3
ഡിസംബർ
1
DHCP ക്ലയന്റിന് ഒരു ഡിഫോൾട്ട് ഗേറ്റ്‌വേ വാഗ്ദാനം ചെയ്യാനുള്ള ഓപ്ഷൻ

 
ഓപ്ഷൻ ദൈർഘ്യം
4
ഡിസംബർ
1

 
ഓപ്‌ഷൻ മൂല്യം
172.16.12.1
സ്ട്രിംഗ്
4

 
ഓപ്ഷൻ നമ്പർ
6
ഡിസംബർ
1
DNS ക്ലയന്റിലേക്ക് DHCP ഓഫർ ചെയ്യാനുള്ള ഓപ്ഷൻ

 
ഓപ്ഷൻ ദൈർഘ്യം
4
ഡിസംബർ
1

 
ഓപ്‌ഷൻ മൂല്യം
8.8.8.8
സ്ട്രിംഗ്
4

 
ഓപ്ഷൻ നമ്പർ
51
ഡിസംബർ
1
ഇഷ്യൂ ചെയ്ത നെറ്റ്‌വർക്ക് പാരാമീറ്ററുകളുടെ ആയുസ്സ് നിമിഷങ്ങൾക്കുള്ളിൽ, അതിനുശേഷം DHCP ക്ലയന്റ് അവ വീണ്ടും അഭ്യർത്ഥിക്കണം

 
ഓപ്ഷൻ ദൈർഘ്യം
4
ഡിസംബർ
1

 
ഓപ്‌ഷൻ മൂല്യം
86400
ഡിസംബർ
4

 
ഓപ്ഷൻ നമ്പർ
82
ഡിസംബർ
1
ഓപ്ഷൻ 82, DHCPDISCOVER-ൽ വന്നത് ആവർത്തിക്കുന്നു

 
ഓപ്ഷൻ ദൈർഘ്യം
18
ഡിസംബർ
1

 
ഓപ്‌ഷൻ മൂല്യം
01:08:00:06:00
01:01:00:00:01
02:06:00:03:0f
26:4d:ec
ഡിസംബർ
18

 
പാക്കേജിന്റെ അവസാനം
255
ഡിസംബർ
1
255 പാക്കറ്റിന്റെ അവസാനത്തെ പ്രതീകപ്പെടുത്തുന്നു

ഇൻസ്റ്റലേഷൻ

ഇൻസ്റ്റാളേഷനിൽ യഥാർത്ഥത്തിൽ ജോലിക്ക് ആവശ്യമായ പൈത്തൺ മൊഡ്യൂളുകൾ ഇൻസ്റ്റാൾ ചെയ്യുന്നു. MySQL ഇതിനകം ഇൻസ്റ്റാൾ ചെയ്യുകയും കോൺഫിഗർ ചെയ്യുകയും ചെയ്തിട്ടുണ്ടെന്ന് അനുമാനിക്കപ്പെടുന്നു.

ഫ്രീബിഎസ് ഡി

pkg ഇൻസ്റ്റാൾ python3 python3 -m surepip pip3 ഇൻസ്റ്റാൾ mysql-connector

ഉബുണ്ടു

sudo apt-get install python3 sudo apt-get install pip3 sudo pip3 ഇൻസ്റ്റാൾ mysql-connector

ഞങ്ങൾ ഒരു MySQL ഡാറ്റാബേസ് സൃഷ്‌ടിക്കുകയും അതിലേക്ക് pydhcp.sql ഡംപ് അപ്‌ലോഡ് ചെയ്യുകയും കോൺഫിഗറേഷൻ ഫയൽ കോൺഫിഗർ ചെയ്യുകയും ചെയ്യുന്നു.

കോൺഫിഗറേഷൻ

എല്ലാ സെർവർ ക്രമീകരണങ്ങളും ഒരു xml ഫയലിലാണ്. റഫറൻസ് ഫയൽ:

1.0 0.0.0.0 255.255.255.255 192.168.0.71 8600 1 255.255.255.0 192.168.0.1 പ്രാദേശിക ഹോസ്റ്റ് പരീക്ഷ പരീക്ഷ pydhcp option_8.8.8.8_hex:sw_port82:1:20 option_22_hex:sw_port82:2:16 option_18_hex:sw_mac:82:26 40 Upper(mac)=upper('{option_3_AgentRemoteId_hex}') ഉം അപ്പർ(പോർട്ട്)=upper('{option_1_AgentCircuitId_port_hex}') ഉം ഉള്ള ഉപയോക്താക്കളിൽ നിന്ന് ip,mask,router,dns തിരഞ്ഞെടുക്കുക Upper(mac)=upper('{sw_mac}') ഉം top(port)=upper('{sw_port82}')ഉം ഉള്ള ഉപയോക്താക്കളിൽ നിന്ന് ip,mask,router,dns തിരഞ്ഞെടുക്കുക Upper(mac)=upper('{ClientMacAddress}') എന്നിടത്ത് ഉപയോക്താക്കളിൽ നിന്ന് ip,mask,router,dns തിരഞ്ഞെടുക്കുക ചരിത്രത്തിലേക്ക് തിരുകുക (id,dt,mac,ip,comment) മൂല്യങ്ങൾ (null,now(),'{ClientMacAddress}','{RequestedIpAddress}','DHCPACK/INFORM')

ഇപ്പോൾ ടാഗുകളിൽ കൂടുതൽ വിശദമായി:

സെർവർ ആരംഭിക്കുന്നതിനുള്ള അടിസ്ഥാന ക്രമീകരണങ്ങൾ dhcpserver വിഭാഗം വിവരിക്കുന്നു, അതായത്:

  • ഹോസ്റ്റ് - പോർട്ട് 67-ൽ സെർവർ എന്ത് IP വിലാസമാണ് ശ്രദ്ധിക്കുന്നത്
  • പ്രക്ഷേപണം - DHCPOFFER, DHCPACK എന്നിവയ്‌ക്കായുള്ള പ്രക്ഷേപണം ഏത് ip ആണ്
  • DHCPServer - DHCP സെർവറിന്റെ ip എന്താണ്
  • ഇഷ്യൂ ചെയ്ത IP വിലാസത്തിന്റെ ലീസ് ടൈം പാട്ട സമയം
  • ThreadLimit - പോർട്ട് 67-ൽ ഇൻകമിംഗ് UDP പാക്കറ്റുകൾ പ്രോസസ്സ് ചെയ്യുന്നതിന് ഒരേസമയം എത്ര ത്രെഡുകൾ പ്രവർത്തിക്കുന്നു.
  • defaultMask,defaultRouter,defaultDNS - ഡാറ്റാബേസിൽ ഒരു ഐപി കണ്ടെത്തിയാൽ സബ്‌സ്‌ക്രൈബർക്ക് ഡിഫോൾട്ടായി എന്താണ് ഓഫർ ചെയ്യുന്നത്, എന്നാൽ അതിനായി അധിക പാരാമീറ്ററുകൾ വ്യക്തമാക്കിയിട്ടില്ല

mysql വിഭാഗം:

ഹോസ്റ്റ്, ഉപയോക്തൃനാമം, പാസ്‌വേഡ്, അടിസ്ഥാനനാമം - എല്ലാം സ്വയം സംസാരിക്കുന്നു. ഒരു ഏകദേശ ഡാറ്റാബേസ് ഘടന പോസ്റ്റ് ചെയ്തിരിക്കുന്നു സാമൂഹികം

അന്വേഷണ വിഭാഗം: ഓഫർ/ACK സ്വീകരിക്കുന്നതിനുള്ള അഭ്യർത്ഥനകൾ ഇവിടെ വിവരിച്ചിരിക്കുന്നു:

  • offer_count — ip,mask,router,dns പോലുള്ള ഫലം നൽകുന്ന അഭ്യർത്ഥനകളുള്ള വരികളുടെ എണ്ണം
  • offer_n — അന്വേഷണ സ്ട്രിംഗ്. റിട്ടേൺ ശൂന്യമാണെങ്കിൽ, ഇനിപ്പറയുന്ന ഓഫർ അഭ്യർത്ഥന നടപ്പിലാക്കുന്നു
  • history_sql - ഒരു സബ്‌സ്‌ക്രൈബർക്കുള്ള “അംഗീകാര ചരിത്രത്തിലേക്ക്” എഴുതുന്ന ഒരു അന്വേഷണം

അഭ്യർത്ഥനകളിൽ ഓപ്ഷനുകൾ വിഭാഗത്തിൽ നിന്നുള്ള ഏതെങ്കിലും വേരിയബിളുകൾ അല്ലെങ്കിൽ DHCP പ്രോട്ടോക്കോളിൽ നിന്നുള്ള ഓപ്ഷനുകൾ ഉൾപ്പെടുത്താം.

ഓപ്ഷനുകൾ വിഭാഗം. ഇവിടെയാണ് ഇത് കൂടുതൽ രസകരമാകുന്നത്. ഇവിടെ നമുക്ക് വേരിയബിളുകൾ സൃഷ്ടിക്കാൻ കഴിയും, അത് പിന്നീട് അന്വേഷണ വിഭാഗത്തിൽ ഉപയോഗിക്കാം.

ഉദാഹരണത്തിന്:

option_82_hex:sw_port1:20:22

, ഈ കമാൻഡ് ലൈൻ DHCP അഭ്യർത്ഥന ഓപ്‌ഷൻ 82-ൽ വന്ന മുഴുവൻ വരിയും ഹെക്‌സ് ഫോർമാറ്റിൽ, 20 മുതൽ 22 ബൈറ്റുകൾ ഉൾപ്പെടെയുള്ള ശ്രേണിയിൽ എടുത്ത് പുതിയ വേരിയബിളായ sw_port1-ൽ ഇടുന്നു (അഭ്യർത്ഥന വന്ന സ്ഥലത്തുനിന്ന് മാറുക)

option_82_hex:sw_mac:26:40

26:40 ശ്രേണിയിൽ നിന്ന് ഹെക്‌സ് എടുത്ത് sw_mac വേരിയബിൾ നിർവചിക്കുക

-d സ്വിച്ച് ഉപയോഗിച്ച് സെർവർ ആരംഭിക്കുന്നതിലൂടെ അന്വേഷണങ്ങളിൽ ഉപയോഗിക്കാവുന്ന സാധ്യമായ എല്ലാ ഓപ്ഷനുകളും നിങ്ങൾക്ക് കാണാൻ കഴിയും. ഇതുപോലൊരു ലോഗ് നമുക്ക് കാണാം:

--ഒരു DHCPINFORM പാക്കറ്റ് പോർട്ട് 67-ൽ എത്തിച്ചേർന്നു, 0025224ad764 , b'x91xa5xe0xa3xa5xa9-x8fx8a' , ('172.30.114.25', 68) {'ClientMacAddress'0025224: 'ClientMacAddress'764, ClientMacAddress'00ad7 b'x91 5%"Jxd0d' , ' HType': 'Ethernet', 'HostName': b'x3xa5xe9xa8xa8xa43-x0.0.0.0fx5.0a', 'ReqListDNS': True, 'ReqListDomainName': True, 'ReqListPerfowmRouterDiscover':ReqListDiscover, 'ReqListeR,' റൂട്ട്': ശരിയാണ്, 'ReqListSubnetM ചോദിക്കൂ': ശരിയാണ്, 'ReqListVendorSpecInfo': 0025224, 'RequestedIpAddress': '764', 'Vendor': b'MSFT 172.30.128.13', 'chaddr': '00ad00', '172.30.114.25', '308. , 'flags ': b'x6x1', 'giaddr': '82', 'gpoz': 12, 'hlen': 12, 'hops': 53, 'htype': 'MAC', 'magic_cookie': b'cx53Sc ', 'op': 'DHCPINFORM', 'option55': 55, 'option60': 60, 'option61': 61, 'option82': 82, 'option82': 12, 'option01': 06, ' option_00_byte': b'x04x00x01x00x06x02x08x00x06x00x1x9' b'x2x82x12010600040001000602080006001eXx589exb2xad', 'option_82_hex': '18, '82 _12_len': 01 06, 'option_00_str': "b'x04x00x01x00x06x02x08x00x06x00x1x9x2x768x0.0.0.0eXx001exb589xad'", 'ഫലം': തെറ്റ്, 'സെക്കൻഡ്': 'siaddr': '2', 'sw_mac': '1e06eb89ad', 'sw_port8': '3', 'xidbyte': b'

അതനുസരിച്ച്, നമുക്ക് {} എന്നതിൽ ഏത് വേരിയബിളും പൊതിയാൻ കഴിയും, അത് SQL അന്വേഷണത്തിൽ ഉപയോഗിക്കും.

ക്ലയന്റിന് ഐപി വിലാസം ലഭിച്ചുവെന്ന് ചരിത്രത്തിനായി നമുക്ക് രേഖപ്പെടുത്താം:

പൈത്തണിലെ DHCP+Mysql സെർവർ

പൈത്തണിലെ DHCP+Mysql സെർവർ

സെർവർ ആരംഭിക്കുന്നു

./pydhcpdb.py -d -c config.xml

— ഡി കൺസോൾ ഔട്ട്പുട്ട് മോഡ് ഡീബഗ്
- c <filename> കോൺഫിഗറേഷൻ ഫയൽ

വിശദീകരണം

ഇപ്പോൾ പൈത്തണിൽ സെർവർ നടപ്പിലാക്കുന്നതിനെക്കുറിച്ചുള്ള കൂടുതൽ വിശദാംശങ്ങൾ. അതൊരു വേദനയാണ്. പെരുമ്പാമ്പിനെ ഈച്ചയിൽ പഠിച്ചു. "കൊള്ളാം, എങ്ങനെയെങ്കിലും ഞാൻ അത് പ്രവർത്തിപ്പിച്ചു" എന്ന ശൈലിയിലാണ് പല നിമിഷങ്ങളും നിർമ്മിച്ചിരിക്കുന്നത്. ഒപ്റ്റിമൈസ് ചെയ്തിട്ടില്ല, പ്രധാനമായും പൈത്തൺ വികസനത്തിലെ ചെറിയ പരിചയം കാരണം ഈ രൂപത്തിൽ അവശേഷിക്കുന്നു. "കോഡ്" എന്നതിലെ സെർവർ നടപ്പാക്കലിന്റെ ഏറ്റവും രസകരമായ വശങ്ങളിൽ ഞാൻ വസിക്കും.

XML കോൺഫിഗറേഷൻ ഫയൽ പാർസർ

സാധാരണ പൈത്തൺ മൊഡ്യൂൾ xml.dom ഉപയോഗിക്കുന്നു. ഇത് ലളിതമാണെന്ന് തോന്നുന്നു, പക്ഷേ നടപ്പിലാക്കുമ്പോൾ ഈ മൊഡ്യൂൾ ഉപയോഗിച്ച് നെറ്റ്‌വർക്കിൽ വ്യക്തമായ ഡോക്യുമെന്റേഷന്റെയും ഉദാഹരണങ്ങളുടെയും ശ്രദ്ധേയമായ അഭാവം ഉണ്ടായിരുന്നു.

    വൃക്ഷം = minidom.parse(gconfig["config_file"]) mconfig=tree.getElementsByTagName("mysql") mconfig-ലെ elem: gconfig["mysql_host"]=elem.getElementsByTagName("host")[0].fidarta gconfig["mysql_username"]=elem.getElementsByTagName("ഉപയോക്തൃനാമം")[0].firstChild.data gconfig["mysql_password"]=elem.getElementsByTagName("password")[0].first"Child. =elem.getElementsByTagName("അടിസ്ഥാനനാമം")[0].firstChild.data dconfig=tree.getElementsByTagName("dhcpserver") dconfig-ലെ elem: gconfig["broadcast"]=elem.getElementsByTagcaste(0"ByTagcaste)". firstChild.data gconfig["dhcp_host"]=elem.getElementsByTagName("host")[0].firstChild.data gconfig["dhcp_LeaseTime"]=elem.getElementsByTagName("LeaseTime("LeaseTime"rstTime"). dhcp_ThreadLimit"]=int(elem.getElementsByTagName("ThreadLimit")[0].firstChild.data) gconfig["dhcp_Server"]=elem.getElementsByTagName("DHCPServer"rst. faultMask"] =elem.getElementsByTagName("defaultMask")[0].firstChild.data gconfig["dhcp_defaultRouter"]=elem.getElementsByTagName("defaultRouter")[0].firstChild.data gconfiglements പേര് (" defaultDNS")[0].firstChild.data qconfig=tree.getElementsByTagName("query") qconfig-ലെ elem: gconfig["offer_count"]=elem.getElementsByTagName("offer_count")[0].firtast. ശ്രേണി(int(gconfig["offer_count"])): gconfig["offer_"+str(num+0)]=elem.getElementsByTagName("offer_"+str(num+0))[1].firstChild.data gconfig ["history_sql"]=elem.getElementsByTagName("history_sql")[1].firstChild.data options=tree.getElementsByTagName("ഓപ്‌ഷനുകൾ") ഓപ്‌ഷനുകളിലെ ഘടകത്തിനായി: node=elem.getElementsByTagName എന്നതിനായുള്ള ("options in options) : optionsMod.append(options.firstChild.data)

മൾട്ടിത്രെഡിംഗ്

വിചിത്രമെന്നു പറയട്ടെ, പൈത്തണിലെ മൾട്ടിത്രെഡിംഗ് വളരെ വ്യക്തമായും ലളിതമായും നടപ്പിലാക്കുന്നു.

def PacketWork(data,addr): ... # ഇൻകമിംഗ് പാക്കറ്റ് പാഴ്‌സ് ചെയ്യുകയും അതിനോട് പ്രതികരിക്കുകയും ചെയ്യുക ... അതേസമയം ട്രൂ: ഡാറ്റ, addr = udp_socket.recvfrom(1024) # UDP പാക്കറ്റ് ത്രെഡിനായി കാത്തിരിക്കുന്നു = threading.Thread( target=PacketWork , args=(data,addr,)).start() # വന്നത് പോലെ - ഞങ്ങൾ മുമ്പ് നിർവചിച്ച PacketWork ഫംഗ്‌ഷൻ പാരാമീറ്ററുകൾ ഉപയോഗിച്ച് പശ്ചാത്തലത്തിൽ സമാരംഭിക്കുമ്പോൾ threading.active_count() >gconfig["dhcp_ThreadLimit"]: സമയം. സ്ലീപ്പ്(1) # ക്രമീകരണങ്ങളേക്കാൾ കൂടുതൽ ത്രെഡുകൾ ഇതിനകം പ്രവർത്തിക്കുന്നുണ്ടെങ്കിൽ, അവയിൽ കുറവ് വരുന്നതുവരെ ഞങ്ങൾ കാത്തിരിക്കുന്നു

DHCP പാക്കറ്റ് സ്വീകരിക്കുക/അയയ്ക്കുക

നെറ്റ്‌വർക്ക് കാർഡിലൂടെ വരുന്ന UDP പാക്കറ്റുകൾ തടസ്സപ്പെടുത്തുന്നതിന്, നിങ്ങൾ സോക്കറ്റ് "ഉയർത്തുക" ചെയ്യേണ്ടതുണ്ട്:

udp_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM,socket.IPPROTO_UDP) udp_socket.bind((gconfig["dhcp_host"],67))

, പതാകകൾ എവിടെയാണ്:

  • AF_INET - വിലാസ ഫോർമാറ്റ് IP: പോർട്ട് ആയിരിക്കും എന്നാണ് അർത്ഥമാക്കുന്നത്. AF_UNIX-ഉം ഉണ്ടാകാം - ഇവിടെ വിലാസം ഫയൽ നാമത്തിൽ നൽകിയിരിക്കുന്നു.
  • SOCK_DGRAM - ഞങ്ങൾ "റോ പാക്കറ്റ്" സ്വീകരിക്കുന്നില്ല എന്നാണ് അർത്ഥമാക്കുന്നത്, എന്നാൽ ഫയർവാളിലൂടെ ഇതിനകം കടന്നുപോയതും ഭാഗികമായി ട്രിം ചെയ്ത പാക്കറ്റും ഉള്ളത്. ആ. UDP പാക്കറ്റ് റാപ്പറിന്റെ "ഫിസിക്കൽ" ഘടകം ഇല്ലാതെ UDP പാക്കറ്റ് മാത്രമേ ഞങ്ങൾക്ക് ലഭിക്കൂ. നിങ്ങൾ SOCK_RAW ഫ്ലാഗ് ഉപയോഗിക്കുകയാണെങ്കിൽ, നിങ്ങൾ ഈ "റാപ്പർ" പാഴ്‌സ് ചെയ്യേണ്ടതുണ്ട്.

ഒരു പാക്കറ്റ് അയയ്ക്കുന്നത് ഒരു പ്രക്ഷേപണം പോലെയാകാം:

                    udp_socket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) #സോക്കറ്റ് ബ്രോഡ്‌കാസ്റ്റ് മോഡിലേക്ക് മാറ്റുക rz=udp_socket.sendto(packetack, (gconfig["broadcast"],68))

, കൂടാതെ "പാക്കേജ് എവിടെ നിന്ന് വന്നു" എന്ന വിലാസത്തിലേക്ക്:

                        udp_socket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) # സോക്കറ്റ് മൾട്ടി-ലിസണർ മോഡിലേക്ക് മാറ്റുക rz=udp_socket.sendto(packetack, addr)

, ഇവിടെ SOL_SOCKET എന്നാൽ ഓപ്‌ഷനുകൾ ക്രമീകരിക്കുന്നതിനുള്ള "പ്രോട്ടോക്കോൾ ലെവൽ" എന്നാണ് അർത്ഥമാക്കുന്നത്,

, SO_BROADCAST ഓപ്ഷൻ ഹെൽമെറ്റ് പാക്കേജ് "ബ്രോഡ്കാസ്റ്റ്" ആണ്

  ,SO_REUSEADDR ഓപ്‌ഷൻ സോക്കറ്റിനെ "നിരവധി ശ്രോതാക്കൾ" മോഡിലേക്ക് മാറ്റുന്നു. സിദ്ധാന്തത്തിൽ, ഈ സാഹചര്യത്തിൽ ഇത് അനാവശ്യമാണ്, എന്നാൽ ഞാൻ പരീക്ഷിച്ച ഫ്രീബിഎസ്ഡി സെർവറുകളിൽ ഒന്നിൽ, ഈ ഓപ്ഷൻ കൂടാതെ കോഡ് പ്രവർത്തിച്ചില്ല.

ഒരു DHCP പാക്കറ്റ് പാഴ്‌സ് ചെയ്യുന്നു

ഇവിടെയാണ് എനിക്ക് പൈത്തണിനെ ശരിക്കും ഇഷ്ടപ്പെട്ടത്. ബോക്‌സിന് പുറത്ത് ഇത് ബൈറ്റ്‌കോഡുമായി തികച്ചും വഴക്കമുള്ളതായിരിക്കാൻ നിങ്ങളെ അനുവദിക്കുന്നു. ദശാംശ മൂല്യങ്ങൾ, സ്ട്രിംഗുകൾ, ഹെക്സ് എന്നിവയിലേക്ക് വളരെ എളുപ്പത്തിൽ വിവർത്തനം ചെയ്യാൻ ഇത് അനുവദിക്കുന്നു - അതായത്. ഇതാണ് നമ്മൾ യഥാർത്ഥത്തിൽ പാക്കേജിന്റെ ഘടന മനസ്സിലാക്കേണ്ടത്. അതിനാൽ, ഉദാഹരണത്തിന്, നിങ്ങൾക്ക് HEX-ലും വെറും ബൈറ്റുകളിലും ബൈറ്റുകളുടെ ഒരു ശ്രേണി ലഭിക്കും:

    res["xidhex"]=data[4:8].hex() res["xidbyte"]=data[4:8]

, ബൈറ്റുകൾ ഒരു ഘടനയിലേക്ക് പാക്ക് ചെയ്യുക:

res["flags"]=pack('BB',data[10],data[11])

ഘടനയിൽ നിന്ന് IP നേടുക:

res["ciaddr"]=socket.inet_ntoa(pack('BBBB',data[12],data[13],data[14],data[15]));

തിരിച്ചും:

res=res+socket.inet_pton(socket.AF_INET, gconfig["dhcp_Server"])

തൽക്കാലം അത്രമാത്രം 😉

അവലംബം: www.habr.com

ഒരു അഭിപ്രായം ചേർക്കുക