Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«UNIX: Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° сСтСвых ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 7

Автор Уильям БтивСнс

Π’Π°Π±Π»ΠΈΡ†Π° 1.4. Π Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ вСрсии эхо-сСрвСра, рассматриваСмыС Π² Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅

Листинг ОписаниС 5.1 TCP/IPv4, зависимый ΠΎΡ‚ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° 5.9 TCP/IPv4, зависимый ΠΎΡ‚ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°, ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ всСх Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… процСссов 6.3 TCP/IPv4, зависимый ΠΎΡ‚ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ select, ΠΎΠ΄ΠΈΠ½ процСсс ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ всСх ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² 6.5 TCP/IPv4, зависимый ΠΎΡ‚ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ poll, ΠΎΠ΄ΠΈΠ½ процСсс ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ всСх ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² 8.1 UDP/IPv4, зависимый ΠΎΡ‚ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° 8.14 TCP ΠΈ UDP/IPv4, зависимый ΠΎΡ‚ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ select 14.6 TCP, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ стандартный Π²Π²ΠΎΠ΄-Π²Ρ‹Π²ΠΎΠ΄ 15.3 Π”ΠΎΠΌΠ΅Π½Π½Ρ‹ΠΉ сокСт Unix, зависимый ΠΎΡ‚ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° 15.5 Π”Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠΌΠ΅Π½Π° Unix, зависит ΠΎΡ‚ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° 15.13 Π”ΠΎΠΌΠ΅Π½Π½Ρ‹ΠΉ сокСт Unix, с ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ΠΉ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° 22.3 UDP, ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ IP-адрСс назначСния ΠΈ имя ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ интСрфСйса, ΠΎΠ±Ρ€Π΅Π·Π°Π΅Ρ‚ Π΄Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌΡ‹ 22.13 UDP, связываСт всС адрСса интСрфСйсов 25.2 UDP, использованиС ΠΌΠΎΠ΄Π΅Π»ΠΈ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°, управляСмого сигналом 26.2 TCP, ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡ‚ΠΎΠΊ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° 26.3 TCP, ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡ‚ΠΎΠΊ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, машинонСзависимая (пСрСносимая) ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° 27.4 TCP/IPv4, ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ ΠΎΡ‚ отправитСля 27.6 UDP/IPv4, ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ ΠΎΡ‚ отправитСля ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΅Π³ΠΎ 28.21 UDP, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ icmpd для получСния асинхронных ошибок Π”.9 UDP, связываСт всС адрСса интСрфСйсов

1.7. МодСль OSI

РаспространСнным способом описания ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ сСти являСтся прСдлоТСнная ΠœΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½ΠΎΠΉ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΏΠΎ стандартизации (International Standards Organization, ISO) модСль взаимодСйствия ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… систСм (open systems interconnection, OSI). Π­Ρ‚Π° сСмиуровнСвая модСль ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Π½Π° рис. 1.5, Π³Π΄Π΅ ΠΎΠ½Π° сравниваСтся со стСком ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π°.

Рис. 1.5. Π£Ρ€ΠΎΠ²Π½ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ OSI ΠΈ Π½Π°Π±ΠΎΡ€ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π°

ΠœΡ‹ считаСм, Ρ‡Ρ‚ΠΎ Π΄Π²Π° Π½ΠΈΠΆΠ½ΠΈΡ… уровня ΠΌΠΎΠ΄Π΅Π»ΠΈ OSI ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρƒ устройства ΠΈ сСтСвому ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ Π² систСмС. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π°ΠΌ Π½Π΅ приходится Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡ‚ΡŒΡΡ ΠΎΠ± этих уровнях, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π½Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ свойства канального уровня β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Ρ‚ΠΎ MTU (максимальная Π΅Π΄ΠΈΠ½ΠΈΡ†Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ) Ethernet, которая описываСтся Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 2.11, ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ 1500 Π±Π°ΠΉΡ‚.

