ਪਾਈਥਨ ਵਿੱਚ DHCP+Mysql ਸਰਵਰ

ਪਾਈਥਨ ਵਿੱਚ DHCP+Mysql ਸਰਵਰ

ਇਸ ਪ੍ਰੋਜੈਕਟ ਦਾ ਉਦੇਸ਼ ਸੀ:

  • ਇੱਕ IPv4 ਨੈੱਟਵਰਕ 'ਤੇ DHCP ਬਾਰੇ ਸਿੱਖਣਾ
  • Python ਸਿੱਖਣਾ (ਸ਼ੁਰੂ ਤੋਂ ਥੋੜਾ ਹੋਰ 😉)
  • ਸਰਵਰ ਤਬਦੀਲੀ DB2DHCP (ਮੇਰਾ ਫੋਰਕ), ਅਸਲੀ ਇੱਥੇ, ਜੋ ਕਿ ਨਵੇਂ OS ਲਈ ਇਕੱਠੇ ਕਰਨਾ ਔਖਾ ਹੁੰਦਾ ਜਾ ਰਿਹਾ ਹੈ। ਅਤੇ ਮੈਨੂੰ ਇਹ ਪਸੰਦ ਨਹੀਂ ਹੈ ਕਿ ਇਹ ਇੱਕ ਬਾਈਨਰੀ ਹੈ ਕਿ "ਹੁਣੇ ਬਦਲਣ" ਦਾ ਕੋਈ ਤਰੀਕਾ ਨਹੀਂ ਹੈ
  • ਸਬਸਕ੍ਰਾਈਬਰ ਦੇ ਮੈਕ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਗਾਹਕ ਦੇ IP ਐਡਰੈੱਸ ਨੂੰ ਚੁਣਨ ਦੀ ਯੋਗਤਾ ਦੇ ਨਾਲ ਇੱਕ ਕਾਰਜਸ਼ੀਲ DHCP ਸਰਵਰ ਪ੍ਰਾਪਤ ਕਰਨਾ ਜਾਂ ਮੈਕ+ਪੋਰਟ ਸੁਮੇਲ ਨੂੰ ਬਦਲਣਾ (ਵਿਕਲਪ 82)
  • ਇੱਕ ਹੋਰ ਸਾਈਕਲ ਲਿਖਣਾ (ਓਹ! ਇਹ ਮੇਰੀ ਮਨਪਸੰਦ ਗਤੀਵਿਧੀ ਹੈ)
  • Habrahabr 'ਤੇ ਤੁਹਾਡੇ ਕਲੱਬ-ਹੱਥ ਬਾਰੇ ਟਿੱਪਣੀਆਂ ਪ੍ਰਾਪਤ ਕਰਨਾ (ਜਾਂ ਬਿਹਤਰ ਅਜੇ ਤੱਕ, ਇੱਕ ਸੱਦਾ) 😉

ਨਤੀਜਾ: ਇਹ ਕੰਮ ਕਰਦਾ ਹੈ 😉 FreeBSD ਅਤੇ Ubuntu OS 'ਤੇ ਟੈਸਟ ਕੀਤਾ ਗਿਆ। ਸਿਧਾਂਤਕ ਤੌਰ 'ਤੇ, ਕੋਡ ਨੂੰ ਕਿਸੇ ਵੀ OS ਦੇ ਅਧੀਨ ਕੰਮ ਕਰਨ ਲਈ ਕਿਹਾ ਜਾ ਸਕਦਾ ਹੈ, ਕਿਉਂਕਿ ਕੋਡ ਵਿੱਚ ਕੋਈ ਖਾਸ ਬਾਈਡਿੰਗ ਨਹੀਂ ਜਾਪਦੀ ਹੈ।
ਧਿਆਨ ਨਾਲ! ਹੋਰ ਬਹੁਤ ਕੁਝ ਆਉਣ ਵਾਲਾ ਹੈ।

ਸ਼ੌਕੀਨਾਂ ਲਈ ਰਿਪੋਜ਼ਟਰੀ ਲਈ ਲਿੰਕ "ਜ਼ਿੰਦਾ ਛੂਹੋ".

