UNIX: разработка сетевых приложений
Шрифт:
В этих двух примерах мы вводим имя узла и название службы (
Заметьте, что когда мы соединяемся с сервером
В современных системах стандартные службы чаще всего отключены по умолчанию, потому что через них могут быть проведены атаки типа «отказ в обслуживании» и другие, связанные с чрезмерным потреблением ресурсов.
2.13.
Таблица 2.2 иллюстрирует использование протоколов типичными приложениями Интернета.
Таблица 2.2. Использование протоколов типичными приложениями Интернета
Приложение | IP | ICMP | UDP | TCP | SCRIPT |
---|---|---|---|---|---|
ping | • | ||||
traceroute | • | • | |||
OSPF (протокол маршрутизации) | • | ||||
RIP (протокол маршрутизации) | • | ||||
BGP (протокол маршрутизации) | • | ||||
BOOTP (протокол bootstrap — протокол дистанционной загрузки и запуска устройств в сети) | • | ||||
DHCP (протокол bootstrap) | • | ||||
NTP (синхронизирующий сетевой протокол) | • | ||||
TFTP (упрощенный протокол передачи файлов) | • | ||||
SNMP (управление сетью) | • | ||||
SMTP (электронная почта) | • | ||||
Telnet (удаленный вход в систему) | • | ||||
FTP (передача файлов) | • | ||||
HTTP (протокол передачи HTML-файлов по сети WWW) | • | ||||
NNTP (сетевой протокол передачи новостей) | • | ||||
DNS (система доменных имен) | • | • | |||
NFS (сетевая файловая система) | • | • | |||
Sun RPC (удаленный вызов процедур) | • | • | |||
DCE RPC (удаленный вызов процедур) | • | • | |||
IUA (ISDN поверх IP) | • | ||||
M2UA, M3UA (телефонная связь SS7) | • | ||||
H.248 (управление шлюзом) | • | • | • | ||
H.323 (IP-телефония) | • | • | • | ||
SIP (IP-телефония) | • | • | • |
Первые два приложения,
Три популярных протокола маршрутизации демонстрируют многообразие транспортных протоколов, которые используются протоколами маршрутизации. Алгоритм OSPF (Open Shortest Path First — первоочередное открытие кратчайших маршрутов) использует IP непосредственно через символьный сокет, в то время как RIP (Routing Information Protocol — протокол информации о маршрутизации) использует UDP, a BGP (Border Gateway Protocol — протокол граничных шлюзов) использует TCP.
Далее идут пять приложений, основанные на UDP, за ними следуют семь приложений TCP и четыре приложения UDP/TCP. Последние пять приложений относятся к IP-телефонии. Они могут использовать либо только SCRIPT, либо UDP, TCP и SCRIPT по выбору.
2.14. Резюме
UDP является простым, ненадежным протоколом, не ориентированным на установление соединения, в то время как TCP — это сложный, надежный, ориентированный на установление соединения протокол. SCRIPT сочетает особенности обоих протоколов, расширяя возможности TCP. Хотя большинство приложений в Интернете используют протокол TCP (веб-сервисы, Telnet, FTP, электронная почта), существует потребность во всех трех транспортных протоколах. В разделе 22.4 мы рассматриваем причины, по которым иногда вместо TCP выбирается UDP. В разделе 23.12 будут проанализированы ситуации, в которых SCRIPT предпочтительнее TCP.
TCP устанавливает соединения, используя трехэтапное рукопожатие, и разрывает соединение, используя обмен четырьмя пакетами. Когда соединение TCP установлено, оно переходит из состояния CLOSED в состояние ESTABLISHED. При разрыве соединения оно переходит обратно в состояние CLOSED. Всего существует 11 состояний, в которых может находиться соединение TCP, и диаграмма переходов состояний определяет правила перемещения между этими состояниями. Понимание этой диаграммы существенно для диагностики проблем при использовании программы
Состояние TCP TIME_WAIT — неиссякаемый источник путаницы, возникающей у сетевых программистов. Это состояние существует для того, чтобы реализовать разрыв двустороннего соединения TCP (то есть для решения проблем, возникающих в случае потери последнего сегмента ACK), а также чтобы дождаться, когда истечет время жизни в сети старых дублированных сегментов.
SCRIPT устанавливает ассоциацию, выполняя четырехэтапное рукопожатие, и завершает соединение обменом тремя пакетами. При установлении ассоциации SCRIPT происходит переход из состояния CLOSED в состояние ESTABLISHED, а при завершении ассоциации — возврат к состоянию CLOSED. Ассоциация SCRIPT может находиться в восьми состояниях, правила перехода между которыми описываются диаграммой состояний. Благодаря использованию контрольных меток SCRIPT не нуждается в состоянии TIME_WAIT.