Π‘Π΅Ρ‚Π΅Π²ΠΎΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ управляСтся ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°ΠΌΠΈ IPv4 ΠΈ IPv6, ΠΎΠ±Π° ΠΎΠ½ΠΈ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ А. Из ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² транспортного уровня ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ TCP, UDP ΠΈ SCRIPT, ΠΎΠ½ΠΈ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π² Π³Π»Π°Π²Π΅ 2. На рис. 1.5 ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ Ρ€Π°Π·Ρ€Ρ‹Π² ΠΌΠ΅ΠΆΠ΄Ρƒ TCP ΠΈ UDP; это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ транспортный ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ IPv4 ΠΈΠ»ΠΈ IPv6 нСпосрСдствСнно. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… сокСтах (raw socket), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ описаны Π² Π³Π»Π°Π²Π΅ 28.

Π’Ρ€ΠΈ Π²Π΅Ρ€Ρ…Π½ΠΈΡ… уровня ΠΌΠΎΠ΄Π΅Π»ΠΈ OSI ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΡƒΡ€ΠΎΠ²Π½ΡŽ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Π΅Π±-ΠΊΠ»ΠΈΠ΅Π½Ρ‚ (Π±Ρ€Π°ΡƒΠ·Π΅Ρ€), ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Telnet, Π²Π΅Π±-сСрвСр, сСрвСр FTP ΠΈΠ»ΠΈ любоС Π΄Ρ€ΡƒΠ³ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ΅ Π½Π°ΠΌΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π’ случаС ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π° Ρ‚Ρ€ΠΈ Π²Π΅Ρ€Ρ…Π½ΠΈΠ΅ уровня ΠΌΠΎΠ΄Π΅Π»ΠΈ OSI Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΎΡ‡Π΅Π½ΡŒ Ρ€Π΅Π΄ΠΊΠΎ.

ΠžΠΏΠΈΡΠ°Π½Π½Ρ‹ΠΉ Π² этой ΠΊΠ½ΠΈΠ³Π΅ API сокСтов являСтся интСрфСйсом ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Π΅Ρ€Ρ…Π½ΠΈΠΌΠΈ трСмя уровнями (Β«ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌΒ») ΠΈ транспортным ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ. Π­Ρ‚ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π²Π°ΠΆΠ½Π΅ΠΉΡˆΠΈΡ… вопросов ΠΊΠ½ΠΈΠ³ΠΈ: ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ сокСты TCP ΠΈ UDP. ΠœΡ‹ ΡƒΠΆΠ΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΈ ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… сокСтах, ΠΈ Π² Π³Π»Π°Π²Π΅ 29 ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π°ΠΆΠ΅ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ IP, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ свои собствСнныС ΠΊΠ°Π΄Ρ€Ρ‹ канального уровня.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ сокСты ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ интСрфСйс ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Π΅Ρ€Ρ…Π½ΠΈΠΌΠΈ трСмя уровнями ΠΌΠΎΠ΄Π΅Π»ΠΈ OSI ΠΈ транспортным ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ? Для ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ OSI ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ Π΄Π²Π΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΠ»ΠΈ Π½Π° ΠΏΡ€Π°Π²ΠΎΠΉ сторонС рис. 1.5. ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго, Ρ‚Ρ€ΠΈ Π²Π΅Ρ€Ρ…Π½ΠΈΡ… уровня ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ Π·Π° всС Π΄Π΅Ρ‚Π°Π»ΠΈ, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΊ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, FTP, Telnet, HTTP), Π½ΠΎ Π·Π½Π°ΡŽΡ‚ ΠΌΠ°Π»ΠΎ ΠΎΠ± особСнностях взаимодСйствия ΠΏΠΎ сСти. Π§Π΅Ρ‚Ρ‹Ρ€Π΅ ΠΆΠ΅ Π½ΠΈΠΆΠ½ΠΈΡ… уровня Π·Π½Π°ΡŽΡ‚ ΠΌΠ°Π»ΠΎ ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π½ΠΎ ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ Π·Π° всС, Ρ‡Ρ‚ΠΎ связано с ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠ΅ΠΉ: ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ подтвСрТдСния, упорядочиваниС Π΄Π°Π½Π½Ρ‹Ρ…, приходящих Π½Π΅ Π² Π΄ΠΎΠ»ΠΆΠ½ΠΎΠΌ порядкС, расчСт ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Ρ… сумм ΠΈ Ρ‚.Π΄. Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΆΠ΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Π΅Ρ€Ρ…Π½ΠΈΠ΅ Ρ‚Ρ€ΠΈ уровня часто Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‚ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ процСсс (user process), Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Π½ΠΈΠΆΠ½ΠΈΡ… уровня ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ ядра ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы. Unix, ΠΊΠ°ΠΊ ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ соврСмСнныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы, обСспСчиваСт Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ процСсса ΠΈ ядра. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, интСрфСйс ΠΌΠ΅ΠΆΠ΄Ρƒ уровнями 4 ΠΈ 5 являСтся СстСствСнным мСстом для создания API.