"ਹਾਰਡਵੇਅਰ ਦਾ ਅਧਿਐਨ ਕਰਨ" ਦੇ ਨਤੀਜੇ ਨੂੰ ਸਥਾਪਤ ਕਰਨ, ਸੰਰਚਿਤ ਕਰਨ ਅਤੇ ਵਰਤਣ ਦੀ ਪ੍ਰਕਿਰਿਆ ਬਹੁਤ ਘੱਟ ਹੈ, ਅਤੇ ਫਿਰ DHCP ਪ੍ਰੋਟੋਕੋਲ ਬਾਰੇ ਇੱਕ ਛੋਟਾ ਜਿਹਾ ਸਿਧਾਂਤ। ਮੇਰੇ ਲਈ. ਅਤੇ ਇਤਿਹਾਸ ਲਈ 😉

ਇੱਕ ਛੋਟਾ ਜਿਹਾ ਸਿਧਾਂਤ

DHCP ਕੀ ਹੈ

ਇਹ ਇੱਕ ਨੈੱਟਵਰਕ ਪ੍ਰੋਟੋਕੋਲ ਹੈ ਜੋ ਇੱਕ ਡਿਵਾਈਸ ਨੂੰ ਇੱਕ DHCP ਸਰਵਰ ਤੋਂ ਇਸਦੇ IP ਐਡਰੈੱਸ (ਅਤੇ ਗੇਟਵੇ, DNS, ਆਦਿ) ਦਾ ਪਤਾ ਲਗਾਉਣ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ। 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 ਬਣਤਰ:

DHCPDISCOVER

ਇਸ ਲਈ, ਇੱਕ ਡਿਵਾਈਸ ਲਈ ਇੱਕ 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
ਕਲਾਇੰਟ ਦਾ IP ਪਤਾ (ਜੇ ਕੋਈ ਹੈ)

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
"ਮੈਜਿਕ" ਨੰਬਰ, ਜਿਸ ਦੇ ਅਨੁਸਾਰ, ਸਮੇਤ. ਤੁਸੀਂ ਇਹ ਨਿਰਧਾਰਤ ਕਰ ਸਕਦੇ ਹੋ ਕਿ ਇਹ ਪੈਕੇਟ DHCP ਪ੍ਰੋਟੋਕੋਲ ਨਾਲ ਸਬੰਧਤ ਹੈ

DHCP ਵਿਕਲਪ। ਕਿਸੇ ਵੀ ਕ੍ਰਮ ਵਿੱਚ ਜਾ ਸਕਦਾ ਹੈ

236
ਵਿਕਲਪ ਨੰਬਰ
53
ਦਸੰਬਰ ਨੂੰ
1
ਵਿਕਲਪ 53, ਜੋ ਕਿ DHCP ਪੈਕੇਟ ਕਿਸਮ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ

1 - DHCPDISCOVER
3 - DHCPREQUEST
2 - DHCPOFFER
5 - ਡੀਐਚਸੀਪੈਕ
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 ਵਿੱਚ, ਉਪ-ਚੋਣਾਂ ਨੂੰ ਨੇਸਟ ਕੀਤਾ ਗਿਆ ਹੈ:
ਏਜੰਟ ਸਰਕਟ ID = 00:04:00:01:00:04, ਜਿੱਥੇ ਆਖਰੀ ਦੋ ਬਾਈਟਸ DHCP ਕਲਾਇੰਟ ਪੋਰਟ ਹਨ ਜਿੱਥੋਂ ਬੇਨਤੀ ਆਈ ਹੈ

ਏਜੰਟ ਰਿਮੋਟ ID = 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 ਪੈਕੇਟ ਦੇ ਅੰਤ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ

DHCPOFFER

ਜਿਵੇਂ ਹੀ ਸਰਵਰ ਨੂੰ 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
ਕਲਾਇੰਟ ਦਾ IP ਪਤਾ (ਜੇ ਕੋਈ ਹੈ)

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
"ਮੈਜਿਕ" ਨੰਬਰ, ਜਿਸ ਦੇ ਅਨੁਸਾਰ, ਸਮੇਤ. ਤੁਸੀਂ ਇਹ ਨਿਰਧਾਰਤ ਕਰ ਸਕਦੇ ਹੋ ਕਿ ਇਹ ਪੈਕੇਟ 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 ਪਤੇ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਨਿਸ਼ਚਿਤ ਕੀਤਾ ਗਿਆ ਹੈ। ਨਾਲ ਹੀ, ਇੱਕ DHCPREQUEST ਪੈਕੇਟ ਗਾਹਕ ਦੁਆਰਾ ਪਹਿਲਾਂ DHCPDISCOVER ਤਿਆਰ ਕੀਤੇ ਬਿਨਾਂ ਭੇਜਿਆ ਜਾ ਸਕਦਾ ਹੈ, ਜੇਕਰ ਸਰਵਰ ਦਾ IP ਪਤਾ ਪਹਿਲਾਂ ਹੀ ਪ੍ਰਾਪਤ ਕੀਤਾ ਗਿਆ ਹੈ।

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
ਕਲਾਇੰਟ ਦਾ IP ਪਤਾ (ਜੇ ਕੋਈ ਹੈ)

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
"ਮੈਜਿਕ" ਨੰਬਰ, ਜਿਸ ਦੇ ਅਨੁਸਾਰ, ਸਮੇਤ. ਤੁਸੀਂ ਇਹ ਨਿਰਧਾਰਤ ਕਰ ਸਕਦੇ ਹੋ ਕਿ ਇਹ ਪੈਕੇਟ 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 ਪੈਕੇਟ ਦੇ ਅੰਤ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ

ਡੀਐਚਸੀਪੈਕ

ਪੁਸ਼ਟੀਕਰਨ ਵਜੋਂ ਕਿ "ਹਾਂ, ਇਹ ਸਹੀ ਹੈ, ਇਹ ਤੁਹਾਡਾ IP ਪਤਾ ਹੈ, ਅਤੇ ਮੈਂ ਇਸਨੂੰ ਕਿਸੇ ਹੋਰ ਨੂੰ ਨਹੀਂ ਦੇਵਾਂਗਾ" DHCP ਸਰਵਰ ਤੋਂ, ਸਰਵਰ ਤੋਂ ਕਲਾਇੰਟ ਨੂੰ ਸਰਵਰ ਤੱਕ DHCPACK ਫਾਰਮੈਟ ਵਿੱਚ ਇੱਕ ਪੈਕੇਟ। ਇਹ ਦੂਜੇ ਪੈਕੇਟਾਂ ਵਾਂਗ ਹੀ ਪ੍ਰਸਾਰਣ ਭੇਜਿਆ ਜਾਂਦਾ ਹੈ। ਹਾਲਾਂਕਿ, ਪਾਈਥਨ ਵਿੱਚ ਲਾਗੂ ਕੀਤੇ ਇੱਕ DHCP ਸਰਵਰ ਲਈ ਹੇਠਾਂ ਦਿੱਤੇ ਕੋਡ ਵਿੱਚ, ਸਿਰਫ਼ ਇਸ ਸਥਿਤੀ ਵਿੱਚ, ਮੈਂ ਕਿਸੇ ਖਾਸ ਕਲਾਇੰਟ IP ਨੂੰ ਇੱਕ ਪੈਕੇਟ ਭੇਜ ਕੇ ਕਿਸੇ ਵੀ ਪ੍ਰਸਾਰਣ ਬੇਨਤੀ ਨੂੰ ਡੁਪਲੀਕੇਟ ਕਰਦਾ ਹਾਂ, ਜੇਕਰ ਇਹ ਪਹਿਲਾਂ ਹੀ ਜਾਣਿਆ ਜਾਂਦਾ ਹੈ। ਇਸ ਤੋਂ ਇਲਾਵਾ, DHCP ਸਰਵਰ ਇਸ ਗੱਲ ਦੀ ਪਰਵਾਹ ਨਹੀਂ ਕਰਦਾ ਕਿ DHCPACK ਪੈਕੇਟ ਕਲਾਇੰਟ ਤੱਕ ਪਹੁੰਚ ਗਿਆ ਹੈ ਜਾਂ ਨਹੀਂ। ਜੇਕਰ ਕਲਾਇੰਟ ਨੂੰ 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
ਕਲਾਇੰਟ ਦਾ IP ਪਤਾ (ਜੇ ਕੋਈ ਹੈ)

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
"ਮੈਜਿਕ" ਨੰਬਰ, ਜਿਸ ਦੇ ਅਨੁਸਾਰ, ਸਮੇਤ. ਤੁਸੀਂ ਇਹ ਨਿਰਧਾਰਤ ਕਰ ਸਕਦੇ ਹੋ ਕਿ ਇਹ ਪੈਕੇਟ 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 ਪੈਕੇਟ ਦੇ ਅੰਤ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ

ਸੈਟਿੰਗ

ਇੰਸਟਾਲੇਸ਼ਨ ਵਿੱਚ ਅਸਲ ਵਿੱਚ ਕੰਮ ਲਈ ਲੋੜੀਂਦੇ python ਮੋਡੀਊਲ ਨੂੰ ਇੰਸਟਾਲ ਕਰਨਾ ਸ਼ਾਮਲ ਹੁੰਦਾ ਹੈ। ਇਹ ਮੰਨਿਆ ਜਾਂਦਾ ਹੈ ਕਿ MySQL ਪਹਿਲਾਂ ਹੀ ਸਥਾਪਿਤ ਅਤੇ ਸੰਰਚਿਤ ਹੈ।

ਫ੍ਰੀਸਬੈਡ

pkg install python3 python3 -m surepip pip3 install mysql-connector

ਉਬਤੂੰ

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 ਉਪਭੋਗਤਾਵਾਂ ਤੋਂ ip,mask,router,dns ਚੁਣੋ ਜਿੱਥੇ upper(mac)=upper('{option_3_AgentRemoteId_hex}') ਅਤੇ upper(port)=upper('{option_1_AgentCircuitId_port_hex}') ਉਪਭੋਗਤਾਵਾਂ ਤੋਂ ip,mask,router,dns ਚੁਣੋ ਜਿੱਥੇ upper(mac)=upper('{sw_mac}') ਅਤੇ upper(port)=upper('{sw_port82}') ਉਪਭੋਗਤਾਵਾਂ ਤੋਂ ip,mask,router,dns ਚੁਣੋ ਜਿੱਥੇ upper(mac)=upper('{ClientMacAddress}') ਇਤਿਹਾਸ ਵਿੱਚ ਸੰਮਿਲਿਤ ਕਰੋ (id,dt,mac,ip,comment) ਮੁੱਲ (null,now(),'{ClientMacAddress}','{RequestedIpAddress}','DHCPACK/INFORM')

ਹੁਣ ਟੈਗਸ 'ਤੇ ਹੋਰ ਵਿਸਥਾਰ ਵਿੱਚ:

dhcpserver ਭਾਗ ਸਰਵਰ ਨੂੰ ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਬੁਨਿਆਦੀ ਸੈਟਿੰਗਾਂ ਦਾ ਵਰਣਨ ਕਰਦਾ ਹੈ, ਅਰਥਾਤ:

  • ਹੋਸਟ - ਸਰਵਰ ਪੋਰਟ 67 'ਤੇ ਕਿਹੜਾ IP ਐਡਰੈੱਸ ਸੁਣਦਾ ਹੈ
  • ਪ੍ਰਸਾਰਣ - ਕਿਹੜਾ ip DHCPOFFER ਅਤੇ DHCPACK ਲਈ ਪ੍ਰਸਾਰਣ ਹੈ
  • DHCPServer - DHCP ਸਰਵਰ ਦਾ ਆਈਪੀ ਕੀ ਹੈ
  • ਜਾਰੀ ਕੀਤੇ IP ਪਤੇ ਦਾ ਲੀਜ਼ਟਾਈਮ ਲੀਜ਼ ਟਾਈਮ
  • ਥ੍ਰੈਡਲਿਮਿਟ - ਪੋਰਟ 67 'ਤੇ ਆਉਣ ਵਾਲੇ UDP ਪੈਕੇਟਾਂ ਦੀ ਪ੍ਰਕਿਰਿਆ ਕਰਨ ਲਈ ਇੱਕੋ ਸਮੇਂ ਕਿੰਨੇ ਥ੍ਰੈੱਡ ਚੱਲ ਰਹੇ ਹਨ। ਇਹ ਉੱਚ-ਲੋਡ ਪ੍ਰੋਜੈਕਟਾਂ 'ਤੇ ਮਦਦ ਕਰਨ ਲਈ ਮੰਨਿਆ ਜਾਂਦਾ ਹੈ 😉
  • defaultMask,defaultRouter,defaultDNS - ਡਿਫਾਲਟ ਰੂਪ ਵਿੱਚ ਗਾਹਕ ਨੂੰ ਕੀ ਪੇਸ਼ਕਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ ਜੇਕਰ ਡੇਟਾਬੇਸ ਵਿੱਚ ਇੱਕ IP ਪਾਇਆ ਜਾਂਦਾ ਹੈ, ਪਰ ਇਸਦੇ ਲਈ ਵਾਧੂ ਮਾਪਦੰਡ ਨਿਰਧਾਰਤ ਨਹੀਂ ਕੀਤੇ ਗਏ ਹਨ

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

