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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«TCP/IP АрхитСктура, ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹, рСализация (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ IP вСрсии 6 ΠΈ IP Security)Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 108

Автор Π‘ΠΈΠ΄Π½ΠΈ Π€Π΅ΠΉΡ‚

 ACCESS read-only

 STATUS mandatory

 DESCRIPTION

  "ΠžΠ±Ρ‰Π΅Π΅ количСство ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… интСрфСйсом ΠΎΠΊΡ‚Π΅Ρ‚ΠΎΠ²,

   Π²ΠΊΠ»ΡŽΡ‡Π°Ρ символы обрамлСния ΠΊΠ°Π΄Ρ€ΠΎΠ²."

 :: = { ifEntry 10 }

20.10.6 ΠœΠ°ΡΡˆΡ‚Π°Π±

ΠœΠ°ΡΡˆΡ‚Π°Π± (gauge) β€” это Ρ†Π΅Π»ΠΎΠ΅ число, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Π΅Π΄Π΅Ρ‚ сСбя ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ. ЗначСния ΠΌΠ°ΡΡˆΡ‚Π°Π±Π° ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°ΡŽΡ‚ΡΡ. ΠœΠ°ΡΡˆΡ‚Π°Π±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для количСствСнного описания, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΄Π»ΠΈΠ½Ρ‹ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ. Иногда Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±Π° растСт, Π° ΠΈΠ½ΠΎΠ³Π΄Π° ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ΡΡ.

32-разрядный ΠΌΠ°ΡΡˆΡ‚Π°Π± ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π΄ΠΎ 2Β³Β²-1 (4 294 967 295). Если измСряСмая Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π° ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ ΠΌΠ°ΡΡˆΡ‚Π°Π±, Ρ‚ΠΎ ΠΎΠ½Π° фиксируСтся Π² этом максимумС, ΠΏΠΎΠΊΠ° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ снова Π½Π΅ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡΡ (см. рис. 20.14).

Рис. 20.14. ПовСдСниС значСния ΠΌΠ°ΡΡˆΡ‚Π°Π±Π°

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΠ°ΡΡˆΡ‚Π°Π±Π°:

ifOutQLen OBJECT-TYPE

 SYNTAX Gauge

 ACCESS read-only

 STATUS mandatory

 DESCRIPTION

  "Π”Π»ΠΈΠ½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²

  (Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ…)."

 ::= { ifEntry 21 }

20.10.7 TimeTicks

Π˜Π½Ρ‚Π΅Ρ€Π²Π°Π»Ρ‹ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈΠ·ΠΌΠ΅Ρ€ΡΡŽΡ‚ΡΡ Π² Time Ticks, Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ выраТаСтся Π² сотых долях сСкунды. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ TimeTick β€” Π½Π΅ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ число Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… ΠΎΡ‚ 1 Π΄ΠΎ 2Β³Β²-1. Для пСрСполнСния счСтчика TimeTick потрСбуСтся 497 Π΄Π½Π΅ΠΉ.

SysUptime, ΠΈΠ·ΠΌΠ΅Ρ€ΡΡŽΡ‰Π°Ρ врСмя ΠΎΡ‚ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния Π°Π³Π΅Π½Ρ‚Π°,β€” это Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ пСрСмСнная TimeTick.

sysUpTime OBJECT-TYPE

 SYNTAX TimeTicks

 ACCESS read-only

 STATUS mandatory

 DESCRIPTION

  "ВрСмя (Π² сотых долях сСкунды) ΠΎΡ‚ послСднСй ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

  части систСмы для сСтСвого управлСния."

 :: = { system 3 }

20.10.8 Π‘Ρ‚Ρ€ΠΎΠΊΠΈ ΠΎΠΊΡ‚Π΅Ρ‚ΠΎΠ²

OCTET STRING (строки ΠΎΠΊΡ‚Π΅Ρ‚ΠΎΠ²) β€” это ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π±Π°ΠΉΡ‚. ΠŸΠΎΡ‡Ρ‚ΠΈ Π»ΡŽΠ±Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ строкой ΠΎΠΊΡ‚Π΅Ρ‚ΠΎΠ².

20.10.9 ВСкстовыС соглашСния

ВмСсто опрСдСлСния Π½ΠΎΠ²Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ MIB ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ тСкстовыС соглашСния (textual conventions), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ информация ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π° Π² строки ΠΎΠΊΡ‚Π΅Ρ‚ΠΎΠ², ΠΈ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ способ Π΅Π΅ Π²Ρ‹Π²ΠΎΠ΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ.

Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Ρ‡Π΅Ρ€Π΅Π· тСкстовыС соглашСния, прСдставляСтся для пСрСсылки Π½Π΅Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ значСниями строки ΠΎΠΊΡ‚Π΅Ρ‚ΠΎΠ². Однако Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ смысл Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π² описании тСкстового соглашСния. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ MIB, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ для создания тСкстовых соглашСний. ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ описания Display String.

DisplayString ::= TEXTUAL-CONVENTION

 DISPLAY-HINT "255a"

 STATUS current

 DESCRIPTION

  "ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ тСкстовой ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, заимствованноС ΠΈΠ· Π½Π°Π±ΠΎΡ€Π°

   символов NVT ASCII, ΠΊΠ°ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ Π½Π° стр. 4 ΠΈ 10-11 Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° RFC 854."

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² сообщСнии Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ всСгда ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΠ΅Ρ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ станции управлСния ΠΌΠΎΠ³Π»ΠΎ Π±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ MIB, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ соотвСтствуСт Ρ‚Π°ΠΊΠΎΠΌΡƒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρƒ, ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ описаниС тСкстового соглашСния для Π²Ρ‹Π±ΠΎΡ€Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° отобраТСния, хранСния ΠΈ использования ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ значСния строки ΠΎΠΊΡ‚Π΅Ρ‚ΠΎΠ².

20.10.10 ΠšΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… Π² BER

Наряду с языком описания Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… ASN.1 ISO спСцифицировала Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° кодирования (Basic Encoding Rules β€” BER), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для кодирования значСния Π΄Π°Π½Π½Ρ‹Ρ… SNMP ΠΏΡ€ΠΈ пСрСсылкС. ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ BER для Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄:

[Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€] [Π΄Π»ΠΈΠ½Π° содСрТания] [содСрТаниС]

НапримСр, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ X'02 ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для INTEGER, X'04 β€” для строки ΠΎΠΊΡ‚Π΅Ρ‚ΠΎΠ², Π° X'06 β€” для ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

ЀактичСски всС сообщСниС SNMP прСдставляСт собой ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ASN.1, ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ сообщСниС ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ кодируСтся ΠΏΠΎ BER

20.11 Π§Ρ‚ΠΎ дальшС?

НаиболСС ваТная Ρ‡Π°ΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹, которая Π½Π΅ Π±Ρ‹Π»Π° Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ вСрсии SNMP, β€” это ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠΉ административной структуры ΠΈ спСцификация условий Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ стандартов ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ для бСзопасного ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ конфигурирования устройств. Однако ΡƒΠΆΠ΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Ρ‹ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ IP (см. Π³Π»Π°Π²Ρƒ 24).

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΈ Π°Π²Ρ‚ΠΎΡ€Ρ‹ стандартов Π²Π΅Π΄ΡƒΡ‚ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ поиски возмоТностСй Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ MIB, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ‡Π΅Π³ΠΎ Π² сСтях Π² ΠΈΠ·ΠΎΠ±ΠΈΠ»ΠΈΠΈ стала доступна сырая ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π°Ρ информация.

НСобходимы Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅ прилоТСния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ эффСктивно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ SNMP для обнаруТСния сСтСвых ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΈ долгосрочного планирования Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠΉ Смкости рСсурсов. ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΠΈ оборудования Π½ΡƒΠΆΠ΄Π°ΡŽΡ‚ΡΡ Π² стандартизированных ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚Π°Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… инструмСнтов Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ Π½ΠΎΠ²Ρ‹Π΅ срСдства ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ станциями управлСния.

Π˜Π½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ систСмы, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°ΠΌ ΠΈ хостам, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ подходят для самоконтроля. НСкоторыС интСрСсныС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π±Ρ‹Π»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹ ΠΏΡ€ΠΈ встраивании Π² систСмы ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ общСния с Π½ΠΈΠΌΠΈ Ρ‡Π΅Ρ€Π΅Π· Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρ‹ WWW ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» HTTP.

20.12 Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π°

БущСствуСт Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ ΠΈ всС Ρ€Π°Π·Ρ€Π°ΡΡ‚Π°ΡŽΡ‰ΠΈΠΉΡΡ список RFC, относящихся ΠΊ SNMP ΠΈ MIB. Архив RFC Π² InterNIC содСрТит самыС послСдниС вСрсии этих Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².

Наша другая ΠΊΠ½ΠΈΠ³Π° β€” SNMP: Guide to Network Management β€” содСрТит описаниС ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ ΠΈ структуры SNMP ΠΈ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·Π±ΠΎΡ€ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ MIB.

Π“Π»Π°Π²Π° 21

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ интСрфСйс socket

21.1 Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

ΠšΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ стандарты ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ всС ΠΏΡ€Π°Π²ΠΈΠ»Π° для ΠΎΠ±ΠΌΠ΅Π½Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ Π² сСти. Однако Π΄ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π»Π°ΡΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ стандартизации интСрфСйса программирования ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (Application Programming Interface β€” API). Как ΠΆΠ΅ Ρ‚ΠΎΠ³Π΄Π° программист Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния ΠΊΠ»ΠΈΠ΅Π½Ρ‚/сСрвСр, Ссли ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ² ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹?