1.8. Π˜ΡΡ‚ΠΎΡ€ΠΈΡ сСтСвого обСспСчСния BSD

API сокСтов происходит ΠΎΡ‚ систСмы 4.2BSD (Berkeley Software Distribution β€” ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ ΠΈΠ·Π΄Π΅Π»ΠΈΠ΅ ΠšΠ°Π»ΠΈΡ„ΠΎΡ€Π½ΠΈΠΉΡΠΊΠΎΠ³ΠΎ унивСрситСта, Π² Π΄Π°Π½Π½ΠΎΠΌ случаС β€” адаптированная для Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π° рСализация ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы Unix, разрабатываСмая ΠΈ распространяСмая этим унивСрситСтом), Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠΉ Π² 1983 Π³ΠΎΠ΄Ρƒ. На рис. 1.6 ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ BSD ΠΈ ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½Ρ‹ Π³Π»Π°Π²Π½Ρ‹Π΅ этапы развития TCP/IP. НСкоторыС измСнСния API сокСтов Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π»ΠΈ мСсто Π² 1990 Π³ΠΎΠ΄Ρƒ Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ 4.3BSD Reno, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹ OSI Π±Ρ‹Π»ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² ядро BSD.

Π’Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½Π°Ρ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° систСм Π½Π° рис. 1.6 ΠΎΡ‚ 4.2BSD Π΄ΠΎ 4.4BSD Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ вСрсии, созданныС Π³Ρ€ΡƒΠΏΠΏΠΎΠΉ исслСдования ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… систСм (Computer System Research Group, CSRG) унивСрситСта Π‘Π΅Ρ€ΠΊΠ»ΠΈ. Для использования этих Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρƒ получатСля ΡƒΠΆΠ΅ Π±Ρ‹Π»Π° лицСнзия Π½Π° исходный ΠΊΠΎΠ΄ для Unix. Однако вСсь ΠΊΠΎΠ΄ сСтСвых ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ β€” ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ядра (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, стСк ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² TCP/IP ΠΈ Π΄ΠΎΠΌΠ΅Π½Π½Ρ‹Π΅ сокСты Unix, Π° Ρ‚Π°ΠΊΠΆΠ΅ интСрфСйс сокСтов), ΠΈ прилоТСния (Ρ‚Π°ΠΊΠΈΠ΅, ΠΊΠ°ΠΊ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ ΠΈ сСрвСры Telnet ΠΈ FTP), Π±Ρ‹Π»ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ нСзависимо ΠΎΡ‚ ΠΊΠΎΠ΄Π° Unix, созданного AT&T. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ начиная с 1989 Π³ΠΎΠ΄Π° унивСрситСт Π‘Π΅Ρ€ΠΊΠ»ΠΈ Π½Π°Ρ‡Π°Π» Π²Ρ‹ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ систСмы BSD, Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹Π΅ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ Π½Π° исходный ΠΊΠΎΠ΄ Unix. Π­Ρ‚ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΠ»ΠΈΡΡŒ свободно ΠΈ, Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅, стали доступны Ρ‡Π΅Ρ€Π΅Π· Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Π΅ FTP-сСрвСры фактичСски Π»ΡŽΠ±ΠΎΠΌΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π°.