, sw_mac ਵੇਰੀਏਬਲ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰੋ, ਰੇਂਜ 26:40 ਤੋਂ ਹੈਕਸਾ ਲੈਂਦੇ ਹੋਏ

ਤੁਸੀਂ -d ਸਵਿੱਚ ਨਾਲ ਸਰਵਰ ਸ਼ੁਰੂ ਕਰਕੇ ਪੁੱਛਗਿੱਛਾਂ ਵਿੱਚ ਵਰਤੇ ਜਾ ਸਕਣ ਵਾਲੇ ਸਾਰੇ ਸੰਭਵ ਵਿਕਲਪ ਦੇਖ ਸਕਦੇ ਹੋ। ਅਸੀਂ ਇਸ ਲੌਗ ਵਰਗਾ ਕੁਝ ਵੇਖਾਂਗੇ:

--a DHCPINFORM ਪੈਕੇਟ ਪੋਰਟ 67 'ਤੇ ਪਹੁੰਚਿਆ, 0025224ad764 ਤੋਂ, b'x91xa5xe0xa3xa5xa9-x8fx8a' , ('172.30.114.25', 68) {'ClientMacAddress',C0025224dAddress',C764M00Ad7 yte': b'x91 5%"Jxd0d' , 'HType': 'ਈਥਰਨੈੱਟ', 'ਹੋਸਟਨਾਮ': b'x3xa5xe9xa8xa8xa43-x0.0.0.0fx5.0a', 'ReqListDNS': True, 'ReqListDomainName': True, 'ReqListPerfowmRouterDiscovererDiscoverer', TruqistRL'TruqistR: e': ਸੱਚ ਹੈ, 'ReqListSubnetM ask': True, 'ReqListVendorSpecInfo': 0025224, 'RequestedIpAddress': '764', 'Vendor': b'MSFT 172.30.128.13', 'chaddr': '00ad00', 'ciaddr': '172.30.114.25. , 'ਝੰਡੇ': b'x308x6', 'giaddr': '1', 'gpoz': 82, 'hlen': 12, 'hops': 12, 'htype': 'MAC', 'magic_cookie': b'cx53Sc ', 'op': 'DHCPINFORM', 'option53': 55, 'option55': 60, 'option60': 61, 'option61': 82, 'option82': 82, 'option12': 01, ' option_06_byte': b'x00x04x00x01x00x06x02x08x00x06x00x1' b'x9x2x82eXx12010600040001000602080006001exb589xad', 'option_2_hex': '82 _18_len': 82 12, 'option_01_str': "b'x06x00x04x00x01x00x06x02x08x00x06x00x1x9x2eXx768exb0.0.0.0xad'", 'ਨਤੀਜਾ': ਗਲਤ, 'ਸੈਕਿੰਡ', 001 'siaddr': '589', 'sw_mac': '2e1eb06ad', 'sw_port89': '8', 'xidbyte': b'

ਇਸ ਅਨੁਸਾਰ, ਅਸੀਂ ਕਿਸੇ ਵੀ ਵੇਰੀਏਬਲ ਨੂੰ {} ਵਿੱਚ ਸਮੇਟ ਸਕਦੇ ਹਾਂ ਅਤੇ ਇਹ SQL ਪੁੱਛਗਿੱਛ ਵਿੱਚ ਵਰਤਿਆ ਜਾਵੇਗਾ।

ਆਓ ਅਸੀਂ ਇਤਿਹਾਸ ਲਈ ਰਿਕਾਰਡ ਕਰੀਏ ਕਿ ਕਲਾਇੰਟ ਨੇ IP ਪਤਾ ਪ੍ਰਾਪਤ ਕੀਤਾ ਹੈ:

