Мережеві сервіси

Взаємодія комп'ютерів між собою, а також з іншим активним мережевим обладнанням, в TCP / IP-мережах організовано на основі використання мережевих служб, які забезпечуються спеціальними процесами мережевої операційної системи (ОС) — демонами в UNIX-подібних ОС, службами в ОС сімейства ОС Windows і т. д. Прикладами мережевих сервісів є вебсервери (сайти всесвітньої павутини), електронна пошта, FTP-сервери для обміну файлами, та багато іншого.

Сокети, з'єднання

Спеціальні процеси операційної системи (демони, служби) створюють «слухаючий» сокет і «прив'язують» його до певного порту (пасивне відкриття з'єднання), забезпечуючи тим самим можливість іншим комп'ютерам звернутися до даної служби. Клієнтська програма або процес створює запит на відкриття сокета із зазначенням IP-адреси і порту сервера, в результаті чого встановлюється з'єднання, що дозволяє взаємодіяти двом комп'ютерам з використанням відповідного мережевого протоколу прикладного рівня.

Номери портів

Номер порту для «прив'язки» служби вибирається залежно від його функціонального призначення. За привласнення номерів портів певним мережним службам відповідає IANA. Номери портів знаходяться в діапазоні 0-65535 і розділені на 3 категорії:

Номери портівКатегоріяОпис
0—1023загальновідомі

порти

Номери портів призначені IANA і на більшості систем можуть бути використані виключно процесами системи (або користувача root), або прикладними програмами, запущеними привілейованими користувачами.

Не повинні використовуватися без реєстрації IANA. Процедура реєстрації визначена в розділі 19.9 RFC 4340(англ.).

1024—49151зареєстровані портиНомери портів включені в каталог IANA і на більшості систем можуть бути використані процесами звичайних користувачів або програмами, запущеними звичайними користувачами.

Не повинні використовуватися без реєстрації IANA. Процедура реєстрації визначена в розділі 19.9 RFC 4340.

49152—65535динамічні портиПризначені для тимчасового використання (наприклад, для тестування додатків до реєстрації IANA), а також як клієнтські (використовуваних для приватних служб у середині мереж). Ці порти не можуть бути зареєстровані.

Історія регулювання відповідності

Питання уніфікації відповідності мережевих служб номерами сокетів (портів) піднімалися в RFC 322 і RFC 349, перші спроби регулювання були зроблені Джоном Постелом в RFC 433 і RFC 503.

У березні 1990 року (див. RFC 1060) функція регулювання відповідності мережевих служб номерам портів була передана спеціальної організації -IANA, яка актуалізувала список відповідності випуском документів RFC «Assigned Numbers» (під номерами 739, 750, 755, 758, 762, 770, 776, 790, 820, 870, 900, 923, 943, 960, 990, 1010, 1060, 1340, 1700). Значну частину цих документів готував Джон Постел.

З січня 2002 року (див. RFC 3232) IANA публікує актуальний список відповідності на своєму сайті (без закріплення в RFC): http://www.iana.org/assignments/port-numbers.

Локальна копія списку

Локальна копія списку входить в інсталяційний пакет мережевих операційних систем. Файл локальної копії списку зазвичай називається services і в різних операційних системах «лежить» в різних місцях:

Windows 98/ME
C:\Windows\services
Windows NT/XP
C:\Windows\system32\drivers\etc\services
UNIX-подібні ОС
/etc/services

Стан мережевих служб операційної системи

У більшості операційних систем можна подивитися стан мережних служб за допомогою команди

netstat -an

В ОС сімейства Windows результат роботи цієї команди виглядає приблизно так:

Активне підключення ім'я    Локальний адрес      Зовнішній адрес            Стан TCP    0.0.0.0:135            0.0.0.0:0              LISTENING TCP    0.0.0.0:445            0.0.0.0:0              LISTENING TCP    127.0.0.1:1026         0.0.0.0:0              LISTENING TCP    127.0.0.1:12025        0.0.0.0:0              LISTENING TCP    127.0.0.1:12080        0.0.0.0:0              LISTENING TCP    127.0.0.1:12110        0.0.0.0:0              LISTENING TCP    127.0.0.1:12119        0.0.0.0:0              LISTENING TCP    127.0.0.1:12143        0.0.0.0:0              LISTENING TCP    192.168.0.16:139       0.0.0.0:0              LISTENING TCP    192.168.0.16:1572      213.180.204.20:80      CLOSE_WAIT TCP    192.168.0.16:1573      213.180.204.35:80      ESTABLISHED UDP    0.0.0.0:445            *:* UDP    0.0.0.0:500            *:* UDP    0.0.0.0:1025           *:* UDP    0.0.0.0:1056           *:* UDP    0.0.0.0:1057           *:* UDP    0.0.0.0:1066           *:* UDP    0.0.0.0:4500           *:* UDP    127.0.0.1:123          *:* UDP    127.0.0.1:1900         *:* UDP    192.168.0.16:123       *:* UDP    192.168.0.16:137       *:* UDP    192.168.0.16:138       *:* UDP    192.168.0.16:1900      *:*

В UNIX-подібних ОС результат роботи команди netstat -an має приблизно такий вигляд:

Active Internet connections (servers and established)Proto Recv-Q Send-Q Local Address           Foreign Address         Statetcp        0      0 0.0.0.0:37              0.0.0.0:*               LISTENtcp        0      0 0.0.0.0:199             0.0.0.0:*               LISTENtcp        0      0 0.0.0.0:2601            0.0.0.0:*               LISTENtcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTENtcp        0      0 0.0.0.0:2604            0.0.0.0:*               LISTENtcp        0      0 0.0.0.0:2605            0.0.0.0:*               LISTENtcp        0      0 0.0.0.0:13              0.0.0.0:*               LISTENtcp        0      0 0.0.0.0:179             0.0.0.0:*               LISTENtcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTENtcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTENtcp        0      0 0.0.0.0:1723            0.0.0.0:*               LISTENtcp        0      0 10.0.0.254:1723         10.0.0.243:2441         ESTABLISHED tcp        0      0 192.168.19.34:179       192.168.19.33:33793     ESTABLISHED tcp        1      0 192.168.18.250:37       192.168.18.243:3723     CLOSE_WAIT  tcp        0      0 10.0.0.254:1723         10.0.0.218:1066         ESTABLISHED tcp        1      0 192.168.18.250:37       192.168.18.243:2371     CLOSE_WAIT  tcp        0      0 10.0.0.254:1723         10.0.0.201:4346         ESTABLISHED tcp        0      0 10.0.0.254:1723         10.0.0.30:2965          ESTABLISHED tcp        0     48 192.168.19.34:22        192.168.18.18:43645     ESTABLISHED tcp        0      0 10.0.0.254:38562        10.0.0.243:22           ESTABLISHED tcp        0      0 10.50.1.254:1723        10.50.1.2:57355         ESTABLISHED tcp        0      0 10.50.0.254:1723        10.50.0.174:1090        ESTABLISHED tcp        0      0 192.168.10.254:1723     192.168.13.104:65535    ESTABLISHED tcp        0      0 10.0.0.254:1723         10.0.0.144:65535        ESTABLISHED tcp        0      0 10.0.0.254:1723         10.0.0.169:2607         ESTABLISHED tcp        0      0 10.0.0.254:1723         10.0.0.205:1034         ESTABLISHED udp        0      0 0.0.0.0:1812            0.0.0.0:*udp        0      0 0.0.0.0:1813            0.0.0.0:*udp        0      0 0.0.0.0:161             0.0.0.0:*udp        0      0 0.0.0.0:323             0.0.0.0:*udp        0      0 0.0.0.0:123             0.0.0.0:*raw        0      0 192.168.10.254:47       192.168.13.104:*        1raw        0      0 10.0.0.254:47           10.0.0.120:*            1raw        0      0 10.10.204.20:47         10.10.16.110:*          1raw        0      0 192.168.10.254:47       192.168.11.72:*         1raw        0      0 10.0.0.254:47           10.0.0.144:*            1raw        0      0 10.0.0.254:47           10.0.0.205:*            1raw        0      0 10.50.0.254:47          10.50.0.174:*           1raw        0      0 10.0.0.254:47           10.0.0.170:*            1raw        0      0 10.0.0.254:47           10.0.0.179:*            1

Стан (State) LISTEN (LISTENING) показує пасивно відкриті з'єднання . Саме вони і надають мережеві служби.

ESTABLISHED — це встановлені з'єднання, тобто мережеві служби в процесі їх використання.

Перевірка доступності мережевих служб

У разі виявлення проблем з тією чи іншою мережевою службою, для перевірки її доступності використовують різні засоби діагностики, залежно від їх наявності в даній ОС.

Один з найзручніших засобів — команда (утиліта) tcptraceroute (різновид  traceroute), яка використовує TCP-пакети відкриття з'єднання (SYN|ACK) з вказаним сервером (за замовчуванням — web-сервер, порт 80) хоста і показує інформацію про час проходження даного виду TCP-пакетів через маршрутизатори, а також інформацію щодо доступності хоста, або, у разі проблем з доставкою пакетів — в якому місці шляху вони виникли.

Як альтернативу можна використовувати окремо

  • traceroute для діагностики маршруту доставки пакетів (недолік — використання UDP-пакетів для діагностики)
  • telnet або netcat на порт проблемної служби для перевірки її відгуку.

Посилання

  • Актуальный список номеров портов // IANA(англ.)
  • RFC 322(англ.) Well Known Socket Numbers
  • RFC 349(англ.) Proposed Standard Socket Numbers (отменён RFC 433)
  • RFC 433(англ.) Socket Number List (отменён RFC 503)
  • RFC 503(англ.) Socket Number List (отменён RFC 739)
  • RFC 739(англ.) ASSIGNED NUMBERS (первый список присвоенных номеров, был заменён рядом RFCs, последний из которых RFC 1700)
  • RFC 768(англ.) User Datagram Protocol
  • RFC 793(англ.) TRANSMISSION CONTROL PROTOCOL
  • RFC 1700(англ.) ASSIGNED NUMBERS (последний список присвоенных номеров, отменён RFC 3232)
  • RFC 3232(англ.) Assigned Numbers: RFC 1700 is Replaced by an On-line Database
  • RFC 4340(англ.) Datagram Congestion Control Protocol (DCCP) — PROPOSED STANDARD