Мережеві сервіси — Вікіпедія

Взаємодія комп'ютерів між собою, а також з іншим активним мережевим обладнанням, в 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         State tcp        0      0 0.0.0.0:37              0.0.0.0:*               LISTEN tcp        0      0 0.0.0.0:199             0.0.0.0:*               LISTEN tcp        0      0 0.0.0.0:2601            0.0.0.0:*               LISTEN tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN tcp        0      0 0.0.0.0:2604            0.0.0.0:*               LISTEN tcp        0      0 0.0.0.0:2605            0.0.0.0:*               LISTEN tcp        0      0 0.0.0.0:13              0.0.0.0:*               LISTEN tcp        0      0 0.0.0.0:179             0.0.0.0:*               LISTEN tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN tcp        0      0 0.0.0.0:1723            0.0.0.0:*               LISTEN tcp        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:*        1 raw        0      0 10.0.0.254:47           10.0.0.120:*            1 raw        0      0 10.10.204.20:47         10.10.16.110:*          1 raw        0      0 192.168.10.254:47       192.168.11.72:*         1 raw        0      0 10.0.0.254:47           10.0.0.144:*            1 raw        0      0 10.0.0.254:47           10.0.0.205:*            1 raw        0      0 10.50.0.254:47          10.50.0.174:*           1 raw        0      0 10.0.0.254:47           10.0.0.170:*            1 raw        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