21.1.1 ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ интСрфСйс Berkeley

К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ TCP/IP обСспСчиваСт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ интСрфСйс, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΡ‡Π΅Π½ΡŒ простой ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ интСрфСйса socket, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π±Ρ‹Π» ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ Π² 1982 Π³. Π² вСрсии 4.1c ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы Unix унивСрситСта Π‘Π΅Ρ€ΠΊΠ»ΠΈ (Berkeley Software Distribution β€” BSD). Co Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ Π² исходный интСрфСйс Π±Ρ‹Π»ΠΎ внСсСно нСсколько ΡƒΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π½ΠΈΠΉ.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ интСрфСйс socket разрабатывался для примСнСния с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°ΠΌΠΈ, Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для TCP/IP. Однако, ΠΊΠΎΠ³Π΄Π° Π±Ρ‹Π»Π° Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½Π° спСцификация транспортного уровня OSI, стало ясно, Ρ‡Ρ‚ΠΎ этот интСрфСйс Π½Π΅ согласуСтся с трСбованиями OSI.

Π’ 1986 Π³. компания AT&T ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ»Π° ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° интСрфСйса транспортного уровня (Transport Layer Interface β€” TLI) для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы Unix System V. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ TLI ΠΌΠΎΠ³ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ для транспортного уровня OSI, TCP ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ².

Π•Ρ‰Π΅ ΠΎΠ΄Π½ΠΈΠΌ Π²Π°ΠΆΠ½Ρ‹ΠΌ событиСм Π² истории socket стал ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ интСрфСйс socket для Windows (WinSock), позволивший прилоТСниям Windows Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ²Π΅Ρ€Ρ… стСков TCP/IP, созданных Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ производитСлями. Π’ Windows 95 обСспСчиваСтся ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΌΠ½ΠΎΠ³ΠΎΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ интСрфСйса.

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ socket стал стандартом Π΄Π΅-Ρ„Π°ΠΊΡ‚ΠΎ благодаря ΡˆΠΈΡ€ΠΎΠΊΠΎΠΌΡƒ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½Π΅Π½ΠΈΡŽ ΠΈ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ доступа. Π’ этой Π³Π»Π°Π²Π΅ ΠΌΡ‹ рассмотрим ΠΎΠ±Ρ‰ΠΈΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ этого интСрфСйса. На ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Ρ… ΠΌΠΎΠ³ΡƒΡ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ отличия Π² API, связанныС с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ слуТбы Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ. Π”Π΅Ρ‚Π°Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ систСмС ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² тСхничСских описаниях.

21.1.2 ΠžΡ€ΠΈΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ Π½Π° Unix

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ интСрфСйса socket Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ для Unix. АрхитСктура этой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы позволяСт Π΅Π΄ΠΈΠ½ΠΎΠΎΠ±Ρ€Π°Π·Π½ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ, Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°ΠΌ ΠΈ Π²Π²ΠΎΠ΄Ρƒ/Π²Ρ‹Π²ΠΎΠ΄Ρƒ. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ использованиС ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ²:

descriptor = open(filename, readwritemode)

read(descriptor, buffer, length)

write(descriptor, buffer, length)

close(descriptor)

Когда ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ», Π²Ρ‹Π·ΠΎΠ² создаСт Π² памяти ΠΎΠ±Π»Π°ΡΡ‚ΡŒ, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡƒΡŽ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠΌ Π±Π»ΠΎΠΊΠΎΠΌ Ρ„Π°ΠΉΠ»Π° (file control block) ΠΈ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ свСдСния ΠΎ Π΄Π°Π½Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, имя, Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈ мСсто размСщСния).

Π’Ρ‹Π·ΠΎΠ² Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ нСбольшоС Ρ†Π΅Π»ΠΎΠ΅ число, ΠΈΠΌΠ΅Π½ΡƒΠ΅ΠΌΠΎΠ΅ дСскриптором Ρ„Π°ΠΉΠ»Π° (file descriptor). ДСскриптор ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ для ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Ρ„Π°ΠΉΠ»Π° Π² ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… опСрациях. ΠŸΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ ΠΈΠ»ΠΈ записи Π² Ρ„Π°ΠΉΠ»Π΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΈΠ· дСскриптора отслСТиваСт Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„Π°ΠΉΠ»Π°

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² socket для TCP/IP. Π“Π»Π°Π²Π½Ρ‹ΠΌ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ΠΌ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ интСрфСйсом socket ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмой Unix являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π² socket примСняСтся нСсколько Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ², Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… для сбора всСх свСдСний ΠΏΠ΅Ρ€Π΅Π΄ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ соСдинСния. НС считая Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΈ запускС, для чтСния ΠΈΠ»ΠΈ записи, Π² сСти ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Ρ‚Π΅ ΠΆΠ΅ самыС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.