Обратите внимание: "бит в секунду" ("бит/с"), а не "бод". Бит в секунду определяет интенсивность передачи информации. Бод является техническим термином, описывающим смены фаз в течение секунды. Бод не соответствует termios
, но слово бод, к сожалению, попало в названия некоторых флагов termios
, не рассматриваемых в этой книге.
Например, приложения настройки сетевых протоколов, передающие информацию с помощью устройств tty.
B134
в действительности равняется 134,5 бит/с, скорость, используемая устаревшим терминалом IBM.
Linux также использует c_cflag
для хранения скорости, но не стоит на это полагаться. Вместо этого применяйте cfsetospeed()
и cfstispeed()
.
Ядра 2.6.x, рассматриваемые в настоящей книге, поддерживают как версию 4, так и версию 6 (на последнюю обычно ссылаются как на IPv6 из набора TCP/IP).
Кстати, именно так работают сети на основе коммутации пакетов. Альтернативная конструкция, сети с коммутацией каналов, более похожа на телефонные соединения. Однако они не часто используются при организации компьютерных сетей.
Вот почему криптография приобрела такую значимость с тех пор как появилась всемирная сеть Internet.
Многие высокоуровневые протоколы, такие как BOOTP и NFS, построены на основе UDP.
Допустимы еще несколько значений данного параметра, однако они редко применяются в коде приложений.
Системный вызов connect()
может также быть неблокируемым, что позволит пользователям гораздо быстрее открывать несколько TCP соединений (он позволяет продолжать работу программы, в то время как выполняется процесс синхронизации TCP). Подробности по этой теме можно найти в [33].
Различные формы select()
помечают сокет как открытый для чтения, тогда как accept()
не может блокировать его, даже если сокет не помечен как неблокируемый. Для обеспечения максимальной переносимости функцию select()
необходимо применять только для принятия соглашений с неблокируемыми сокетами, хотя в системе Linux это фактически не нужно. Причины этого подробно рассматриваются в [33].
Варианты BSD не поддерживают такую модель поведения, в таких системах ошибки проходят без отчетов.
И для bind()
, и для connect()
процесс должен иметь права на выполнение для каталогов, через которые проходит поиск путевого имени (почти как при открытии стандартных файлов).
Исходя из условий реального мира, большинство серверных программ должны быть параллельными. Однако многие из них фактически созданы как итерационные сервера. Например, Web-серверы, в основном, обрабатывают только одно соединение за раз через данный процесс. Для того чтобы разрешить соединение нескольким клиентам, сервер организован в виде множества отдельных процессов. Это делает создание Web-сервера более простым. Если ошибка прерывает работу одного из таких процессов, она затрагивает только одно клиентское соединение.
Это иногда называется передачей прав доступа.
Несмотря на то что это может показаться очевидным, некоторые протоколы позволяют отправителю использовать любой порядок байтов и в зависимости от получателя преобразовывать информацию в соответствующем порядке. Это приводит к увеличению производительности, если взаимодействуют подобные механизмы, за счет повышения сложности алгоритма.
Все процессоры Intel и совместимые с Intel хранят данные с прямым порядком байтов, поэтому здесь получение права преобразования очень важно для корректной работы программ.
Информация о IANA доступна по адресу http://www.iana.org.
Либо, все чаще и чаще, чтобы скрыть их от широкополосных поставщиков Internet-услуг, которые не хотят разрешить своим рядовым клиентам запускать серверы на домашних машинах.
Однако она может оказаться троянским конем, запущенным привилегированным пользователем.
Значения для неустановленных IPv4-адресов содержатся в константе INADDR_ANY
, которая является 32-битным числом.
Эти примеры взяты из документа RFC 1884, в котором определена структура адресации IPv6.
Это так называемый неустановленный адрес для IPv6.
Читать дальше