ਪਾਈਥਨ ਵਿੱਚ DHCP+Mysql ਸਰਵਰ

ਪਾਈਥਨ ਵਿੱਚ DHCP+Mysql ਸਰਵਰ

ਸਰਵਰ ਸ਼ੁਰੂ

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

— d ਕੰਸੋਲ ਆਉਟਪੁੱਟ ਮੋਡ ਡੀਬੱਗ
- c <filename> ਸੰਰਚਨਾ ਫਾਇਲ

ਡੀਬ੍ਰਿਫਿੰਗ

ਅਤੇ ਹੁਣ ਪਾਈਥਨ ਵਿੱਚ ਸਰਵਰ ਨੂੰ ਲਾਗੂ ਕਰਨ ਬਾਰੇ ਹੋਰ ਵੇਰਵੇ। ਇਹ ਇੱਕ ਦਰਦ ਹੈ. ਪਾਇਥਨ ਉੱਡਦਿਆਂ ਹੀ ਸਿੱਖ ਗਿਆ ਸੀ। ਬਹੁਤ ਸਾਰੇ ਪਲ "ਵਾਹ, ਕਿਸੇ ਤਰ੍ਹਾਂ ਮੈਂ ਇਸਨੂੰ ਕੰਮ ਕਰ ਦਿੱਤਾ" ਦੀ ਸ਼ੈਲੀ ਵਿੱਚ ਬਣਾਇਆ ਗਿਆ ਹੈ। ਬਿਲਕੁਲ ਵੀ ਅਨੁਕੂਲਿਤ ਨਹੀਂ ਹੈ, ਅਤੇ ਮੁੱਖ ਤੌਰ 'ਤੇ ਪਾਈਥਨ ਵਿਕਾਸ ਵਿੱਚ ਬਹੁਤ ਘੱਟ ਅਨੁਭਵ ਦੇ ਕਾਰਨ ਇਸ ਰੂਪ ਵਿੱਚ ਛੱਡ ਦਿੱਤਾ ਗਿਆ ਹੈ। ਮੈਂ "ਕੋਡ" ਵਿੱਚ ਸਰਵਰ ਲਾਗੂ ਕਰਨ ਦੇ ਸਭ ਤੋਂ ਦਿਲਚਸਪ ਪਹਿਲੂਆਂ 'ਤੇ ਵਿਚਾਰ ਕਰਾਂਗਾ.

XML ਸੰਰਚਨਾ ਫਾਇਲ ਪਾਰਸਰ

ਮਿਆਰੀ ਪਾਈਥਨ ਮੋਡੀਊਲ xml.dom ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ। ਇਹ ਸਧਾਰਨ ਜਾਪਦਾ ਹੈ, ਪਰ ਲਾਗੂ ਕਰਨ ਦੇ ਦੌਰਾਨ ਇਸ ਮੋਡੀਊਲ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਨੈੱਟਵਰਕ 'ਤੇ ਸਪੱਸ਼ਟ ਦਸਤਾਵੇਜ਼ਾਂ ਅਤੇ ਉਦਾਹਰਣਾਂ ਦੀ ਕਮੀ ਸੀ।

    tree = minidom.parse(gconfig["config_file"]) mconfig=tree.getElementsByTagName("mysql") mconfig ਵਿੱਚ ਐਲੀਮ ਲਈ: gconfig["mysql_host"]=elem.getElementsByTagName("ਹੋਸਟ")[0].firstChild.datata gconfig["mysql_username"]=elem.getElementsByTagName("username")[0].firstChild.data gconfig["mysql_password"]=elem.getElementsByTagName("ਪਾਸਵਰਡ")[0].firstChild"config_tagname]bad. =elem.getElementsByTagName("basename")[0].firstChild.data dconfig=tree.getElementsByTagName("dhcpserver") dconfig ਵਿੱਚ ਐਲੀਮ ਲਈ: gconfig["broadcast"]=elem.getElementsByTagName")[0. firstChild.data gconfig["dhcp_host"]=elem.getElementsByTagName("ਹੋਸਟ")[0].firstChild.data gconfig["dhcp_LeaseTime"]=elem.getElementsByTagName("LeaseTime")[0].firstChild. dhcp_ThreadLimit"]=int(elem.getElementsByTagName("ThreadLimit")[0].firstChild.data) gconfig["dhcp_Server"]=elem.getElementsByTagName("DHCPServer")[0p_dfdask] =elem.getElementsByTagName("defaultMask")[0].firstChild.data gconfig["dhcp_defaultRouter"]=elem.getElementsByTagName("defaultRouter")[0].firstChild.data"gconfig_defaultMask]["Dhcp.data' " defaultDNS"). ਰੇਂਜ(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("options") ਵਿਕਲਪਾਂ ਵਿੱਚ ਐਲੀਮ ਲਈ: node=elem.getElementsByTagName("options in"node) ਲਈ : optionsMod.append(options.firstChild.data)

ਮਲਟੀਥ੍ਰੈਡਿੰਗ

ਅਜੀਬ ਤੌਰ 'ਤੇ, ਪਾਈਥਨ ਵਿੱਚ ਮਲਟੀਥ੍ਰੈਡਿੰਗ ਨੂੰ ਬਹੁਤ ਸਪੱਸ਼ਟ ਅਤੇ ਸਧਾਰਨ ਰੂਪ ਵਿੱਚ ਲਾਗੂ ਕੀਤਾ ਗਿਆ ਹੈ।

def PacketWork(data,addr): ... # ਇਨਕਮਿੰਗ ਪੈਕੇਟ ਨੂੰ ਪਾਰਸ ਕਰਨ ਅਤੇ ਇਸਦਾ ਜਵਾਬ ਦੇਣ ਲਈ ਲਾਗੂ ਕਰਨਾ ... ਜਦੋਂ ਕਿ ਸਹੀ: ਡੇਟਾ, addr = udp_socket.recvfrom(1024) # UDP ਪੈਕੇਟ ਥ੍ਰੈਡ = ਥ੍ਰੈਡਿੰਗ. ਥ੍ਰੈਡ ( target=PacketWork , args=(data,addr,)).start() # ਜਿਵੇਂ ਕਿ ਇਹ ਆਇਆ ਸੀ - ਅਸੀਂ threading.active_count() >gconfig["dhcp_ThreadLimit"] ਦੇ ਦੌਰਾਨ ਪੈਰਾਮੀਟਰਾਂ ਦੇ ਨਾਲ ਬੈਕਗ੍ਰਾਉਂਡ ਵਿੱਚ ਪਹਿਲਾਂ ਪਰਿਭਾਸ਼ਿਤ PacketWork ਫੰਕਸ਼ਨ ਲਾਂਚ ਕਰਦੇ ਹਾਂ: ਸਮਾਂ। ਸਲੀਪ(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 ਪੈਕੇਟ ਨੂੰ ਪਾਰਸ ਕਰਨਾ

ਇਹ ਉਹ ਥਾਂ ਹੈ ਜਿੱਥੇ ਮੈਨੂੰ ਸੱਚਮੁੱਚ ਪਾਇਥਨ ਪਸੰਦ ਸੀ। ਇਹ ਪਤਾ ਚਲਦਾ ਹੈ ਕਿ ਬਾਕਸ ਦੇ ਬਾਹਰ ਇਹ ਤੁਹਾਨੂੰ ਬਾਈਟਕੋਡ ਨਾਲ ਕਾਫ਼ੀ ਲਚਕਦਾਰ ਹੋਣ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ. ਇਸ ਨੂੰ ਬਹੁਤ ਆਸਾਨੀ ਨਾਲ ਦਸ਼ਮਲਵ ਮੁੱਲ, ਸਤਰ ਅਤੇ ਹੈਕਸਾ ਵਿੱਚ ਅਨੁਵਾਦ ਕਰਨ ਦੀ ਇਜ਼ਾਜਤ ਦਿੰਦਾ ਹੈ - i.e. ਇਹ ਉਹ ਹੈ ਜੋ ਸਾਨੂੰ ਅਸਲ ਵਿੱਚ ਪੈਕੇਜ ਦੀ ਬਣਤਰ ਨੂੰ ਸਮਝਣ ਦੀ ਲੋੜ ਹੈ। ਇਸ ਲਈ, ਉਦਾਹਰਨ ਲਈ, ਤੁਸੀਂ 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

ਇੱਕ ਟਿੱਪਣੀ ਜੋੜੋ