Пользовательский протокол датаграмм (UDP)

Конечно, TCP — это не единственный пользовательский протокол в сетях TCP/IP. Хоть он и подходит для приложений вроде rlogin, для некоторых сервисов, например NFS, он может показаться избыточно надежным. В таких случаях используется UDP — протокол пользовательских датаграмм. Как и TCP, UDP позволяет приложению связываться с другими приложениями на определенных портах удаленных машин, однако в отличие от TCP, он не устанавливает стабильного соединения. Вы можете использовать его для отправки отдельных пакетов данных.

Представьте, что вы хотите получить доступ к директории TeX на центральном NFS-сервере, например, galois, чтобы просмотреть документацию по LaTeX. При этом было бы неэффективно устанавливать постоянное TCP-соединение только для того, чтобы отправить запрос на чтение файла. Вместо этого, отправив короткий запрос на galois, вы быстро получите нужный файл обратно в виде пары UDP-пакетов. Однако стоит помнить, что UDP сам по себе не обеспечивает доставку пакетов. Если пакет теряется по пути, об этом придется позаботиться на более высоком уровне, например, в самом протоколе NFS.

Подробнее о портах

Порты можно рассматривать как точки подключения для сетевых соединений. Если приложение-сервер предоставляет определенный сетевой сервис, оно связывается с конкретным портом и ожидает подключения от клиентов (это называется "прослушивание" порта). Клиент, желающий воспользоваться этим сервисом, выбирает порт на своем хосте и подключается к порту сервера на удаленной машине.

Особенность портов заключается в том, что даже при активной связи между клиентом и сервером, другие экземпляры сервера могут прослушивать тот же самый порт, ожидая подключения от других клиентов. Это позволяет, например, множеству пользователей одновременно подключаться к одному и тому же хосту через один и тот же порт 513. TCP различает эти соединения, так как они идут от разных портов или хостов. К примеру, если вы дважды подключитесь к quark с erdos, то первое подключение может использовать локальный порт 1023, а второе — порт 1022, оба соединяясь с портом 513 на quark.

В этом контексте порты служат точками, через которые клиент и сервер устанавливают связь. Для успешной коммуникации обе стороны должны знать соответствующий номер порта. Установление стандартных номеров портов для популярных сервисов регулируется организациями, такими как IETF. В Linux используется файл /etc/services для регистрации стандартных портов.

Библиотека сокетов

В Unix-подобных операционных системах, включая Linux, программное обеспечение для работы с протоколами, такими как TCP и UDP, является частью ядра системы. Для программирования наиболее распространенным интерфейсом является библиотека сокетов Berkeley. В Linux эта библиотека является частью стандартной библиотеки C, libc. На текущий момент она поддерживает только сокеты AF_INET и AF_UNIX, но работа над расширением ее возможностей продолжается.