Взаємодія комп'ютерів між собою, а також з іншим активним мережевим обладнанням, в 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