ПослСдними рСализациями Π‘Π΅Ρ€ΠΊΠ»ΠΈ стали 4.4BSD-Lite Π² 1994 Π³ΠΎΠ΄Ρƒ ΠΈ 4.4BSD-Lite2 Π² 1995 Π³ΠΎΠ΄Ρƒ. НуТно ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ эти Π΄Π²Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π±Ρ‹Π»ΠΈ Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ Π² качСствС основы для Π΄Ρ€ΡƒΠ³ΠΈΡ… систСм: BSD/OS, FreeBSD, NetBSD ΠΈ OpenBSD, ΠΈ всС Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Π΄ΠΎ сих ΠΏΠΎΡ€ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΈ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΡƒΡŽΡ‚ΡΡ. Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… рСализациях BSD, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±Ρ‰ΡƒΡŽ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ развития Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… систСм Unix ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² Π³Π»Π°Π²Π΅ 1 ΠΊΠ½ΠΈΠ³ΠΈ [74].

Рис. 1.6. Π˜ΡΡ‚ΠΎΡ€ΠΈΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ BSD

МногиС систСмы Unix Π½Π°Ρ‡ΠΈΠ½Π°Π»ΠΈΡΡŒ с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ вСрсии сСтСвого ΠΊΠΎΠ΄Π° BSD, Π²ΠΊΠ»ΡŽΡ‡Π°Π²ΡˆΠ΅ΠΉ API сокСтов, ΠΈ ΠΌΡ‹ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌ ΠΈΡ… рСализациями, происходящими ΠΎΡ‚ Π‘Π΅Ρ€ΠΊΠ»ΠΈ, ΠΈΠ»ΠΈ Π‘Π΅Ρ€ΠΊΠ»ΠΈ-рСализациями (Berkeley-derived implementations). МногиС коммСрчСскиС вСрсии Unix основаны Π½Π° Unix System V Release 4 (SVR4). НСкоторыС ΠΈΠ· Π½ΠΈΡ… Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ сСтСвой ΠΊΠΎΠ΄ ΠΈΠ· Π‘Π΅Ρ€ΠΊΠ»ΠΈ-Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, UnixWare 2.x), Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ сСтСвой ΠΊΠΎΠ΄ Π΄Ρ€ΡƒΠ³ΠΈΡ… систСм, основанных Π½Π° SVR4, Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ нСзависимо (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Solaris 2.x). ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ систСма Linux, популярная ΠΈ свободно доступная рСализация Unix, Π½Π΅ относится ΠΊ классу происходящих ΠΎΡ‚ Π‘Π΅Ρ€ΠΊΠ»ΠΈ: Π΅Π΅ сСтСвой ΠΊΠΎΠ΄ ΠΈ API сокСтов Π±Ρ‹Π»ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ «с нуля».

1.9. Π‘Π΅Ρ‚ΠΈ ΠΈ ΡƒΠ·Π»Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…

На рис. 1.7 ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ сСти ΠΈ ΡƒΠ·Π»Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π½Π°ΠΌΠΈ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…. Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡƒΠ·Π»Π° ΠΌΡ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ систСму ΠΈ Ρ‚ΠΈΠΏ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° (ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Ρ… Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ²). Π’Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΎΠ² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ ΠΈΠΌΠ΅Π½Π° ΡƒΠ·Π»ΠΎΠ², ΠΏΠΎΡΠ²Π»ΡΡŽΡ‰ΠΈΠ΅ΡΡ Π² тСкстС.

Рис. 1.7. Π‘Π΅Ρ‚ΠΈ ΠΈ ΡƒΠ·Π»Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…

Вопология, привСдСнная Π½Π° рис. 1.7, интСрСсна для Π½Π°ΡˆΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ², Π½ΠΎ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ физичСская топология сСти оказываСтся Π½Π΅ ΡΡ‚ΠΎΠ»ΡŒ Π²Π°ΠΆΠ½ΠΎΠΉ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΡΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚. Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ частныС сСти (virtual private network, VPN) ΠΈ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° (secure shell connections, SSH) ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ соСдинСниС, Π½Π΅ зависящСС ΠΎΡ‚ физичСского размСщСния ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ².