ΠΠ»ΠΈΠ΅Π½Ρ TCP
Π ΡΠ»ΡΡΠ°Π΅ Ρ ΠΊΠ°Π½Π°Π»Π°ΠΌΠΈ ΠΌΡ ΠΏΡΠΎΡΡΠΎ ΡΠ²ΡΠ·ΡΠ²Π°Π»ΠΈ Π΄Π²Π° Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ pipe. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π»ΠΈ ΠΎΠ΄Π½ΠΎΡΡΠΎΡΠΎΠ½Π½ΠΈΠΉ ΠΊΠ°Π½Π°Π» ΡΠ²ΡΠ·ΠΈ. Π ΡΠ»ΡΡΠ°ΡΡ , ΠΊΠΎΠ³Π΄Π° Π½Π°ΠΌ Π±ΡΠ»ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ Π΄Π²ΡΡ ΡΡΠΎΡΠΎΠ½Π½ΡΡ ΡΠ²ΡΠ·Ρ Π½Π°ΠΌ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΠ»ΠΎΡΡ Π½Π°ΠΏΡΡΠ³Π°ΡΡΡΡ ΡΡΡΡ Π±ΠΎΠ»ΡΡΠ΅: ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π΄Π²Π° ΠΊΠ°Π½Π°Π»Π°, ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΏΠΎΡΠΎΠΊΠΈ ΠΈ Ρ. ΠΏ. ΠΠΎΡΠΎΠΊΠΎΠ²ΡΠ΅ ΡΠΎΠΊΠ΅ΡΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ Π΄Π²ΡΡΡΠΎΡΠΎΠ½Π½ΡΡ ΡΠ²ΡΠ·Ρ. Π’ΠΎ Π΅ΡΡΡ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΈΡΠ°ΡΡ ΠΈ ΠΏΠΈΡΠ°ΡΡ Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ… Π§ΠΈΡΠ°ΡΡ Π΅ΡΡ >
ΠΠ»ΠΈΠ΅Π½Ρ TCP (ΡΠ΅ΡΠ΅ΡΠ°Ρ, ΠΊΡΡΡΠΎΠ²Π°Ρ, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ)
ΠΠ»ΠΈΠ΅Π½Ρ TCP
ΠΠ΅Π· ΡΠ΅ΡΠ΅ΠΉ ΡΠ΅ΠΉΡΠ°Ρ Π½ΠΈΠΊΡΠ΄Π°, ΡΡΠΎ Π²Π΅ΡΠ½ΠΎ ΠΈ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ° ΠΈ Π΄Π»Ρ ΠΆΠ΅Π»Π΅Π·ΡΡΠ½ΠΈΠΊΠ°. Π‘ΡΠ°Π½Π΄Π°ΡΡΠΎΠΌ Π΄Π΅-ΡΠ°ΠΊΡΠΎ Π² ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ΅ΡΠ΅ΠΉ ΡΡΠ°Π» ΠΏΡΠΎΡΠΎΠΊΠΎΠ» TCP, ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π΅ΡΠ΅ Π½Π° ΡΠ°Π³ ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡ Π½Π°Ρ ΠΊ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»Π°ΠΌ. Π ΡΠΎΠΌΡ ΠΆΠ΅, ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠ²ΡΠΈΡΡ Ρ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ°ΠΌΠΈ ΠΌΠ΅ΠΆΡΠ΅ΡΠ΅Π²ΠΎΠ³ΠΎ ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½ΡΠΌΠΈ ΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΠ² ΡΡΠΈ Π·Π½Π°Π½ΠΈΡ Ρ Π½Π°ΡΠΈΠΌΠΈ ΠΏΠΎΠ·Π½Π°Π½ΠΈΡΠΌΠΈ Π² ΠΎΠ±Π»Π°ΡΡΠΈ ΠΌΠ΅ΠΆΠΏΡΠΎΡΠ΅ΡΡΠ½ΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΌΡ ΡΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΈΡΠ°ΡΡ Π²ΠΏΠΎΠ»Π½Π΅ Π΄ΠΎΡΡΠΎΠΉΠ½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ, ΡΡΠΎ Π²Ρ ΡΠΆΠ΅ ΠΈΠΌΠ΅Π΅ΡΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π² ΠΏΡΠΈΠ½ΡΠΈΠΏΠΎΠ² ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ΅ΡΠ΅ΠΉ Π½Π° Π±Π°Π·Π΅ TCP/IP. ΠΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π½Π°ΡΡ ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π΄ΠΎΠΌΠ΅Π½Π½ΠΎΠ΅ ΠΈΠΌΡ, IP-Π°Π΄ΡΠ΅Ρ ΠΈ ΠΏΠΎΡΡ. ΠΡΠ°ΠΊ, ΠΏΡΠΈΡΡΡΠΏΠΈΠΌ.
Π‘Π΅ΡΠ²Π΅ΡΡ ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΡ.
Π‘ΠΎΠΊΠ΅ΡΡ Π±ΡΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠΈΠΏΠΎΠ²: ΠΏΠΎΡΠΎΠΊΠΎΠ²ΡΠ΅ ΠΈ Π΄Π°ΡΠ°Π³ΡΠ°ΠΌΠΌΠ½ΡΠ΅. ΠΠ°ΡΠ°Π³ΡΠ°ΠΌΠΌΠ½ΡΠ΅ ΡΠΎΠΊΠ΅ΡΡ Π½Π΅ Π³Π°ΡΠ°Π½ΡΠΈΡΡΡΡ ΡΠΎΡ ΡΠ°Π½Π½ΠΎΡΡΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΡ Π΄Π°Π½Π½ΡΡ . Π‘ΠΎΠΊΠ΅ΡΡ ΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ ΡΠ°Π·Π²Π΅ ΡΡΠΎ Π΄Π»Ρ ΠΎΠ±ΠΌΠ΅Π½Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ Π·Π°ΠΎΡΡΡΡΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π½ΠΈΡ ΠΌΡ Π½Π΅ Π±ΡΠ΄Π΅ΠΌ. ΠΠΎΡΠΎΠΊΠΎΠ²ΡΠ΅ ΡΠΎΠΊΠ΅ΡΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ Π½Π°Π΄Π΅ΠΆΠ½ΡΠΉ Π΄Π²ΡΡΡΠΎΡΠΎΠ½Π½ΠΈΠΉ ΠΎΠ±ΠΌΠ΅Π½ Π΄Π°Π½Π½ΡΠΌΠΈ.
Π Π°Π±ΠΎΡΠ° Ρ ΡΠΎΠΊΠ΅ΡΠ°ΠΌΠΈ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΡ ΠΎΠΆΠ° Π½Π° ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠ°Π½Π°Π»Π°ΠΌΠΈ. ΠΠΎΠΌΠΈΠΌΠΎ ΡΠΈΠΏΠΎΠ², ΡΠΎΠΊΠ΅ΡΡ ΠΏΠΎΠ΄ΡΠ°Π·Π΄Π΅Π»ΡΡΡΡΡ ΠΏΠΎ ΠΎΠ±Π»Π°ΡΡΡΠΌ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ: INET ΠΈ UNIX. ΠΠ±Π»Π°ΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΡΠΎΠΊΠ΅ΡΠ°: Π΄Π»Ρ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ-ΡΠΎΠΊΠ΅ΡΠΎΠ² ΡΡΠΎ Π°Π΄ΡΠ΅Ρ Ρ ΠΎΡΡΠ° ΠΈ Π½ΠΎΠΌΠ΅Ρ ΠΏΠΎΡΡΠ°, Π° Π΄Π»Ρ ΡΠΎΠΊΠ΅ΡΠΎΠ² UNIX — ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π°. ΠΠ°Π»Π΅Π΅ ΡΠ΅ΡΡ ΠΏΠΎΠΉΠ΄Π΅Ρ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΠΎ ΠΏΠΎΡΠΎΠΊΠΎΠ²ΡΡ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ-ΡΠΎΠΊΠ΅ΡΠ°Ρ .
Π ΡΠ»ΡΡΠ°Π΅ Ρ ΠΊΠ°Π½Π°Π»Π°ΠΌΠΈ ΠΌΡ ΠΏΡΠΎΡΡΠΎ ΡΠ²ΡΠ·ΡΠ²Π°Π»ΠΈ Π΄Π²Π° Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ pipe. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π»ΠΈ ΠΎΠ΄Π½ΠΎΡΡΠΎΡΠΎΠ½Π½ΠΈΠΉ ΠΊΠ°Π½Π°Π» ΡΠ²ΡΠ·ΠΈ. Π ΡΠ»ΡΡΠ°ΡΡ , ΠΊΠΎΠ³Π΄Π° Π½Π°ΠΌ Π±ΡΠ»ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ Π΄Π²ΡΡ ΡΡΠΎΡΠΎΠ½Π½ΡΡ ΡΠ²ΡΠ·Ρ Π½Π°ΠΌ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΠ»ΠΎΡΡ Π½Π°ΠΏΡΡΠ³Π°ΡΡΡΡ ΡΡΡΡ Π±ΠΎΠ»ΡΡΠ΅: ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π΄Π²Π° ΠΊΠ°Π½Π°Π»Π°, ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΏΠΎΡΠΎΠΊΠΈ ΠΈ Ρ. ΠΏ. ΠΠΎΡΠΎΠΊΠΎΠ²ΡΠ΅ ΡΠΎΠΊΠ΅ΡΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ Π΄Π²ΡΡΡΠΎΡΠΎΠ½Π½ΡΡ ΡΠ²ΡΠ·Ρ. Π’ΠΎ Π΅ΡΡΡ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΈΡΠ°ΡΡ ΠΈ ΠΏΠΈΡΠ°ΡΡ Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ. ΠΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎΠΊΠ΅ΡΠΎΠ² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠ»ΠΎΠΆΠ½ΡΠ΅ΡΡΡ ΠΈΠ·-Π·Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠ΅ΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ. Π ΠΎΡΠ»ΠΈΡΠΈΠΈ ΠΎΡ ΠΊΠ°Π½Π°Π»ΠΎΠ², ΡΠΎΠΊΠ΅ΡΡ ΠΌΠΎΠ³ΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡΡΡ Π½Π° ΡΠ°Π·Π½ΡΡ ΠΌΠ°ΡΠΈΠ½Π°Ρ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΡΡ ΡΠ΅ΡΡΡ (ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠ΅ΠΉ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» TCP/IP). ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π±Ρ ΠΊΠ°ΠΊ-ΡΠΎ ΠΈΠ·Π±Π°Π²ΠΈΡΡΡΡ ΠΎΡ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΡΡΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π²Π²Π΅Π΄Π΅Π½Ρ ΡΠ°ΠΊΠΈΠ΅ ΠΏΠΎΠ½ΡΡΠΈΡ ΠΊΠ°ΠΊ ΡΠ΅ΡΠ²Π΅Ρ ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ. Π ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠΈ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ Π±ΡΠ΄Π΅ΠΌ Π½Π°Π·ΡΠ²Π°ΡΡ ΠΏΡΠΎΡΠ΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΠΎΠΊΠ΅Ρ ΠΈ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ². ΠΠ»ΠΈΠ΅Π½ΡΡ — ΡΡΠΎ ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΡΠ°ΡΡΡΡ ΠΈΠ½ΠΈΡΠΈΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ. ΠΡΠΈ ΡΡΠΎΠΌ, Π½Π΅ Π²Π°ΠΆΠ½ΠΎ Π½Π° ΠΊΠ°ΠΊΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅ Π² ΡΠ΅ΡΠΈ Π±ΡΠ΄Π΅Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡΡ ΠΊΠ»ΠΈΠ΅Π½Ρ: ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ½ΠΈΡΠΈΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ Π½Π° Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅ ΠΈΠ»ΠΈ Π½Π° ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ.
Π ΠΎΠ±ΡΠ΅ΠΌ, ΠΏΡΠΎΡΠ΅ΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠ°ΠΏΠΎΠ². ΠΠ΅ΡΠ²ΡΠΌ Π΄Π΅Π»ΠΎΠΌ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ ΡΠΎΠΊΠ΅ΡΠ° (ΠΈΠ½Π°ΡΠ΅ — ΠΈΠΌΡ) Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΊΠ»ΠΈΠ΅Π½Ρ ΡΡΠΎ ΠΈΠ»ΠΈ ΡΠ΅ΡΠ²Π΅Ρ. ΠΠ°Π»Π΅Π΅, ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΈ ΡΠ΅ΡΠ²Π΅Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΎΠΊΠ΅Ρ Ρ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΡΠ΅ΡΠ²Π΅Ρ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡ Π² ΡΠ΅ΠΆΠΈΠΌ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ Π²Ρ ΠΎΠ΄ΡΡΠΈΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ, Π° ΠΊΠ»ΠΈΠ΅Π½Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΏΠΎΠΏΡΡΠΊΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡ. Π ΡΠ»ΡΡΠ°Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΡΡΠΈΡ ΡΡΠ°ΠΏΠΎΠ² ΠΌΡ ΠΈΠΌΠ΅Π΅ΠΌ Π³ΠΎΡΠΎΠ²ΠΎΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅: Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ ΡΡΠ΅Π½ΠΈΡ/Π·Π°ΠΏΠΈΡΠΈ Ρ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΉ Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°. Π’Π΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΡΡΡΠΏΠ°ΡΡ ΠΊ ΠΎΠ±ΠΌΠ΅Π½Ρ Π΄Π°Π½Π½ΡΠΌΠΈ. Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ°Π·Π±ΠΎΡΠ° ΠΏΡΠΈΠ½ΡΠΈΠΏΠΎΠ² ΠΌΠ΅ΠΆΠΏΡΠΎΡΠ΅ΡΡΠ½ΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΌΡ ΡΠΆΠ΅ ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π»ΠΈΡΡ Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ ΠΎΡΠΊΡΡΡΡΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΎΠ². Π’Π°ΠΊ Π²ΠΎΡ, Ρ ΡΠΎΠΊΠ΅ΡΠ°ΠΌΠΈ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅: Π½Π΅ Π·Π°Π±ΡΠ²Π°ΠΉΡΠ΅ Π·Π°ΠΊΡΡΠ²Π°ΡΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΡ. ΠΠΏΡΠΎΡΠ΅ΠΌ, ΠΌΡ Π½Π°Π²Π΅ΡΠ½ΡΠΊΠ° Π΅ΡΠ΅ ΡΡΠΎΠ»ΠΊΠ½Π΅ΠΌΡΡ Ρ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, Π²Π΅Π΄Ρ Ρ Π½Π°Ρ Π²ΠΏΠ΅ΡΠ΅Π΄ΠΈ ΡΠ΅Π»Π°Ρ ΠΊΡΡΠ° ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½ΡΡ ΠΊΠ°ΠΌΠ½Π΅ΠΉ, ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΡΠ°Π·Π³ΡΠ΅Π±Π°ΡΡ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΡΠΎΠΊΠ΅ΡΠ°ΠΌΠΈ.
ΠΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ — ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° ΠΏΠΎ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ HTTP. Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΎΠ±Π»Π΅Π³ΡΠ°ΡΡΠΈΠΉ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠΎΠΊΠ΅ΡΠ°ΠΌΠΈ ΠΈΠ· Perl — IO: Socket. ΠΠ΄Π½Π°ΠΊΠΎ, ΠΌΡ Π½Π΅ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ IO: Socket, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΌΡ ΠΆΠ΅Π»Π°Π΅ΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π½Π°Π΄ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ΠΌ. Π₯ΠΎΡΡ ΡΠ΅Π°Π»ΡΠ½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ IO: Socket Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠ±Π»Π΅Π³ΡΠ°Π΅Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠΎΠΊΠ΅ΡΠ°ΠΌΠΈ, Π΄Π° ΠΊ ΡΠΎΠΌΡ ΠΆΠ΅ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ½ΠΈΠΆΠ°Π΅Ρ ΡΠΈΡΠΊ Π΄ΠΎΠΏΡΡΡΠΈΡΡ ΠΎΡΠΈΠ±ΠΊΡ. ΠΡΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΠΈ ΡΠ΅Π°Π»ΡΠ½ΡΡ Π·Π°Π΄Π°Ρ Ρ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ IO: Socket.
ΠΡΠ°ΠΊ, Ρ Π½Π°Π·Π²Π°Π» ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ «gethttp.pl ». ΠΠ°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ Socket, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ Π²ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΎΠ·Π°Π²ΠΈΡΠΈΠΌΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ, ΡΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΡΠΎΠΊΠ΅ΡΠΎΠ². ΠΠΎ, Π²ΡΠ΅ ΠΏΠΎ ΠΏΠΎΡΡΠ΄ΠΊΡ.
#!/usr/bin/perlw.
# gethttp.pl.
use Socket;
use strict;
unless ($#ARGV == 1){.
die «Usage: gethttp. pl [host] [document]n » ;
}.
my $sock_name = GetSockName ($ARGV[0], 80).
or die «Couldn «t convert $ARGV[0] into an Internet address: $!n » ;
socket (CONN, PF_INET, SOCK_STREAM, getprotobyname («tcp »));
connect (CONN,$sock_name).
or die «Couldn «t «connect to $ARGV[0]: $!n » ;
print CONN «GET $ARGV[1] HTTP/1.0n » ;
print CONN «Host: $ARGV[0]nn » ;
my @body = ;
close (CONN);
print join («» ,@body);
ΠΠΎΡΠ»Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΌΠΎΠ΄ΡΠ»Ρ Socket ΠΌΡ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π»ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΏΠ΅ΡΠ΅Π΄Π°Π½ΠΎ Π½Π° Π²Ρ ΠΎΠ΄ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. Π‘ΠΎΠ³Π»Π°ΡΠ½ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ, Π·Π°ΠΏΡΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π΄Π²ΡΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ: ΠΈΠΌΠ΅Π½Π΅ΠΌ Ρ ΠΎΡΡΠ° ΠΈ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΌ ΠΏΡΡΠ΅ΠΌ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌΠΎΠ³ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°. Π’Π°ΠΊ Π²ΠΎΡ, Π΅ΡΠ»ΠΈ ΠΌΠ°ΡΡΠΈΠ² Π²Ρ ΠΎΠ΄Π½ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π΄Π²ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², ΡΠΎΠ³Π΄Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ.
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ°Π³ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΡΠΎΠΊΠ΅ΡΠ°. Π€ΡΠ½ΠΊΡΠΈΡ GetSockName () ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΈΠΌΡ Ρ ΠΎΡΡΠ° (ΠΈΠ»ΠΈ Π΅Π³ΠΎ IP-Π°Π΄ΡΠ΅Ρ) ΠΈ Π½ΠΎΠΌΠ΅Ρ ΠΏΠΎΡΡΠ°. ΠΡΠ»ΠΈ ΠΊΠΎΠΌΡ ΡΠΎ Π½Π΅ΠΏΠΎΠ½ΡΡΠ΅Π½ ΡΠΌΡΡΠ» ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠ² Ρ ΠΎΡΡ ΠΈ ΠΏΠΎΡΡ, ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠΈ ΡΠ°ΠΊΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ: ΡΡΠΎ Π±Ρ ΠΏΠΎΠΏΠ°ΡΡΡ Π² Π³ΠΎΡΡΠΈ ΠΊ ΡΠ²ΠΎΠ΅ΠΌΡ Π·Π½Π°ΠΊΠΎΠΌΠΎΠΌΡ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π½Π°ΡΡ Π½ΠΎΠΌΠ΅Ρ Π΄ΠΎΠΌΠ° ΠΈ Π½ΠΎΠΌΠ΅Ρ ΠΊΠ²Π°ΡΡΠΈΡΡ. ΠΠΎΡ Π·Π΄Π΅ΡΡ Π½ΠΎΠΌΠ΅Ρ Π΄ΠΎΠΌΠ° — ΡΡΠΎ IP-Π°Π΄ΡΠ΅Ρ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, Π° ΠΊΠ²Π°ΡΡΠΈΡΠ° — Π½ΠΎΠΌΠ΅Ρ ΠΏΠΎΡΡΠ°.
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΡΠΎΠΊΠ΅ΡΠ° Π½Π° ΠΌΠΎΠΉ Π²Π·Π³Π»ΡΠ΄ ΠΎΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π½Π°, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠΊΡΡΠ²Π°Π΅Ρ Π²ΡΠ΅ Π½Π΅ΠΏΠΎΠ½ΡΡΠ½ΠΎΡΡΠΈ. Π ΡΠΎΠΌΡ ΠΆΠ΅, ΠΊΠ°ΠΊ Ρ ΡΠΆΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΠ», ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΈ ΡΠΎΠΊΠ΅ΡΠ° ΡΡΠΎ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ ΠΊΠ°ΠΊ Π΄Π»Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°, ΡΠ°ΠΊ ΠΈ Π΄Π»Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°. ΠΠΎ ΡΡΠΎΠΌΡ ΠΌΡ Ρ Π»Π΅Π³ΠΊΠΎΡΡΡΡ ΡΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ GetSockName () Π² Π½Π°ΡΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ .
ΠΠΎΡΠ»Π΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΡΠΎΠΊΠ΅ΡΠ° ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΡΠΎΠΊΠ΅Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ socket (). Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΡΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ (Π½Π° Π·Π°ΠΌΠ΅ΡΠΊΡ: ΠΎΠ±ΡΡΠ½ΡΠΉ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΠΉ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΎΡ), ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ ΠΎΠ±Π»Π°ΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΡΠΎΠΊΠ΅ΡΠ° (PF_INET ΠΈΠ»ΠΈ PF_UNIX), ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ ΡΠΈΠΏ ΡΠΎΠΊΠ΅ΡΠ° (Π΄Π°ΡΠ°Π³ΡΠ°ΠΌΠ½ΡΠΉ ΠΈΠ»ΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ²ΡΠΉ) ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°. ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠΌΡ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΡΠΈΡΠ»ΠΎΠ²ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ Π². Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ getprotobyname ().
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΠΎΠΊΠ΅Ρ ΡΠΎΠ·Π΄Π°Π½, ΠΌΡ ΠΏΡΡΠ°Π΅ΠΌΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡΡΡΡ Ρ ΡΠ΄Π°Π»Π΅Π½Π½ΡΠΌ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ. ΠΠ΅Π»Π°Π΅ΡΡΡ ΡΡΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ connect (), Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΡΡΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΠΎΠΊΠ΅ΡΠ°. Π ΡΠ»ΡΡΠ°Π΅ Π½Π΅ΡΠ΄Π°ΡΠ½ΠΎΠΉ ΠΏΠΎΠΏΡΡΠΊΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ Ρ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ. ΠΠ°Π»Π΅Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ print, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ»Π΅Π΄ΡΡ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° HTTP ΠΎΠ±ΡΡΠ²Π»ΡΡΡ ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π²ΡΠ΄Π°ΡΡ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ. Π ΠΌΠ°ΡΡΠΈΠ² @body ΠΌΡ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌ Π΄Π°Π½Π½ΡΠ΅, ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠ΅ ΠΎΡ ΡΠ΅ΡΠ²Π΅ΡΠ°. ΠΠ°ΠΊΡΡΠ²Π°Π΅ΠΌ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π° @body. ΠΠΎΡ ΠΈ Π½Π°Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ.
Π€ΡΠ½ΠΊΡΠΈΡ GetSockName.
Π’Π΅ΠΏΠ΅ΡΡ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ GetSockName ().
sub GetSockName{.
my ($nm,$pt) = @_;
return undef unless defined ($nm);
return undef unless defined ($pt);
return undef unless $nm = gethostbyname ($nm);
return sockaddr_in ($pt,$nm);
}.
ΠΠΎΡ ΡΠ°ΠΊΠ°Ρ Π½Π΅Π·Π°ΠΌΡΡΠ»ΠΎΠ²Π°ΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΡΠΏΠ°ΡΠ°Π΅Ρ Π½Π°Ρ ΠΎΡ Π³ΠΎΠ»ΠΎΠ²Π½ΠΎΠΉ Π±ΠΎΠ»ΠΈ ΠΏΡΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΡΠΎΠΊΠ΅ΡΠ°. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ gethostbyname () ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ IP-Π°Π΄ΡΠ΅Ρ Ρ ΠΎΡΡΠ° Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΠ½Π°ΡΠ΅ ΡΡΠΎ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΈΠΌΠ΅Π½ΠΈ. Π€ΡΠ½ΠΊΡΠΈΡ sockaddr_in () Π²Ρ ΠΎΠ΄ΠΈΡ Π² ΡΠΎΡΡΠ°Π² ΠΌΠΎΠ΄ΡΠ»Ρ Socket. Π ΡΠΊΠ°Π»ΡΡΠ½ΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ sockaddr_in ΡΠΏΠ°ΠΊΠΎΠ²ΡΠ²Π°Π΅Ρ Π½ΠΎΠΌΠ΅Ρ ΠΏΠΎΡΡΠ° ΠΈ Π°Π΄ΡΠ΅Ρ Ρ ΠΎΡΡΠ° Π² ΡΡΡΡΠΊΡΡΡΡ SOCKADDR_IN.
Π’Π΅ΠΏΠ΅ΡΡ Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ, ΡΡΠΎ ΠΆΠ΅ Ρ Π½Π°Ρ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ. ΠΠ°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ… Π₯Π°-Ρ Π°-Ρ Π°. Π§ΡΠΎ, ΠΎΠΏΡΡΡ Π·Π°Π²ΠΈΡΠ»ΠΈ? ΠΡ ΠΈ Π³Π΄Π΅ ΠΆΠ΅ Ρ Π½Π°Ρ ΠΎΡΠΈΠ±ΠΊΠ°? ΠΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ, ΠΌΡ Π·Π°Π±ΡΠ»ΠΈ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ Π±ΡΡΡΠ΅ΡΠΈΠ·Π°ΡΠΈΡ. ΠΠ°Π½Π½ΡΠ΅ ΠΊΠ°ΠΊ Π±Ρ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½Ρ, Π½ΠΎ ΠΈΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ°Π»ΠΎ Π΄Π»Ρ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π±ΡΡΡΠ΅ΡΠ°. ΠΠΎΡΡΠΎΠΌΡ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ, Π½Π°ΡΠΈ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π·Π°ΡΡΡΡΠ»ΠΈ Π² ΡΠΎΠΊΠ΅ΡΠ΅. Π ΡΠ΅ΡΠ²Π΅Ρ ΠΆΠ΄Π΅Ρ ΠΈ ΠΆΠ΄Π΅Ρ, ΠΊΠΎΠ³Π΄Π° ΠΆΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ Π·Π°ΡΠ²ΠΈΡ ΠΎ ΡΠ²ΠΎΠ΅ΠΌ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΈΡΠΏΡΠ°Π²ΠΈΠΌ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΡΠΎΠΊ:
connect (CONN,$sock_name).
or die «Couldn «t «connect to $ARGV[0]: $!n » ;
select (CONN); $|=1; select (STDOUT);
print CONN «GET $ARGV[1] HTTP/1.0n » ;
ΠΠΎΡ ΡΠ΅ΠΏΠ΅ΡΡ Π²ΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
.
ΠΠ°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, Π½Π΅ ΡΡΠΏΠ΅Ρ-ΠΏΡΠΏΠ΅Ρ, Π½ΠΎ Π½Π° ΠΊΠΎΠ΅-ΡΡΠΎ ΠΎΠ½Π° Π²ΡΠ΅-ΡΠ°ΠΊΠΈ ΡΠ³ΠΎΠ΄ΠΈΡΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ ΠΎΡΠ΄Π΅Π»ΠΈΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ΠΎΡΠ²Π΅ΡΠ° ΠΎΡ, Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ, ΡΠ΅Π»Π° ΠΎΡΠ²Π΅ΡΠ°, ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°ΡΠΈΠ²Π°ΡΡ ΡΠ°ΠΉΠ»Ρ ΠΏΠΎ HTTP. ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΠΊ ΠΈ ΡΠ΄Π΅Π»Π°Π΅ΠΌ.
ΠΠ°ΠΊ Π½Π°ΠΌ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ, ΠΎΡΠ²Π΅Ρ ΡΠ΅ΡΠ²Π΅ΡΠ° ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° ΠΈ ΡΠ΅Π»Π°. ΠΡΠΈ ΡΠ΅ΠΌ, Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΎΡΠ²Π΅ΡΠ° ΠΎΡΠ΄Π΅Π»ΡΠ΅ΡΡΡ ΠΎΡ ΡΠ΅Π»Π° Π΄Π²ΡΠΌΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π°ΠΌΠΈ ΡΡΡΠΎΠΊΠΈ. ΠΠΎΡ ΠΈ Π½Π°ΠΉΠ΄Π΅ΠΌ ΡΡΠΈ Π΄Π²Π° ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΡΡΡΠΎΠΊΠΈ:
print CONN «GET $ARGV[1] HTTP/1.0n » ;
print CONN «Host: $ARGV[0]nn » ;
my $body = «» ;
$body .= $_ while ;
close (CONN);
$body =~ s/^.+?nr?nr?//s;
print $body;
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
[root@avalon scripts]# ./gethttp.pl whirlwind.ru /index.cgi > index.html.
Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ HTML-ΠΊΠΎΠ΄Π° ΠΈΠ½Π΄Π΅ΠΊΡΠ½ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ Π½Π°ΡΠ΅Π³ΠΎ ΡΠ°ΠΉΡΠ°.
ΠΡ ΠΈ Π²ΡΠ΅, Π΄Π»Ρ Π½Π°ΡΠ°Π»Π°. Π£ Π²Π°Ρ ΡΠΆΠ΅ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π½Π°Π²ΡΠΊΠΎΠ² Π΄Π»Ρ Π²ΠΎΠ·Π½ΠΈ Ρ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°ΠΌΠΈ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ. ΠΠΎΡ ΠΈ ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΠΏΠΎΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ FTP, ΠΈΠ»ΠΈ SMTP.
Π‘ΠΏΠΈΡΠΎΠΊ Π»ΠΈΡΠ΅ΡΠ°ΡΡΡΡ
ΠΠ»Ρ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠΈ Π΄Π°Π½Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Π±ΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Ρ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ Ρ ΡΠ°ΠΉΡΠ° internet.