Консорциум W3C, курирующий разработку web-стандартов, опубликовал черновой вариант спецификации Raw Socket API, определяющей низкоуровневые средства сетевого взаимодействия, предоставляющие возможность создания TCP и UDP соединений. Поддерживается как создание серверных обработчиков, принимающих соединения, так и клиентских систем, обращающихся к внешним сервисам. Указанный API нацелен в первую очередь на создание локально выполняемых web-приложений, близких по своем возможностям к нативным приложениям (например, написанных с использованием web-технологий программ для мобильных платформ). Из других спецификаций, развиваемых той же рабочей группой, можно отметить API для обращения к средствам телефонии и мгновенного обмена сообщениями, API для взаимодействия с адресной книгой, API для доступа к аппаратным возможностям (BlueTooth) и т.д. Одновременно опубликовано несколько новых предварительных спецификаций для web-разработчиков: Shadow DOM (определение функциональных границ для деревьев DOM); Custom
Компания Google объявила о реализации поддержки в web-браузере Chrome и движке WebKit технологии Web Sockets, в настоящий момент принятой комитетом W3C для рассмотрения на предмет включения в будущий стандарт HTML5. Web Sockets представляет собой протокол и API для организации двунаправленного обмена данными между wеб-приложением и сервером. Образно говоря, Web Sockets является своеобразным аналогом TCP для Web и позволяет в произвольном порядке инициировать отправку данных от сервера к web-приложению и наоборот, от web-приложения к серверу. Для аутентификации и обеспечения безопасности передачи данных в Web Sockets используются стандартные механизмы браузера. Сам протокол не использует сырые TCP-соединения, но и не работает поверх HTTP, используя лишь тот же, что и в HTTP канал передачи данных, по которому не передается лишних HTTP заголовков, а соединение постоянно держится открытым. Установив Web Socket соединение между сервером и клиентом, разработчик может отправить данные из web-браузера выполнив
В статье приводятся основные характеристики реализации протокола SCTP в ядре Linux 2.6, рассмотрен исходный текст программ сервера и клиента, демонстрирующий возможности протокола по многопоточной передаче данных. Протокол передачи с управлением потоком (Stream Control Transmission Protocol, SCTP) - это надежный транспортный протокол, который обеспечивает стабильную, упорядоченную (с сохранением порядка следования пакетов) передачу данных между двумя конечными точками (подобно TCP). Кроме того, протокол обеспечивает сохранение границ отдельных сообщений (подобно UDP). Однако в отличие от протоколов TCP и UDP протокол SCTP имеет дополнительные преимущества, такие как поддержка множественной адресации (multihoming) и многопоточности (multi-streaming) - каждая из этих возможностей увеличивает доступность узла передачи данных.
В документе "Comparison of Solaris OS and Linux for Application Developers" описаны общие черты и различия средств для разработки программ на языке Си/С++ в Linux и Solaris 10. Рассматриваются такие сущности, как системные вызовы, стандартные библиотеки, интерфейс сокетов, средства для работы с процессами и нитями. Также опубликована статья "Comparing C++ Standard Libraries libCstd and libstlport" в которой сравниваются две С++ библиотеки, libCstd и libstlport, входящие в комплект Sun C++ compiler.
В статье "Five pitfalls of Linux sockets programming" описываются пять наиболее часто встречающихся ошибок в программах начинающих программистов, использующих API сетевых сокетов. Кратко: Игнорирование кода статуса завершения операции; Отсутствие обработки факта закрытия соединения удаленной стороной; Отсутствие setsockopt(...SO_REUSEADDR..) перед bind(); Отправка структурированных данных, забывая про возможные различия их интерпретации на различных платформах; Неправильная организация блочной передачи в рамках одного потока TCP (например, шлют по TCP через send два блока по 100 байт и полагают, что для чтения будет два read по 100, а не один по 200).
Robert Watson опубликовал отчёт об изменениях, проведённых проектом TrustedBSD, которые будут включены в релиз FreeBSD 6.0. Наиболее интересные пункты: Модуль mac_chkexec, который предназначен для проверки контрольных сумм запускаемых программ и модулей ядра (Christian Peron); Изменения в POSIX семафорах и System V IPC для увеличения возможностей по контролю и управлению доступом; Изменения для управления доступом к функциям сокетов: accept, pool и других; Дополнительные проверки атрибутов пользователей для контроля изменений в MAC Framework (Samy Al Bahra). Обновление FreeBSD части SEBSD (Andrew Reisse и Scott Long) Начались работы по внедрению системы Audit/BSM во FreeBSD.
Краткий перевод PDF документа "FreeBSD 5 Network Enhancements", в котором детально рассматриваются новшества и изменения в сетевой подсистеме FreeBSD 5 относительно FreeBSD 4. Ниже, сжатый перевод: Таблица маршрутизации Удален PRCLONING. Удален указатель на маршрут из INPCB. Теперь нет необходимости периодически сканировать все INPCB (блокируя их при этом) для удаления указателя после удаления маршрута. RTENTRY выделяются с помощью UMA что позволило объем занимаемый в памяти одним маршрутом с 256 до 130 байт. Работа с интерфейсам Уведомление о состоянии через RTSOCKET и KQUEUE. Пока реализовано уведомление об отключении/подключении кабеля для Ethernet интерфейсов. Переименования интерфейса (например ifconfig bge0 name office). Клонирование для создание виртуальных интерфейсов (например ifconfig gre0 create). Автоматические VLAN'ы. (упрощена настройка vlan интерфейсов, теперь достаточно просто ifconfig bge1.100 inet 192.168.1.1/24 для создания интерфейса в 100 vlan) Бинарная
Дополнение к новости от 24 апреля: "В рамках исследовательского проекта Internet2 (объединены около 200 университетов), используя однопоточную организацию канала связи, удалось достигнуть скорости передачи данных (использовался протокол IPv4) примерно 4,62 Гбит/сек. (840 гигабайт за 26 мин.), данные передавались из San Jose (USA) в Женеву (расстояние 16 тыс. километров)". В качестве конечных машин использовались два Dell 2650 (2GHz Xeon CPU, 512 Mb ОЗУ, сетевой адаптер Intel PRO/10GbE LR) сервера с операционной системой NetBSD 2.0 Beta (апрельский снапшот), передача данных осуществлялась при помощи утилиты ttcp. См. Подробное описание экспермента, сайт проекта - lsr.internet2.edu Тюнинг конфигурации NetBSD: Ядро: options MCLSHIFT=12 # Increase MBUF-cluster size to 4k. options NMBCLUSTERS=65536 # Increase number of buffers. Sysctl: net.inet.tcp.init_win=30000 # Tune TCP startup time kern.sbmax=300000000 # Max memory a socket can use, 300MB kern.somaxkva=300000000 # Max memory for all sockets
В статье "Understanding Network I/O" (часть 1, часть 2) приводятся примеры создания сетевых программ на языке Python, включая использования мультитредовой модели и опроса состояний через select/ poll. Материал подтолкнул меня обобщить используемые модели ввода/вывода: Стратегии организации ввода-вывода: Блокируемый I/O - после вызова read/write происходит блокировка до завершения операции, функция завершается только после принятия или передачи блока данных. Неблокируемый I/0 - функция завершается сразу, если данные не были приняты/отправлены возвращается код ошибки (т.е. нужно вызывать функции I/O в цикле пока не получим положительный результат). Мультиплексирование через select/poll - опрашиваем список состояния сокетов, перебирая состояния определяем сокеты готовые для приема/передачи. Главный минус - затраты на перебор, особенно при большом числе неактивных сокетов. select - число контролируемых сокетов ограничено лимитом FD_SETSIZE, в некоторых случаях лимит обходится
Алексей Тутубалин высказал свое мнение по поводу реальности внедрения технологий защиты от подделки обратных email адресов. Вывод - в обозримом будущем безболезненное повсеместное внедрение таких технологий как SPF или DomainKeys маловероятно. SPF - "Sender Permitted From" используя DNS формируется список IP серверов имеющих право рассылать почту используя данное доменное имя упоминаемое в адресе отправителя. Плюсы - открытость и относительная простота технологии и интеграции в MTA. Минус - привязывает пользователя к определенному почтовому серверу, не дает возможность отправить письмо ,например, через SMTP другого провайдера. DomainKeys от Yahoo (помещение в заголовке зашифрованного секретного ключа и распространение для данного домена открытого ключа посредством DNS). Плюсы - не зависимость от почтового сервера за счет возможности включения ключа пользовательским ПО. Минусы - закрытая, надуманная и излишне усложненная технология, трудность интеграции, возможность утечки ключа, после перехвата письма с