О сетях

Мир сетей сложен. Пользователи могут соединиться с Интернетом с помощью широкого диапазона технологий — кабельные модемы, DSL, Wi-Fi, сотовые соединения, спутниковые восходящие каналы, Ethernet и даже традиционные акустические модемы. Каждое из этих соединений имеет отличные характеристики, включая различия в пропускной способности, задержке, потере пакетов и надежности.

../art/AboutNetworking.png

Для добавления дальнейшей сложности соединение пользователя с Интернетом не рассказывает целую историю. Продвигающийся от пользователя к Интернет-серверу, сетевые данные пользователя проходят куда угодно от одного до десятков физических межсоединений, любое из которых могло быть высокоскоростной строкой OC-768 (почти в 40 миллиардах бит в секунду), скудный модем на 300 бодов (в 300 битах в секунду), или что-либо промежуточное. Хуже, в любой момент, скорость соединения пользователя с сервером могла измениться решительно — кто-то мог включить микроволновую печь, вмешивающуюся в связь Wi-Fi пользователя, пользователь мог обойти или изгнать из сотового диапазона, кто-то с другой стороны мира мог начать загружать большой фильм от сервера, к которому пользователь пытается получить доступ и т.д.

Как разработчик основанного на сети программного обеспечения, Ваш код должен быть в состоянии адаптироваться к изменению состояния сети, включая производительность, доступность и надежность. Этот документ говорит Вам как.

Сразу

Сети по сути ненадежны — сотовые сети вдвойне так. В результате хороший сетевой код имеет тенденцию быть несколько сложным. Среди прочего Ваше программное обеспечение должно:

Этот документ поможет Вам изучить эти понятия и больше.

Изучите, почему сети тверды

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

OS X и iOS Обеспечивают APIs на Многих Уровнях

Можно выполнить следующие сетевые задачи и в OS X и в iOS с идентичным или почти идентичным кодом:

Безопасная коммуникация является Вашей ответственностью

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

Большая часть OS X и iOS, объединяющий APIS В СЕТЬ, предоставляют простой интеграции TLS с этой целью. TLS является преемником протокола SSL. В дополнение к шифрованию данных по проводу TLS аутентифицирует сервер с сертификатом для предотвращения спуфинга.

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

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

iOS и Предложение OS X Специфичные для платформы Функции

Сетевая среда на OS X высоконастраиваема и расширяема. Платформа Конфигурации системы обеспечивает APIs для определения и установки текущей конфигурации сети. Кроме того, сетевые расширения ядра позволяют Вам расширить базовую сетевую инфраструктуру OS X путем добавления опций, таких как брандмауэр или VPN.

На iOS можно использовать специфичный для платформы сетевой APIs, чтобы обработать аутентификацию для присоединенных сетей и определять потоки сети Voice over Internet Protocol (VoIP).

Сети должны быть динамичными и асинхронными

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

Как использовать этот документ

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

Первая глава, Разрабатывающая для Реальных Сетей, объясняет трудности, с которыми Вы столкнетесь при записи программного обеспечения, использующего сети, почему задержка имеет значение, и другие понятия, которые необходимо знать перед записью первой строки сетевого кода.

Следующая глава, Оценивая Ваши Сетевые Потребности, предоставляет больше подробную информацию о выборе семьи API и определении, какие типы сетевых задач Ваша программа выполнит. Эта глава тогда указывает на Вас на другие главы (Обнаружение и Распространение Сетевых служб, Создание HTTP и Запросов HTTPS, и Используя Сокеты и Потоки Сокета), которые описывают некоторые общие сетевые задачи, которые Ваша программа, возможно, должна была бы выполнить.

Наконец, Используя Сети Надежно и Предотвращение Общих Сетевых Ошибок дают представление, который может помочь Вам избежать общих сетевых ошибок.

См. также

Этот документ предназначается как общий обзор сетей проблем в OS X и iOS. Документы ниже приводят дополнительную глубину и ширину.

Изучите то, что происходит под капотом

Основное понимание способа, которым работа сетей может помочь Вам понять, почему они ведут себя (или неправильно себя ведут), как они делают. Таким образом необходимо изучить, по крайней мере, основные базовые понятия перед записью первой строки кода. В минимуме необходимо быть знакомы с пакетами и инкапсуляцией, основаны на соединении по сравнению с протоколами без установления соединения, подсетями и маршрутизацией, поиском доменного имени, пропускной способностью и задержкой. Для приобретения знаний об этом предмете считайте следующий документ:

Узнайте об определенных технологиях

Для большей всесторонней информации консультируйтесь с одним из следующих руководств для основной документации относительно конкретной темы:

Изучите, Как Совместно использовать Документы Между OS X и iOS

Следующие документы описывают методы, которые можно использовать для совместного использования документов между OS X и iOS: