ಪೈಥಾನ್‌ನಲ್ಲಿ DHCP+Mysql ಸರ್ವರ್

ಪೈಥಾನ್‌ನಲ್ಲಿ DHCP+Mysql ಸರ್ವರ್

ಈ ಯೋಜನೆಯ ಉದ್ದೇಶ ಹೀಗಿತ್ತು:

  • IPv4 ನೆಟ್‌ವರ್ಕ್‌ನಲ್ಲಿ DHCP ಕುರಿತು ಕಲಿಯುವುದು
  • ಪೈಥಾನ್ ಕಲಿಯುವಿಕೆ (ಮೊದಲಿನಿಂದ ಸ್ವಲ್ಪ ಹೆಚ್ಚು 😉)
  • ಸರ್ವರ್ ಬದಲಿ DB2DHCP (ನನ್ನ ಫೋರ್ಕ್), ಮೂಲ ಇಲ್ಲಿ, ಇದು ಹೊಸ OS ಗಾಗಿ ಜೋಡಿಸಲು ಹೆಚ್ಚು ಕಷ್ಟಕರವಾಗುತ್ತಿದೆ. ಮತ್ತು "ಇದೀಗ ಬದಲಾಯಿಸಲು" ಯಾವುದೇ ಮಾರ್ಗವಿಲ್ಲದ ಬೈನರಿ ಎಂದು ನನಗೆ ಇಷ್ಟವಿಲ್ಲ
  • ಚಂದಾದಾರರ ಮ್ಯಾಕ್ ಅಥವಾ ಸ್ವಿಚ್ ಮ್ಯಾಕ್+ಪೋರ್ಟ್ ಸಂಯೋಜನೆಯನ್ನು ಬಳಸಿಕೊಂಡು ಚಂದಾದಾರರ ಐಪಿ ವಿಳಾಸವನ್ನು ಆಯ್ಕೆ ಮಾಡುವ ಸಾಮರ್ಥ್ಯದೊಂದಿಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿರುವ ಡಿಹೆಚ್‌ಸಿಪಿ ಸರ್ವರ್ ಅನ್ನು ಪಡೆಯುವುದು (ಆಯ್ಕೆ 82)
  • ಮತ್ತೊಂದು ಬೈಕು ಬರೆಯುವುದು (ಓಹ್! ಇದು ನನ್ನ ನೆಚ್ಚಿನ ಚಟುವಟಿಕೆ)
  • Habrahabr ನಲ್ಲಿ ನಿಮ್ಮ ಕ್ಲಬ್-ಹ್ಯಾಂಡ್‌ನೆಸ್ ಬಗ್ಗೆ ಕಾಮೆಂಟ್‌ಗಳನ್ನು ಸ್ವೀಕರಿಸುವುದು (ಅಥವಾ ಇನ್ನೂ ಉತ್ತಮ, ಆಹ್ವಾನ) 😉

ಫಲಿತಾಂಶ: ಇದು ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ 😉 FreeBSD ಮತ್ತು Ubuntu OS ನಲ್ಲಿ ಪರೀಕ್ಷಿಸಲಾಗಿದೆ. ಸೈದ್ಧಾಂತಿಕವಾಗಿ, ಕೋಡ್ ಅನ್ನು ಯಾವುದೇ OS ಅಡಿಯಲ್ಲಿ ಕೆಲಸ ಮಾಡಲು ಕೇಳಬಹುದು, ಏಕೆಂದರೆ ಕೋಡ್‌ನಲ್ಲಿ ಯಾವುದೇ ನಿರ್ದಿಷ್ಟ ಬೈಂಡಿಂಗ್‌ಗಳಿಲ್ಲ ಎಂದು ತೋರುತ್ತದೆ.
ಎಚ್ಚರಿಕೆಯಿಂದ! ಇನ್ನೂ ಬಹಳಷ್ಟಿದೆ.

ಹವ್ಯಾಸಿಗಳಿಗೆ ರೆಪೊಸಿಟರಿಗೆ ಲಿಂಕ್ "ಜೀವಂತವಾಗಿ ಸ್ಪರ್ಶಿಸಿ".

"ಹಾರ್ಡ್‌ವೇರ್ ಅನ್ನು ಅಧ್ಯಯನ ಮಾಡುವ" ಫಲಿತಾಂಶವನ್ನು ಸ್ಥಾಪಿಸುವ, ಕಾನ್ಫಿಗರ್ ಮಾಡುವ ಮತ್ತು ಬಳಸುವ ಪ್ರಕ್ರಿಯೆಯು ತುಂಬಾ ಕಡಿಮೆಯಾಗಿದೆ, ಮತ್ತು ನಂತರ DHCP ಪ್ರೋಟೋಕಾಲ್ ಬಗ್ಗೆ ಸ್ವಲ್ಪ ಸಿದ್ಧಾಂತ. ನನಗೋಸ್ಕರ. ಮತ್ತು ಇತಿಹಾಸಕ್ಕಾಗಿ 😉

ಸ್ವಲ್ಪ ಸಿದ್ಧಾಂತ

DHCP ಎಂದರೇನು

ಇದು ನೆಟ್‌ವರ್ಕ್ ಪ್ರೋಟೋಕಾಲ್ ಆಗಿದ್ದು ಅದು ಡಿಹೆಚ್‌ಸಿಪಿ ಸರ್ವರ್‌ನಿಂದ ಸಾಧನವನ್ನು ಅದರ ಐಪಿ ವಿಳಾಸವನ್ನು (ಮತ್ತು ಗೇಟ್‌ವೇ, ಡಿಎನ್‌ಎಸ್, ಇತ್ಯಾದಿ) ಕಂಡುಹಿಡಿಯಲು ಅನುಮತಿಸುತ್ತದೆ. UDP ಪ್ರೋಟೋಕಾಲ್ ಬಳಸಿ ಪ್ಯಾಕೆಟ್‌ಗಳನ್ನು ವಿನಿಮಯ ಮಾಡಿಕೊಳ್ಳಲಾಗುತ್ತದೆ. ನೆಟ್ವರ್ಕ್ ನಿಯತಾಂಕಗಳನ್ನು ವಿನಂತಿಸುವಾಗ ಸಾಧನದ ಕಾರ್ಯಾಚರಣೆಯ ಸಾಮಾನ್ಯ ತತ್ವವು ಈ ಕೆಳಗಿನಂತಿರುತ್ತದೆ:

  1. ಸಾಧನವು (ಕ್ಲೈಂಟ್) ನೆಟ್‌ವರ್ಕ್‌ನಾದ್ಯಂತ UDP ಪ್ರಸಾರ ವಿನಂತಿಯನ್ನು (DHCPDISCOVER) "ಸರಿ, ಯಾರಾದರೂ ನನಗೆ IP ವಿಳಾಸವನ್ನು ನೀಡಿ" ಎಂಬ ವಿನಂತಿಯೊಂದಿಗೆ ಕಳುಹಿಸುತ್ತದೆ. ಇದಲ್ಲದೆ, ಸಾಮಾನ್ಯವಾಗಿ (ಆದರೆ ಯಾವಾಗಲೂ ಅಲ್ಲ) ವಿನಂತಿಯು ಪೋರ್ಟ್ 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 ರಚನೆ:

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
ವಹಿವಾಟು ID
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: 63
ಹೆಕ್ಸ್
4
"ಮ್ಯಾಜಿಕ್" ಸಂಖ್ಯೆ, ಅದರ ಪ್ರಕಾರ, incl. ಈ ಪ್ಯಾಕೆಟ್ DHCP ಪ್ರೋಟೋಕಾಲ್‌ಗೆ ಸೇರಿದೆ ಎಂದು ನೀವು ನಿರ್ಧರಿಸಬಹುದು

DHCP ಆಯ್ಕೆಗಳು. ಯಾವುದೇ ಕ್ರಮದಲ್ಲಿ ಹೋಗಬಹುದು

236
ಆಯ್ಕೆ ಸಂಖ್ಯೆ
53
ಡಿಸೆಂಬರ್
1
ಆಯ್ಕೆ 53, ಇದು DHCP ಪ್ಯಾಕೆಟ್ ಪ್ರಕಾರವನ್ನು ಸೂಚಿಸುತ್ತದೆ

1 - DHCP ಡಿಸ್ಕವರ್
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 - DNS
oc - ಹೋಸ್ಟ್ ಹೆಸರು
0f - ನೆಟ್ವರ್ಕ್ ಡೊಮೇನ್ ಹೆಸರು
1c - ಪ್ರಸಾರ ವಿನಂತಿಯ ವಿಳಾಸ (ಪ್ರಸಾರ)
42 - TFTP ಸರ್ವರ್ ಹೆಸರು
79 - ವರ್ಗರಹಿತ ಸ್ಥಿರ ಮಾರ್ಗ

 
ಆಯ್ಕೆಯ ಉದ್ದ
8
 
1

 
ಆಯ್ಕೆಯ ಮೌಲ್ಯ
01:03:06:0c:0f:1c:42:79
 
8

 
ಆಯ್ಕೆ ಸಂಖ್ಯೆ
82
ಡಿಸೆಂಬರ್
 
ಆಯ್ಕೆ 82, ಇದು ರಿಪೀಟರ್ ಸಾಧನದ MAC ವಿಳಾಸ ಮತ್ತು ಕೆಲವು ಹೆಚ್ಚುವರಿ ಮೌಲ್ಯಗಳನ್ನು ರವಾನಿಸುತ್ತದೆ.

ಹೆಚ್ಚಾಗಿ, ಇದು ಅಂತಿಮ DHCP ಕ್ಲೈಂಟ್ ರನ್ ಆಗುವ ಸ್ವಿಚ್ನ ಪೋರ್ಟ್ ಆಗಿದೆ. ಈ ಆಯ್ಕೆಯು ಹೆಚ್ಚುವರಿ ನಿಯತಾಂಕಗಳನ್ನು ಒಳಗೊಂಡಿದೆ. ಮೊದಲ ಬೈಟ್ "ಉಪಆಪ್ಷನ್" ನ ಸಂಖ್ಯೆ, ಎರಡನೆಯದು ಅದರ ಉದ್ದ, ನಂತರ ಅದರ ಮೌಲ್ಯ.

ಈ ಸಂದರ್ಭದಲ್ಲಿ, ಆಯ್ಕೆ 82 ರಲ್ಲಿ, ಉಪ-ಆಯ್ಕೆಗಳು ನೆಸ್ಟೆಡ್ ಆಗಿರುತ್ತವೆ:
ಏಜೆಂಟ್ ಸರ್ಕ್ಯೂಟ್ ಐಡಿ = 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
ವಹಿವಾಟು ID
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: 63
ಹೆಕ್ಸ್
4
"ಮ್ಯಾಜಿಕ್" ಸಂಖ್ಯೆ, ಅದರ ಪ್ರಕಾರ, incl. ಈ ಪ್ಯಾಕೆಟ್ DHCP ಪ್ರೋಟೋಕಾಲ್‌ಗೆ ಸೇರಿದೆ ಎಂದು ನೀವು ನಿರ್ಧರಿಸಬಹುದು

DHCP ಆಯ್ಕೆಗಳು. ಯಾವುದೇ ಕ್ರಮದಲ್ಲಿ ಹೋಗಬಹುದು

236
ಆಯ್ಕೆ ಸಂಖ್ಯೆ
53
ಡಿಸೆಂಬರ್
1
ಆಯ್ಕೆ 53, ಇದು DHCP 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 ಅನುಷ್ಠಾನವನ್ನು ಅವಲಂಬಿಸಿರುತ್ತದೆ. ವಿನಂತಿಯನ್ನು ಸ್ವೀಕರಿಸುವವರನ್ನು DHCP ಸರ್ವರ್‌ನ MAC ವಿಳಾಸವನ್ನು ಬಳಸಿಕೊಂಡು ನಿರ್ದಿಷ್ಟಪಡಿಸಲಾಗಿದೆ. ಅಲ್ಲದೆ, ಸರ್ವರ್‌ನ IP ವಿಳಾಸವನ್ನು ಈಗಾಗಲೇ ಪಡೆದಿದ್ದರೆ, ಮೊದಲು DHCPDISCOVER ಅನ್ನು ರಚಿಸದೆಯೇ ಕ್ಲೈಂಟ್‌ನಿಂದ DHCPREQUEST ಪ್ಯಾಕೆಟ್ ಅನ್ನು ಕಳುಹಿಸಬಹುದು.

DHCPREQUEST ಪ್ಯಾಕೆಟ್ ಸ್ಟ್ರಕ್ಚರ್ ಟೇಬಲ್

ಪ್ಯಾಕೇಜ್ನಲ್ಲಿ ಸ್ಥಾನ
ಮೌಲ್ಯದ ಹೆಸರು (ಸಾಮಾನ್ಯ)
ಉದಾಹರಣೆಗೆ
ಪರಿಚಯ
ಬೈಟ್
ವಿವರಣೆ

1
ಬೂಟ್ ವಿನಂತಿ
1
ಹೆಕ್ಸ್
1
ಸಂದೇಶ ಪ್ರಕಾರ. 1 - ಕ್ಲೈಂಟ್‌ನಿಂದ ಸರ್ವರ್‌ಗೆ ವಿನಂತಿ, 2 - ಸರ್ವರ್‌ನಿಂದ ಕ್ಲೈಂಟ್‌ಗೆ ಪ್ರತಿಕ್ರಿಯೆ

2
ಯಂತ್ರಾಂಶ ಪ್ರಕಾರ
1
ಹೆಕ್ಸ್
1
ಹಾರ್ಡ್‌ವೇರ್ ವಿಳಾಸದ ಪ್ರಕಾರ, ಈ ಪ್ರೋಟೋಕಾಲ್ 1 ರಲ್ಲಿ - MAC

3
ಹಾರ್ಡ್ವೇರ್ ವಿಳಾಸಗಳ ಉದ್ದ
6
ಹೆಕ್ಸ್
1
ಸಾಧನದ MAC ವಿಳಾಸದ ಉದ್ದ

4
ಹಾಪ್ಸ್
1
ಹೆಕ್ಸ್
1
ಮಧ್ಯಂತರ ಮಾರ್ಗಗಳ ಸಂಖ್ಯೆ

5
ವಹಿವಾಟು ID
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: 63
ಹೆಕ್ಸ್
4
"ಮ್ಯಾಜಿಕ್" ಸಂಖ್ಯೆ, ಅದರ ಪ್ರಕಾರ, incl. ಈ ಪ್ಯಾಕೆಟ್ DHCP ಪ್ರೋಟೋಕಾಲ್‌ಗೆ ಸೇರಿದೆ ಎಂದು ನೀವು ನಿರ್ಧರಿಸಬಹುದು

DHCP ಆಯ್ಕೆಗಳು. ಯಾವುದೇ ಕ್ರಮದಲ್ಲಿ ಹೋಗಬಹುದು

236
ಆಯ್ಕೆ ಸಂಖ್ಯೆ
53
ಡಿಸೆಂಬರ್
3
ಆಯ್ಕೆ 53, ಇದು DHCP ಪ್ಯಾಕೆಟ್ ಪ್ರಕಾರ 3 ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ - DHCPREQUEST

 
ಆಯ್ಕೆಯ ಉದ್ದ
1
ಡಿಸೆಂಬರ್
1

 
ಆಯ್ಕೆಯ ಮೌಲ್ಯ
3
ಡಿಸೆಂಬರ್
1

 
ಆಯ್ಕೆ ಸಂಖ್ಯೆ
61
ಡಿಸೆಂಬರ್
1
ಕ್ಲೈಂಟ್ ID: 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 - DNS
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 ಸರ್ವರ್‌ಗಾಗಿ ಕೆಳಗಿನ ಕೋಡ್‌ನಲ್ಲಿ, ಒಂದು ವೇಳೆ, ನಾನು ಯಾವುದೇ ಪ್ರಸಾರ ವಿನಂತಿಯನ್ನು ನಿರ್ದಿಷ್ಟ ಕ್ಲೈಂಟ್ IP ಗೆ ಕಳುಹಿಸುವ ಮೂಲಕ ಅದನ್ನು ಈಗಾಗಲೇ ತಿಳಿದಿದ್ದರೆ ಅದನ್ನು ನಕಲು ಮಾಡುತ್ತೇನೆ. ಮೇಲಾಗಿ, DHCPACK ಪ್ಯಾಕೆಟ್ ಕ್ಲೈಂಟ್‌ಗೆ ತಲುಪಿದೆಯೇ ಎಂಬುದನ್ನು DHCP ಸರ್ವರ್ ಲೆಕ್ಕಿಸುವುದಿಲ್ಲ. ಕ್ಲೈಂಟ್ DHCPACK ಅನ್ನು ಸ್ವೀಕರಿಸದಿದ್ದರೆ, ಸ್ವಲ್ಪ ಸಮಯದ ನಂತರ ಅದು DHCPREQUEST ಅನ್ನು ಪುನರಾವರ್ತಿಸುತ್ತದೆ

DHCPACK ಪ್ಯಾಕೆಟ್ ಸ್ಟ್ರಕ್ಚರ್ ಟೇಬಲ್

ಪ್ಯಾಕೇಜ್ನಲ್ಲಿ ಸ್ಥಾನ
ಮೌಲ್ಯದ ಹೆಸರು (ಸಾಮಾನ್ಯ)
ಉದಾಹರಣೆಗೆ
ಪರಿಚಯ
ಬೈಟ್
ವಿವರಣೆ

1
ಬೂಟ್ ವಿನಂತಿ
2
ಹೆಕ್ಸ್
1
ಸಂದೇಶ ಪ್ರಕಾರ. 1 - ಕ್ಲೈಂಟ್‌ನಿಂದ ಸರ್ವರ್‌ಗೆ ವಿನಂತಿ, 2 - ಸರ್ವರ್‌ನಿಂದ ಕ್ಲೈಂಟ್‌ಗೆ ಪ್ರತಿಕ್ರಿಯೆ

2
ಯಂತ್ರಾಂಶ ಪ್ರಕಾರ
1
ಹೆಕ್ಸ್
1
ಹಾರ್ಡ್‌ವೇರ್ ವಿಳಾಸದ ಪ್ರಕಾರ, ಈ ಪ್ರೋಟೋಕಾಲ್ 1 ರಲ್ಲಿ - MAC

3
ಹಾರ್ಡ್ವೇರ್ ವಿಳಾಸಗಳ ಉದ್ದ
6
ಹೆಕ್ಸ್
1
ಸಾಧನದ MAC ವಿಳಾಸದ ಉದ್ದ

4
ಹಾಪ್ಸ್
1
ಹೆಕ್ಸ್
1
ಮಧ್ಯಂತರ ಮಾರ್ಗಗಳ ಸಂಖ್ಯೆ

5
ವಹಿವಾಟು ID
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: 63
ಹೆಕ್ಸ್
4
"ಮ್ಯಾಜಿಕ್" ಸಂಖ್ಯೆ, ಅದರ ಪ್ರಕಾರ, incl. ಈ ಪ್ಯಾಕೆಟ್ 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 ಖಾತ್ರಿಪಿಪ್ pip3 mysql-ಕನೆಕ್ಟರ್ ಅನ್ನು ಸ್ಥಾಪಿಸಿ

ಉಬುಂಟು

sudo apt-get install python3 sudo apt-get install pip3 sudo pip3 install 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 ಮೇಲಿನ(mac)=ಮೇಲಿನ('{option_3_AgentRemoteId_hex}') ಮತ್ತು ಮೇಲಿನ(ಪೋರ್ಟ್)=ಮೇಲಿನ('{option_1_AgentCircuitId_port_hex}') ಇರುವ ಬಳಕೆದಾರರಿಂದ ip,mask,router,dns ಆಯ್ಕೆಮಾಡಿ ಮೇಲಿನ(mac)=ಮೇಲಿನ('{sw_mac}') ಮತ್ತು ಮೇಲಿನ(ಪೋರ್ಟ್)=ಮೇಲಿನ('{sw_port82}') ಬಳಕೆದಾರರಿಂದ ip,mask,router,dns ಆಯ್ಕೆಮಾಡಿ ಮೇಲಿನ(mac)=upper('{ClientMacAddress}') ಇರುವ ಬಳಕೆದಾರರಿಂದ ip,mask,router,dns ಆಯ್ಕೆಮಾಡಿ ಇತಿಹಾಸದಲ್ಲಿ ಸೇರಿಸಿ (id,dt,mac,ip,comment) ಮೌಲ್ಯಗಳು (ಶೂನ್ಯ,ಈಗ(),'{ClientMacAddress}','{RequestedIpAddress}','DHCPACK/INFORM')

ಈಗ ಟ್ಯಾಗ್‌ಗಳಲ್ಲಿ ಹೆಚ್ಚು ವಿವರವಾಗಿ:

dhcpserver ವಿಭಾಗವು ಸರ್ವರ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸಲು ಮೂಲಭೂತ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ವಿವರಿಸುತ್ತದೆ, ಅವುಗಳೆಂದರೆ:

  • ಹೋಸ್ಟ್ - ಪೋರ್ಟ್ 67 ನಲ್ಲಿ ಸರ್ವರ್ ಯಾವ IP ವಿಳಾಸವನ್ನು ಕೇಳುತ್ತದೆ
  • ಪ್ರಸಾರ - ಇದು ip DHCPOFFER ಮತ್ತು DHCPACK ಗಾಗಿ ಪ್ರಸಾರವಾಗಿದೆ
  • DHCPServer - DHCP ಸರ್ವರ್‌ನ ip ಎಂದರೇನು
  • ನೀಡಲಾದ IP ವಿಳಾಸದ ಗುತ್ತಿಗೆ ಸಮಯ ಗುತ್ತಿಗೆ ಸಮಯ
  • ಥ್ರೆಡ್‌ಲಿಮಿಟ್ - ಪೋರ್ಟ್ 67 ನಲ್ಲಿ ಒಳಬರುವ UDP ಪ್ಯಾಕೆಟ್‌ಗಳನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲು ಎಷ್ಟು ಥ್ರೆಡ್‌ಗಳು ಏಕಕಾಲದಲ್ಲಿ ಚಾಲನೆಯಲ್ಲಿವೆ. ಇದು ಹೆಚ್ಚಿನ-ಲೋಡ್ ಯೋಜನೆಗಳಿಗೆ ಸಹಾಯ ಮಾಡುತ್ತದೆ 😉
  • ಡೀಫಾಲ್ಟ್‌ಮಾಸ್ಕ್, ಡೀಫಾಲ್ಟ್ ರೂಟರ್, ಡೀಫಾಲ್ಟ್ ಡಿಎನ್‌ಎಸ್ - ಡೇಟಾಬೇಸ್‌ನಲ್ಲಿ ಐಪಿ ಕಂಡುಬಂದರೆ ಚಂದಾದಾರರಿಗೆ ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ಏನು ನೀಡಲಾಗುತ್ತದೆ, ಆದರೆ ಅದಕ್ಕೆ ಹೆಚ್ಚುವರಿ ನಿಯತಾಂಕಗಳನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಲಾಗಿಲ್ಲ

mysql ವಿಭಾಗ:

ಹೋಸ್ಟ್, ಬಳಕೆದಾರಹೆಸರು, ಪಾಸ್ವರ್ಡ್, ಮೂಲ ಹೆಸರು - ಎಲ್ಲವೂ ಸ್ವತಃ ಮಾತನಾಡುತ್ತವೆ. ಅಂದಾಜು ಡೇಟಾಬೇಸ್ ರಚನೆಯನ್ನು ಪೋಸ್ಟ್ ಮಾಡಲಾಗಿದೆ GitHub

ಪ್ರಶ್ನೆ ವಿಭಾಗ: ಕೊಡುಗೆ/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 ಪ್ಯಾಕೆಟ್ 67ad0025224 , b'x764xa91xe5xa0xa3xa5-x9fx8a' , ('8', 172.30.114.25) ನಿಂದ ಪೋರ್ಟ್ 68 ಗೆ ಆಗಮಿಸಿದೆ b'x0025224 764%"Jxd00d' , ' HType': 'Ethernet', 'HostName': b'x7xa91xe5xa0xa3xa5-x9fx8a', 'ReqListDNS': True, 'ReqListDomainName': True, 'ReqListPerfowmRouterDiscover:ReqListeR,' ಮಾರ್ಗ': ನಿಜ, 'ReqListSubnetM ಕೇಳು': ನಿಜ, 'ReqListVendorSpecInfo': 8, 'RequestedIpAddress': '43', 'Vendor': b'MSFT 0.0.0.0', 'chaddr': '5.0ad0025224', '764dr'. , 'ಧ್ವಜಗಳು ': b'x172.30.128.13x00', 'giaddr': '00', 'gpoz': 172.30.114.25, 'hlen': 308, 'ಹಾಪ್ಸ್': 6, 'htype': 'MAC', 'ಮ್ಯಾಜಿಕ್_ಕುಕೀ': b'cx1Sc ', 'op': 'DHCPINFORM', 'option82': 12, 'option12': 53, 'option53': 55, 'option55': 60, 'option60': 61, 'option61': 82, ' option_82_byte': b'x82x12x01x06x00x04x00x01x00x06x02x08' b'x00x06x00eXx1exb9xad', 'option_2_hex': '82, '12010600040001000602080006001 _589_len': 2 82, 'option_18_str': "b'x82x12x01x06x00x04x00x01x00x06x02x08x00x06x00eXx1exb9xad'", 'ಫಲಿತಾಂಶ': ತಪ್ಪು, 'ಸೆಕೆಂಡು': 'siaddr': '2', 'sw_mac': '768e0.0.0.0eb001ad', 'sw_port589': '2', 'xidbyte': b'

ಅಂತೆಯೇ, ನಾವು ಯಾವುದೇ ವೇರಿಯೇಬಲ್ ಅನ್ನು {} ನಲ್ಲಿ ಸುತ್ತಿಕೊಳ್ಳಬಹುದು ಮತ್ತು ಅದನ್ನು SQL ಪ್ರಶ್ನೆಯಲ್ಲಿ ಬಳಸಲಾಗುತ್ತದೆ.

ಕ್ಲೈಂಟ್ IP ವಿಳಾಸವನ್ನು ಸ್ವೀಕರಿಸಿದ ಇತಿಹಾಸಕ್ಕಾಗಿ ನಾವು ದಾಖಲಿಸೋಣ:

ಪೈಥಾನ್‌ನಲ್ಲಿ 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].firtast gconfig["mysql_username"]=elem.getElementsByTagName("ಬಳಕೆದಾರಹೆಸರು")[0].firstChild.data gconfig["mysql_password"]=elem.getElementsByTagName("password")[0].first"Child. =elem.getElementsByTagName("basename")[0].firstChild.data dconfig=tree.getElementsByTagName("dhcpserver") dconfig ನಲ್ಲಿನ elem: gconfig["broadcast"]=elem.getElementsByTagcaste(0"ByTagcastN)". firstChild.data gconfig["dhcp_host"]=elem.getElementsByTagName("host")[0].firstChild.data gconfig["dhcp_LeaseTime"]=elem.getElementsByTagName("LeaseTime("LeaseTime"). dhcp_ThreadLimit"]=int(elem.getElementsByTagName("ThreadLimit")[0].firstChild.data) gconfig["dhcp_Server"]=elem.getElementsByTagName("DHCPServer" ತಪ್ಪು ಮಾಸ್ಕ್"] =elem.getElementsByTagName("defaultMask")[0].firstChild.data gconfig["dhcp_defaultRouter"]=elem.getElementsByTagName("defaultRouter")[0].firstChild.data gdconfiglements ಹೆಸರು (" defaultDNS")[0].firstChild.data qconfig=tree.getElementsByTagName("ಪ್ರಶ್ನೆ") 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 for("option"inoptions) : optionsMod.append(options.firstChild.data)

ಮಲ್ಟಿಥ್ರೆಡಿಂಗ್

ವಿಚಿತ್ರವೆಂದರೆ, ಪೈಥಾನ್‌ನಲ್ಲಿ ಮಲ್ಟಿಥ್ರೆಡಿಂಗ್ ಅನ್ನು ಬಹಳ ಸ್ಪಷ್ಟವಾಗಿ ಮತ್ತು ಸರಳವಾಗಿ ಅಳವಡಿಸಲಾಗಿದೆ.

def PacketWork(data,addr): ... # ಒಳಬರುವ ಪ್ಯಾಕೆಟ್ ಅನ್ನು ಪಾರ್ಸ್ ಮಾಡುವ ಮತ್ತು ಅದಕ್ಕೆ ಪ್ರತಿಕ್ರಿಯಿಸುವ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆ ... ನಿಜವಾಗಿದ್ದರೂ: ಡೇಟಾ, addr = udp_socket.recvfrom(1024) # UDP ಪ್ಯಾಕೆಟ್ ಥ್ರೆಡ್‌ಗಾಗಿ ಕಾಯುತ್ತಿದೆ = ಥ್ರೆಡ್ಡಿಂಗ್.ಥ್ರೆಡ್( ಗುರಿ=PacketWork , args=(data,addr,)).start() # ಬಂದಂತೆ - ನಾವು ಹಿಂದೆ ವ್ಯಾಖ್ಯಾನಿಸಿದ PacketWork ಕಾರ್ಯವನ್ನು ಪ್ಯಾರಾಮೀಟರ್‌ಗಳೊಂದಿಗೆ ಹಿನ್ನೆಲೆಯಲ್ಲಿ ಪ್ರಾರಂಭಿಸುತ್ತೇವೆ ಥ್ರೆಡಿಂಗ್.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 ಆಯ್ಕೆಯು ಸಾಕೆಟ್ ಅನ್ನು "ಹಲವು ಕೇಳುಗರು" ಮೋಡ್‌ಗೆ ಬದಲಾಯಿಸುತ್ತದೆ. ಸಿದ್ಧಾಂತದಲ್ಲಿ, ಈ ಸಂದರ್ಭದಲ್ಲಿ ಇದು ಅನಗತ್ಯವಾಗಿದೆ, ಆದರೆ ನಾನು ಪರೀಕ್ಷಿಸಿದ FreeBSD ಸರ್ವರ್‌ಗಳಲ್ಲಿ ಒಂದರಲ್ಲಿ, ಈ ಆಯ್ಕೆಯಿಲ್ಲದೆ ಕೋಡ್ ಕಾರ್ಯನಿರ್ವಹಿಸಲಿಲ್ಲ.

DHCP ಪ್ಯಾಕೆಟ್ ಅನ್ನು ಪಾರ್ಸಿಂಗ್ ಮಾಡಲಾಗುತ್ತಿದೆ

ಇಲ್ಲಿ ನಾನು ಪೈಥಾನ್ ಅನ್ನು ನಿಜವಾಗಿಯೂ ಇಷ್ಟಪಟ್ಟೆ. ಬಾಕ್ಸ್‌ನ ಹೊರಗೆ ಇದು ಬೈಟ್‌ಕೋಡ್‌ನೊಂದಿಗೆ ಸಾಕಷ್ಟು ಹೊಂದಿಕೊಳ್ಳಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ ಎಂದು ಅದು ತಿರುಗುತ್ತದೆ. ಇದನ್ನು ದಶಮಾಂಶ ಮೌಲ್ಯಗಳು, ತಂತಿಗಳು ಮತ್ತು ಹೆಕ್ಸ್ ಆಗಿ ಸುಲಭವಾಗಿ ಭಾಷಾಂತರಿಸಲು ಅನುಮತಿಸುತ್ತದೆ - ಅಂದರೆ. ಪ್ಯಾಕೇಜಿನ ರಚನೆಯನ್ನು ನಾವು ನಿಜವಾಗಿಯೂ ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬೇಕಾಗಿದೆ. ಆದ್ದರಿಂದ, ಉದಾಹರಣೆಗೆ, ನೀವು HEX ನಲ್ಲಿ ಬೈಟ್‌ಗಳ ಶ್ರೇಣಿಯನ್ನು ಪಡೆಯಬಹುದು ಮತ್ತು ಕೇವಲ ಬೈಟ್‌ಗಳು:

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

, ಬೈಟ್‌ಗಳನ್ನು ರಚನೆಯಾಗಿ ಪ್ಯಾಕ್ ಮಾಡಿ:

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

ರಚನೆಯಿಂದ ಐಪಿ ಪಡೆಯಿರಿ:

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

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