Рейтинговые книги
Читем онлайн Разработка приложений в среде Linux. Второе издание - Майкл Джонсон

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать

125

Это иногда называется передачей прав доступа.

126

Несмотря на то что это может показаться очевидным, некоторые протоколы позволяют отправителю использовать любой порядок байтов и в зависимости от получателя преобразовывать информацию в соответствующем порядке. Это приводит к увеличению производительности, если взаимодействуют подобные механизмы, за счет повышения сложности алгоритма.

127

Все процессоры Intel и совместимые с Intel хранят данные с прямым порядком байтов, поэтому здесь получение права преобразования очень важно для корректной работы программ.

128

Информация о IANA доступна по адресу http://www.iana.org.

129

Либо, все чаще и чаще, чтобы скрыть их от широкополосных поставщиков Internet-услуг, которые не хотят разрешить своим рядовым клиентам запускать серверы на домашних машинах.

130

Однако она может оказаться троянским конем, запущенным привилегированным пользователем.

131

Значения для неустановленных IPv4-адресов содержатся в константе INADDR_ANY, которая является 32-битным числом.

132

Эти примеры взяты из документа RFC 1884, в котором определена структура адресации IPv6.

133

Это так называемый неустановленный адрес для IPv6.

134

Если у вас большой опыт в программировании сокетов (или вы сравниваете данную книгу с ее первым изданием), то вы обязательно заметите, что функции, применявшиеся для преобразования имен, значительно изменились. Эти изменения позволяют создавать программы абсолютно независимо от того протокола, который они используют. Теперь гораздо легче разрабатывать программы, работающие как на IPv4-, так и на IPv6-машинах. Они также должны распространяться на остальные протоколы, хотя функция getaddrinfo() в данный момент работает только для IPv4 и IPv6.

135

Адрес обратной связи — это специальный адрес, который позволяет программам взаимодействовать через TCP/IP с приложениями только на одной и той же машине.

136

Для TCP-портов данная комбинация не может использоваться в течение двух минут.

137

Это называется трехсторонним квитированием TCP, которое на самом деле проходит несколько сложнее, чем описано выше.

138

Этот процесс называется сетевой загрузкой.

139

UDP-сокеты, которые имеют постоянные пункты назначения, присвоенные через функцию connect(), иногда называются присоединенными UDP-сокетами.

140

Есть также возможность превратить подключенный сокет в неподключенный с помощью функции connect(), однако эта процедура не стандартизирована. Если вам все же необходимо ее применить, обратитесь к [33].

141

Данные функции могут применяться для передачи данных через любой сокет, и иногда возникают причины для использования их в TCP-соединениях.

142

Возможно также применение системных вызовов sendmsg() и recvmsg(), однако необходимость в этом встречается редко.

143

Полное описание tftp можно найти в [33] и [34].

144

Спецификация tftp-протокола требует, чтобы серверы посылали данные клиенту на номер порта, отличающийся от порта, на котором сервер ожидает новые соединения. При этом нетрудно создать параллельный сервер, поскольку каждый сокет сервера предназначен только для одного клиента.

145

Применение этой структуры делает невозможным расширение данных функций на IPv6 без изменения их интерфейса.

146

Функции, использующие статическую память для сохранения результатов, усложняют построение многопоточных приложений, поскольку в код приложения требуется добавлять блокировки для защиты этих статических буферов.

147

Наверное, не существует IPv6-программ, использующих struct hostaddr, однако они могут это делать. Функции, которые мы обсуждаем здесь, по умолчанию возвращают только информацию IPv4. Мы не будем рассматривать применение этих функций с IPv6.

148

UTC — Universal Coordinated Time (универсальное синхронизированное время), на которое иногда ошибочно ссылаются как на UCT, приблизительно эквивалентное среднему времени по Гринвичу (GMT) и зулу. Описание всех часовых поясов выходит за рамки материала, рассматриваемого в настоящей книге.

149

Мы не рекомендуем применять библиотеку svgalib для графического программирования. Во многих книгах описывается программирование для X Window System, и система X предоставляет более разумный, безопасный и мобильный метод программирования графики. С другой стороны, если вы действительно собираетесь программировать для сервера X Window, то не сможете обойтись без кодирования VC. Таким образом, в любом случае данная глава окажется полезной.

150

Прочтите man-страницы для утилит loadkeys, dumpkeys, keytables, setfont и mapscrn.

151

Данный интерфейс имеет недостаток. Для него необходимо устанавливать некоторые постоянные доли секунды и осуществлять преобразование. Макрос HZ больше не является константой даже на отдельной платформе. Однако, по крайней мере, для архитектуры Intel i86 Линус Торвальдс установил, что все определенные интерфейсы в отношении HZ должны представлять синтетический интерфейс в 100 Гц. Возможно, что в будущем периодические системные часы исчезнут, в таком случае тики станут полностью искусственным понятием.

152

В большинстве остальных систем с виртуальными консолями или терминалами динамическое распределение для них не производится.

153

Отдельные системы (но не Linux) инициируют автоматическое переключение, если вызывается консоль, которая не исполняется в текущий момент.

154

Библиотека curses определена в X/Open. Реализация, которая входит в состав Linux, представляет собой совместимую в данный момент с X/Open XSI Curses версию базового уровня.

155

Эта тема логически относится к главе 20, поскольку она имеет отношение к виртуальным консолям. Однако практический смысл вынуждает поместить этот раздел в данную главу — поскольку, как упоминалось во введении, настоящую книгу можно читать и выборочно.

156

Популярным способом проверки в ранних ядрах Linux было создание последовательности абсолютно случайных байтов и запуск их на выполнение как программы. Кроме того, что таким методом невозможно сделать что-либо полезное, он довольно часто вызывает полную блокировку ядра. Поскольку попытки выполнения совершенно случайных последовательностей кодов не входят в "должностные инструкции" ядра, пользовательские программы не должны вызывать остановку корректной работы ядра. Таким образом, этот прием помогает находить большое число дефектов, которые необходимо устранить.

157

Атака на программное обеспечение приложений сейчас является основным способом распространения вирусов.

158

Системные квоты предотвращают возможность успешности такой атаки.

159

Словарная атака — это довольно прямолинейный метод обнаружения паролей, когда автоматическая программа прогоняет огромный список обычных паролей (таких как слова в словаре) до тех пор, пока один из них не подойдет.

160

ВООТР — это предшественник DHCP, позволяющий компьютерам автоматически узнавать свои IP-адреса при запуске сетевых интерфейсов.

161

Функция alloca() не является стандартным средством языка С, однако компилятор gcc предоставляет alloca() в большинстве поддерживаемых операционных систем. В более старых версиях gcc (до версии 3.3) alloca() не всегда должным образом взаимодействовала с массивами динамических размеров (другое расширение GNU), поэтому примите во внимание, что использовать нужно только одну из версий.

162

В некоторых устаревших версиях библиотеки С вместо этого возвращается -1 (если строка не помещается). Старая версия библиотеки С уже не поддерживается и не используется в защищенных программах, однако на man-странице по функции snprintf() демонстрируется код, обрабатывающий оба варианта.

На этой странице вы можете бесплатно читать книгу Разработка приложений в среде Linux. Второе издание - Майкл Джонсон бесплатно.
Похожие на Разработка приложений в среде Linux. Второе издание - Майкл Джонсон книги

Оставить комментарий