Приложение | 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-телефония) | • | • | • |
Первые два приложения,
ping
и
traceroute
, являются диагностическими и используют протокол ICMP,
traceroute
создает свои собственные пакеты UDP и считывает ответы ICMP.
Три популярных протокола маршрутизации демонстрируют многообразие транспортных протоколов, которые используются протоколами маршрутизации. Алгоритм 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, и диаграмма переходов состояний определяет правила перемещения между этими состояниями. Понимание этой диаграммы существенно для диагностики проблем при использовании программы
netstat
и для понимания того, что происходит, когда мы вызываем такие функции, как
connect
,
accept
и
close
.
Состояние TCP TIME_WAIT — неиссякаемый источник путаницы, возникающей у сетевых программистов. Это состояние существует для того, чтобы реализовать разрыв двустороннего соединения TCP (то есть для решения проблем, возникающих в случае потери последнего сегмента ACK), а также чтобы дождаться, когда истечет время жизни в сети старых дублированных сегментов.
SCRIPT устанавливает ассоциацию, выполняя четырехэтапное рукопожатие, и завершает соединение обменом тремя пакетами. При установлении ассоциации SCRIPT происходит переход из состояния CLOSED в состояние ESTABLISHED, а при завершении ассоциации — возврат к состоянию CLOSED. Ассоциация SCRIPT может находиться в восьми состояниях, правила перехода между которыми описываются диаграммой состояний. Благодаря использованию контрольных меток SCRIPT не нуждается в состоянии TIME_WAIT.
Упражнения
1. Мы говорили об IPv4 и IPv6. А что произошло с версией 5 и каковы были версии 0, 1, 2 и 3? (
http://www.iana.org/
.)
2. Где вы будете искать дополнительную информацию о протоколе, которому присвоено название «IP версия 5»?