SIP-телефония
В последнее время наблюдается повышенный интерес к технологиям IP-телефонии, использование которой позволяет в значительной мере снизить стоимость телефонной связи. При этом становится возможным использование сети Интернет, что позволяет сразу достичь «глобальных масштабов», а необходимость прокладки магистральных коммуникаций попросту отпадает.
Целью данной статьи является поверхностное рассмотрение возможностей IP-телефонии, использующей протокол SIP, для ознакомления с общими принципами ее работы.
Протокол SIP (Session Initiat Protocol, протокол установки соединения) не является первопроходцем в области IP-телефонии. Протокол H.323 уже давно используется для целей IP-телефонии, однако изначально он не разрабатывался для IP-сетей, что снижает «оптимальность» их совместной работы. За годы работы с протоколом H.323 накоплен большой опыт использования, который позволил выявить как его положительные черты, так и недостатки, которые были учтены при разработке протокола SIP.
Протокол H.323 использует двоичный формат. Одним из следствий этого является необходимость стандартизации всех возможностей данного протокола, так как в случае если определенная возможность не поддерживается устройством, то такие устройства из-за двоичного формата не смогут работать друг с другом. SIP-протокол использует текстовый формат сообщений, если одному из устройств не знаком определенный тип сообщения или заголовка, то оно просто игнорируется (как и в HTTP, который по своему формату очень похож формат протокола SIP). К тому же сам протокол SIP значительно проще H.323.
Возможности протокола SIP
Основные преимущества протокола SIP:
1. Масштабируемость — возможность увеличения количества клиентов при расширении сети.
2. Мобильность — возможность получения сервиса вне зависимости от местоположения (как например электронная почта), а каждому пользователю выдается персональный идентификатор, по которому он может быть найден.
3. Расширяемость — возможность дополнения протокола новыми функциями (за счет введения новых заголовков и сообщений). Как уже говорилось выше, если устройству встречается неизвестное ему расширение протокола, оно попросту игнорируется. Так как протокол H.323 использует сообщения двоичного формата, то неизвестные функции могут привести к невозможности предоставления сервиса.
Протокол SIP разрабатывался с расчетом на возможность использования любых транспортов, но, тем не менее, наиболее предпочтительным является использование UDP-пакетов (это позволяет повысить производительность по сравнению с использованием протокола TCP, но требует использования дополнительных механизмов проверки доставки сигнальных сообщений).
Так как телефония с использованием протокола SIP позволяет использовать большое количество разнообразных сервисов (помимо передачи голоса, возможна передача видео, текстовых сообщений, факсов и др.), необходим механизм обмена информацией о том, какие сервисы может использовать вызываемая\вызывающая стороны. Для этой цели используется протокол SDP (Session Description Protocol) — протокол описания сессии. Данный протокол позволяет определить какие звуковые (видео и другие) кодеки и иные возможности может использовать удаленная сторона.
Собственно сама передача голоса осуществляется благодаря использованию протокола RTP (Real-time Transport Protocol, протокол транспортировки в реальном времени). Сам протокол SIP непосредственного участия в передаче голосовых, видео и других данных не принимает, он отвечает только за установление связи (по протоколам SDP, RTP и др.), поэтому под SIP-телефонией понимается не передача голоса по протоколу SIP, а передача голоса с использованием протокола SIP. Использование протокола SIP предоставляет новые возможности установления соединений (а также возможность беспроблемного расширения данных возможностей), а не непосредственной передачи голосового и других видов трафика.
Формат адресов используемых протоколом SIP напоминает формат E-Mail-адреса: имя@идентификатор_хоста. В начале адреса ствится приставка «sip:» (пример: sip:user@host.com). В качестве идентификатора хоста может служить его IP-адрес, домен или имя хоста (IP-адрес определяется с использованием DNS, так что в итоге все равно получается обращение по адресу sip: имя@IP-адрес).
Архитектура SIP-сети
Стандартными элементами в SIP-сети являются:
1. User Agent: по протоколу SIP устанавливаются соединения «клиент-сервер». Клиент устанавливает соединения, а сервер принимает вызовы, но так обычно телефонный аппарат (или программный телефон) может как устанавливать так и принимать звонки, то получается что он одновременно играет роль и клиента и сервера (хотя в реализации протокола это не является обязательным критерием) — в этом случае его называют User Agent (UA) или терминал.
2. Прокси-сервер: прокси сервер принимает запросы и производит с ним некоторые действия (например определяет местоположение клиента, производит переадресацию или перенаправление вызова и др.). Он также может устанавливать собственные соединения. Зачастую прокси-сервер совмещают с сервером определения местоположения (Register-сервер), в таком случае его называют Registrar-сервером.
3. Сервер опредления местоположения или сервер регистрации (Register): данный вид сервера служит для регистрации пользователей. Регистрация пользователя производится для определения его текущего IP-адреса, для того чтобы можно было произвести вызов user@IP-адрес. В случае если пользователь переместится в другое место и/или не имеет определенного IP-адреса, его текущий адрес можно будет определить после того, как он зарегистрируется на сервере регистрации. Таким образом клиент останется доступен по одному и тому же SIP-адресу вне зависимости от того, где на самом деле находится.
4. Сервер переадресации: обращается к серверу регистрации для определения текущего IP-адреса пользователя, но в отличие от прокси сервера только «переадресует» клиента, а не устанавливает собственные соединения.
Прокси-серверы в SIP-сети также могут вносить изменения в передаваемые сообщения — это позволяет беспрепятственно преодолевать NAT в случае если прокси-сервер стоит на NAT-маршрутизаторе (также возможна настройка прокси сервера, находящегося за NAT в случае если на последнем невозможно установить прокси сервер — для этого потребуется задать параметры переадресации так, чтобы получился прокси-сервер стал «виртуальным сервером»). Помимо этого прокси-серверы можно объединять в «цепочки», которые позволяют использовать телефонию, даже если конечная точка (UA) находится сразу за несколькими NAT-шлюзами.
Сообщения SIP
Сообщения SIP-протокола имеют следующую структуру:
- Стартовая строка (start-line)
- Заголовки сообщения (*message-header)
- Пустая строка (CRLF)
- Тело сообщения
Стартовая строка различается в зависимости от того является ли сообщение запросом или ответом (в случае запроса — в ней сообщается тип запроса, адресат и номер версии протокола, а в случае ответа — номер версии протокола, статус и текстовую расшифровку статуса).
В заголовках содержатся сведения об источнике, адресате, пути следования сообщения и др. Этих заголовков может быть достаточно много и это количество может меняться на пути следования пакетов.
В протоколе SIP версии 2.0 существует 6 типов запросов (тип запроса задается в стартовой строке):
- INVITE — вызывает адресата для установления связи. С помощью этого сообщения адресату передаются виды поддерживаемых сервисов (которые могут быть использованы инициатором сеанса), а также виды сервисов, которые желает передавать инициатор связи
- ACK — сообщение подтверждающее согласие адресата установить соединения. В этом сообщении могут быть переданы окончательные параметры сеанса связи (окончательно выбираются виды сервисов и их параметры которые будут использованы)
- Cancel — отмена ранее переданных запросов (используется в случае если необходимости в них больше нет)
- BYE — запрос завершения соединения
- Register — данным запросом пользователь идентифицирует свое текущее местоположение
- OPTIONS — запрос информации о функциональных возможностях терминала (применяется в случае, если эти данные нужно получить до установления соединения, то есть до фактического обмена данной информацией с помощью запросов INVITE и ACK)
На каждый запрос, отправителю направляется ответ, содержащий код результата выполнения запроса. Формат этих ответов унаследован от протокола HTTP. Ответы кодируются 3-хзначным числом, первая цифра которого указывает на класс ответов, а остальные две — идентифицируют конкретный ответ в каждом классе. Устройство может не знать, что означает код ответа, но должно обязательно знать класс ответа. Всего существует 6 классов ответов:
- 1?? — информационные ответы
- 2?? — успешное окончание запроса
- 3?? — информация об изменения местоположения вызываемого абонента
- 4?? — информация об ошибке
- 5?? — информация об ошибке сервера
- 6?? — информация о невозможности вызова абонента (пользователя с таким адресом не существует, или пользователь отказывается принять вызов)
Информационные ответы сообщают о стадии выполнения запроса, они не являются завершением запроса. Остальные же классы ответов завершают выполнение запроса.
Пример
Рассмотрим пример процесса установления соединения с использованием SIP-протокола (пример взят из RFC 3261). Данный пример отражает работу базовых функций телефонии и соответственно не затрагивает такие возможности как видеосвязь передача текстовых сообщений и др. — общий принцип работы протокола остается неизменным.

рис. 1 (RFC 3261)
Пользователь Alice (sip:alice@atlanta.com) вызывает пользователя Bob (sip:bob@biloxi.com).
1. Пользователь Alice посылает сообщение INVITE прокси-серверу по умолчанию (atlanta.com) Если бы пользователю Alice был известен IP-адрес пользователя Bob и он мог к нему обратиться напрямую, то запрос INVITE в этом случае мог быть послан непосредственно вызываемому пользователю.
2. Прокси-сервер посылает запрос INVITE серверу вызываемого абонента (biloxi.com).
3. Далее прокси-сервер пользователя Bob при необходимости определяет его текущий IP-адрес и посылает ему сообщение INVITE — у пользователя начинает звонить телефон, о чем сообщается в ответе 180 (Ringing).
4. Если вызываемый пользователь ответил на звонок, то на запрос INVITE высылается ответ 200 (OK).
5. Вызывающий пользователь отправляет сообщение ACK, сообщающее вызываемому о том, что он получил ответ на свой запрос INVITE, им задаются окончательные параметры соединения. На этом этапе все готово к установлению соединения по протоколу RTP (Real-time Transport Protocol).
6. Устанавливается RTP-соединение с заранее согласованными параметрами.
7. Для завершения соединения, завершающим пользователем (кладет трубку) высылается запрос BYE, на которое высылается ответ 200 (OK)
Пока сообщения установления соединения (INVITE) ходят между прокси-серверами и неизвестно доступен ли вызываемый пользователь, в ответ на INVITE посылается ответ 100 (Trying), сообщающий о попытке установления соединения.
Так как прокси-сервер может устанавливать собственные соединения, его использование позволяет вызовам без проблем преодолевать NAT. Также возможно построение нескольких прокси-серверов в одну цепочку, что позволяет преодолевать сразу несколько NAT.
Кодеки
Для передачи звука и видео используются различные алгоритмы сжатия и кодирования данных. Эти алгоритмы называются кодеками. Различные кодеки используют различную ширину полосы пропускания, а также вносят различные задержки и обеспечивают различное качество сервиса. Для звуковых кодеков бычно ширина полосы пропускания составляет от 4-х до 64 кбит/с.
Методика тестирования
Основное направления тестирования SIP-телефонии заключается в рассмотрении качества передачи голоса при ограничении ширины полосы пропускания. Также будет рассматриваться качество передачи голоса при динамическом изменении числа сеансов IP-телефонии и изменении загруженности канала связи. При тестировании IP-маршрутизаторов будет также рассматриваться поведение потоков трафика при установлении сеансов IP-телефонии.
Более четкая методика будет разрабатываться по мере нарастания основательной базы результатов тестирования SIP-оборудования различных производителей.
Заключение
По прогнозам производителей оборудования IP-телефонии, популярность SIP-телефонии будет расти и темпы этого роста будут превосходить темпы роста IP-телефонии в целом, поэтому сами производители возлагают на SIP большие надежды. По тем же прогнозам резкое возрастание интереса к SIP-протоколу (и соответственно оборудованию использующему SIP-протокол) со стороны конечных пользователей придется как раз на 2006 год. По этой причине за выпуск оборудования использующего протокол SIP вплотную взялись многие компании, работающие в области коммуникаций.
© 2005-2023 Федеральная инжиниринговая сеть МТ-ТЕХНО
УВЕДОМЛЕНИЕ О КОНФИДЕНЦИАЛЬНОСТИ FLUID DYNAMICS
Это уведомление о конфиденциальности для Fluid Dynamics International Ltd («Компания», «мы», «нас» или «наш») описывает, как и почему мы можем собирать, хранить, использовать и/или делиться («обрабатывать») вашу информацию, когда вы пользуетесь нашими услугами («Услуги»), например, когда вы:
- посетите наш сайт по адресу fdiltd.com, или любой наш веб-сайт, который ссылается на это уведомление о конфиденциальности
- взаимодействовать с нами другими соответствующими способами, включая любые продажи, маркетинг или мероприятия
В Fluid Dynamics International Ltd мы стремимся обеспечить конфиденциальность и защиту личных данных наших пользователей. В соответствии с Общим регламентом защиты данных (GDPR) мы определяем наши роли в обработке этих данных:
В качестве контроллера данных: когда вы пользуетесь нашими услугами, такими как регистрация учетной записи, совершение покупки или обращение в нашу службу поддержки, мы выступаем в качестве контроллера данных. Это означает, что мы определяем цели и средства обработки ваших персональных данных.
В качестве обработчика данных: в определенных сценариях мы можем выступать в качестве обработчика данных. Обычно это происходит, когда мы используем сторонние службы для выполнения определенных функций, таких как маркетинг по электронной почте или обработка платежей. В этих случаях мы обрабатываем ваши персональные данные на основании инструкций Контролера данных.
Вопросы или опасения? Ознакомление с этим уведомлением о конфиденциальности поможет вам понять свои права и варианты выбора в отношении конфиденциальности. Если вы не согласны с нашей политикой и практикой, пожалуйста, не пользуйтесь нашими Услугами. Если у вас все еще есть какие-либо вопросы или проблемы, пожалуйста, свяжитесь с нами по адресу привет@fdiltd.com
- КАКУЮ ИНФОРМАЦИЮ МЫ СОБИРАЕМ?
Личная информация, которую вы раскрываете нам: мы собираем личную информацию, которую вы добровольно предоставляете нам, когда вы выражаете заинтересованность в получении информации о нас или наших продуктах и Услугах, когда вы участвуете в деятельности в рамках Услуг или иным образом, когда вы связываетесь с нами.
Личная информация, предоставленная вами: личная информация, которую мы собираем, зависит от контекста вашего взаимодействия с нами и Услугами, вашего выбора, а также продуктов и функций, которые вы используете. Личная информация, которую мы собираем, может включать следующее:
- имена
- адрес электронной почты
- название компании
- контактный телефон
Мы не обрабатываем конфиденциальную информацию. Вся личная информация, которую вы нам предоставляете, должна быть достоверной, полной и точной, и вы должны уведомлять нас о любых изменениях такой личной информации.
Автоматически собираемая информация:
Некоторая информация, такая как ваш адрес интернет-протокола (IP) и/или характеристики браузера и устройства, собирается автоматически, когда вы посещаете наши Сервисы. Мы автоматически собираем определенную информацию, когда вы посещаете, используете или перемещаетесь по Услугам. Эта информация не раскрывает вашу конкретную личность (например, ваше имя или контактную информацию), но может включать информацию об устройстве и использовании, такую как ваш IP-адрес, характеристики браузера и устройства, операционная система, языковые настройки, URL-адреса ссылок, имя устройства, страну, местоположение, информацию. о том, как и когда вы используете наши Услуги, и другую техническую информацию. Эта информация в первую очередь необходима для обеспечения безопасности и работы наших Сервисов, а также для нашей внутренней аналитики и отчетности. Как и многие компании, мы также собираем информацию с помощью файлов cookie и аналогичных технологий.
Информация, которую мы собираем, включает:
- Журналы и данные об использовании Журналы и данные об использовании — это информация, связанная с услугами, диагностикой, использованием и производительностью, которую наши серверы автоматически собирают, когда вы получаете доступ к нашим Услугам или используете их, и которые мы записываем в файлы журналов. В зависимости от того, как вы взаимодействуете с нами, эти данные журнала могут включать ваш IP-адрес, информацию об устройстве, тип браузера, а также настройки и информацию о вашей активности в Сервисах (например, метки даты/времени, связанные с вашим использованием, просмотренными страницами и файлами). , поиск и другие действия, которые вы предпринимаете, например, какие функции вы используете), информацию о событиях устройства, такую как системная активность, отчеты об ошибках (иногда называемые «аварийными дампами») и настройки оборудования.
- Данные устройства. Мы собираем данные об устройствах, такие как информация о вашем компьютере, телефоне, планшете или других устройствах, которые вы используете для доступа к Услугам. В зависимости от используемого устройства эти данные устройства могут включать такую информацию, как ваш IP-адрес или прокси-сервер), идентификационные номера устройства и приложения, местоположение, тип браузера, модель оборудования, интернет-провайдера и/или оператора мобильной связи, операционную систему и систему. информация о конфигурации.
- Данные о местоположении. Мы собираем данные о местоположении, такие как информация о местонахождении вашего устройства, которая может быть точной или неточной. Объем собираемой нами информации зависит от типа и настроек устройства, которое вы используете для доступа к Услугам. Например, мы можем использовать GPS и другие технологии для сбора данных геолокации, которые сообщают нам ваше текущее местоположение (на основе вашего IP-адреса). Вы можете отказаться от разрешения нам собирать эту информацию, либо отказав в доступе к информации, либо отключив настройку «Местоположение» на своем устройстве. Однако, если вы решите отказаться, вы не сможете использовать определенные аспекты Услуг.
- КАК МЫ ОБРАБАТЫВАЕМ ВАШУ ИНФОРМАЦИЮ?
Мы обрабатываем вашу информацию для предоставления, улучшения и администрирования наших Сервисов, для связи с вами, для обеспечения безопасности и предотвращения мошенничества, а также для соблюдения законодательства. Мы также можем обрабатывать вашу информацию для других целей с вашего согласия.
Мы обрабатываем вашу личную информацию по разным причинам, в зависимости от того, как вы взаимодействуете с нашими Услугами, в том числе:
. Для предоставления и облегчения предоставления услуг пользователю. Мы можем обрабатывать вашу информацию, чтобы предоставить вам запрошенную услугу.
- Отвечать на запросы пользователей/предлагать поддержку пользователям. Мы можем обрабатывать вашу информацию, чтобы отвечать на ваши запросы и решать любые потенциальные проблемы, которые могут возникнуть у вас с запрошенной услугой.
- Чтобы отправить вам административную информацию. Мы можем обрабатывать вашу информацию, чтобы отправлять вам сведения о наших продуктах и услугах, изменениях в наших условиях и политиках и другую подобную информацию.
- Для выполнения и управления вашими заказами. Мы можем обрабатывать вашу информацию для выполнения и управления вашими заказами, платежами, возвратами и обменами, осуществляемыми через Сервисы.
- Для обеспечения связи между пользователями. Мы можем обрабатывать вашу информацию, если вы решите использовать какие-либо из наших предложений, которые позволяют общаться с другим пользователем.
- Чтобы запросить отзыв. Мы можем обрабатывать вашу информацию, когда это необходимо, чтобы запросить отзыв и связаться с вами по поводу использования вами наших Услуг.
- Для отправки вам маркетинговых и рекламных сообщений. Мы можем обрабатывать личную информацию, которую вы отправляете нам, в наших маркетинговых целях, если это соответствует вашим маркетинговым предпочтениям. Вы можете отказаться от наших маркетинговых рассылок в любое время.
- Чтобы предоставить вам таргетированную рекламу. Мы можем обрабатывать вашу информацию для разработки и отображения персонализированного контента и рекламы с учетом ваших интересов, местоположения и многого другого.
- Для защиты наших Сервисов. Мы можем обрабатывать вашу информацию в рамках наших усилий по обеспечению безопасности наших Сервисов, включая мониторинг и предотвращение мошенничества.
- Чтобы сохранить или защитить жизненно важные интересы человека. Мы можем обрабатывать вашу информацию, когда это необходимо для сохранения или защиты жизненно важных интересов человека, например, для предотвращения вреда.
- НА КАКИЕ ЮРИДИЧЕСКИЕ ОСНОВАНИЯ МЫ ОСУЩЕСТВЛЯЕМ ОБРАБОТКУ ВАШЕЙ ИНФОРМАЦИИ?
Мы обрабатываем вашу личную информацию только тогда, когда мы считаем это необходимым, и у нас есть веская юридическая причина (например, юридическое основание) для этого в соответствии с действующим законодательством, с вашего согласия соблюдать законы, предоставлять вам услуги для заключения или выполнения наши договорные обязательства по защите ваших прав или для выполнения наших законных деловых интересов.
Общий регламент по защите данных (GDPR) и GOPR Великобритании требуют от нас разъяснения действительных правовых оснований, на которые мы полагаемся при обработке вашей личной информации. Таким образом, мы можем полагаться на следующие правовые основания для обработки вашей личной информации:
Согласие. Мы можем обрабатывать вашу информацию, если вы дали нам разрешение (т.е. согласие) на использование вашей личной информации для определенной цели. Вы можете отозвать свое согласие в любое время.
Исполнение контракта. Мы можем обрабатывать вашу личную информацию, когда мы считаем, что это необходимо для выполнения наших договорных обязательств перед вами, включая предоставление наших Услуг, или по вашему запросу до заключения с вами договора.
Законные интересы. Мы можем обрабатывать вашу информацию, когда мы считаем, что это разумно необходимо для достижения наших законных деловых интересов, и эти интересы не перевешивают ваши интересы и основные права и свободы. Например, мы можем обрабатывать вашу личную информацию для некоторых из описанных целей, чтобы:
- Отправляйте пользователям информацию о специальных предложениях и скидках на наши продукты и услуги
- Разрабатывать и отображать персонализированный и актуальный рекламный контент для наших пользователей
- Диагностика проблем и/или предотвращение мошеннических действий
- Понимать, как наши пользователи используют наши продукты и услуги, чтобы мы могли улучшить пользовательский опыт.
Правовые обязательства. Мы можем обрабатывать вашу информацию, если мы считаем, что это необходимо для соблюдения наших юридических обязательств, например, для сотрудничества с правоохранительным или регулирующим органом, осуществления или защиты наших законных прав или раскрытия вашей информации в качестве доказательства в судебном процессе, в котором мы участвуем. вовлеченный.
Жизненно важные интересы. Мы можем обрабатывать вашу информацию, когда считаем, что это необходимо для защиты ваших жизненно важных интересов или жизненно важных интересов третьей стороны, например, в ситуациях, связанных с потенциальными угрозами безопасности любого лица.
- КОГДА И КОМУ МЫ ДЕЛИМСЯ ВАШЕЙ ЛИЧНОЙ ИНФОРМАЦИЕЙ?
Мы можем делиться информацией в определенных ситуациях, описанных в этом разделе, и/или со следующими категориями третьих лиц.
Поставщики, консультанты и другие сторонние поставщики услуг. Мы можем передавать ваши данные сторонним поставщикам, поставщикам услуг, подрядчикам или агентам («третьи стороны»), которые оказывают услуги для нас или от нашего имени и которым для выполнения этой работы требуется доступ к такой информации. У нас есть договоры с нашими третьими лицами, которые предназначены для защиты вашей личной информации. Это означает, что они не могут ничего сделать с вашей личной информацией, если мы не проинструктируем их сделать это. Они также не будут передавать вашу личную информацию какой-либо организации, кроме нас. Они также обязуются защищать данные, которые они хранят от нашего имени, и хранить их в течение периода, который мы указываем. Категории третьих лиц, которым мы можем передавать личную информацию, следующие:
- Финансы и бухгалтерские инструменты
- Услуги по анализу данных
Нам также может понадобиться предоставить вашу личную информацию в следующих ситуациях:
- Деловые трансферы. Мы можем делиться или передавать вашу информацию в связи или во время переговоров о любом слиянии, продаже активов компании, финансировании или приобретении всего или части нашего бизнеса другой компании.
- Когда мы используем API платформы Google Maps. Мы можем передавать вашу информацию некоторым API платформы Google Maps (например, API Google Maps API Places). Чтобы узнать больше о Политике конфиденциальности Google, см. эту ссылку
- МЫ ИСПОЛЬЗУЕМ КУКИ И ДРУГИЕ ТЕХНОЛОГИИ ОТСЛЕЖИВАНИЯ?
Мы можем использовать файлы cookie и аналогичные технологии отслеживания (например, веб-маяки и пиксели) для доступа или хранения информации. Файлы cookie — это небольшие текстовые файлы, которые мы отправляем на ваш компьютер или другие устройства (например, мобильный телефон, планшет), к которым мы можем получить доступ, когда вы посетите наш сайт в будущем.
Типы файлов cookie
Мы используем различные типы файлов cookie на нашем веб-сайте, чтобы улучшить ваш опыт и предоставить персонализированные услуги. К ним относятся:
Необходимые файлы cookie: необходимы для работы веб-сайта.
Аналитические файлы cookie: используются для анализа поведения пользователей и улучшения наших услуг.
Сторонние файлы cookie: могут использоваться сторонними службами, такими как Google Analytics и Hotjar, для предоставления дополнительных функций.
Механизм согласия
При посещении нашего сайта вам будет представлено настраиваемое окно согласия, позволяющее принять или отклонить файлы cookie. Никакие файлы cookie не будут храниться до тех пор, пока не будет дано согласие.
- КАК ДОЛГО МЫ ХРАНИМ ВАШУ ИНФОРМАЦИЮ?
Мы храним вашу информацию до тех пор, пока это необходимо для достижения целей, изложенных в этом уведомлении о конфиденциальности, если иное не требуется по закону.
Мы будем хранить вашу личную информацию только до тех пор, пока это необходимо для целей, изложенных в этом уведомлении о конфиденциальности, за исключением случаев, когда более длительный срок хранения требуется или разрешен законом (например, налоговыми, бухгалтерскими или другими правовыми требованиями).
Если у нас нет постоянной законной деловой необходимости обрабатывать вашу личную информацию, мы либо удалим, либо анонимизируем такую информацию, либо, если это невозможно (например, из-за того, что ваша личная информация хранилась в архивах резервных копий), мы безопасно хранить вашу личную информацию и изолировать ее от дальнейшей обработки до тех пор, пока удаление не станет возможным.
- КАК МЫ ХРАНИМ ВАШУ ИНФОРМАЦИЮ?
Мы стремимся защитить вашу личную информацию с помощью системы организационных и технических мер безопасности.
Мы внедрили соответствующие и разумные технические и организационные меры безопасности, предназначенные для защиты безопасности любой личной информации, которую мы обрабатываем. Однако, несмотря на наши меры безопасности и усилия по защите вашей информации, никакая электронная передача через Интернет или технологии хранения информации не могут быть гарантированы на 100%, поэтому мы не можем обещать или гарантировать, что хакеры, киберпреступники или другие неуполномоченные третьи лица не будут защищены. могут обойти нашу систему безопасности и ненадлежащим образом собирать, получать доступ, красть или изменять вашу информацию. Хотя мы делаем все возможное для защиты вашей личной информации, передача личной информации в наши Сервисы и из них осуществляется на ваш страх и риск. Вы должны получать доступ к Услугам только в безопасной среде.
- Каковы ваши права на конфиденциальность?
В некоторых регионах (например, в ЕЭЗ, Великобритании и Канаде) у вас есть определенные права в соответствии с применимыми законами о защите данных. Они могут включать право запрашивать доступ и получать копию вашей личной информации, запрашивать исправление или удаление, (i) ограничивать обработку вашей личной информации и (iv) если это применимо к переносимости данных. В определенных обстоятельствах вы также можете иметь право возражать против обработки вашей личной информации. Вы можете сделать такой запрос, связавшись с нами.
Мы рассмотрим любой запрос и примем меры в соответствии с применимыми законами о защите данных.
Если вы находитесь в ЕЭЗ или Великобритании и считаете, что мы незаконно обрабатываем вашу личную информацию, вы также имеете право подать жалобу в местный орган по надзору за защитой данных. Вы можете найти их контактные данные здесь: https://ec.europa.eu/info/index_en
Если вы находитесь в Швейцарии, контактные данные органов по защите данных доступны здесь: https://www.edoeb.admin.ch/edoeb/en/home.html
Отзыв вашего согласия: если мы полагаемся на ваше согласие на обработку вашей личной информации, которое может быть явным и/или подразумеваемым согласием в зависимости от применимого законодательства, вы имеете право отозвать свое согласие в любое время. Вы можете отозвать свое согласие в любое время, связавшись с нами.
Однако обратите внимание, что это не повлияет на законность обработки до ее отзыва, а также, когда это разрешено применимым законодательством, не повлияет на обработку вашей личной информации, осуществляемую на законных основаниях обработки, кроме согласия.
Отказ от маркетинговых и рекламных сообщений: Вы можете отказаться от подписки на наши маркетинговые и рекламные сообщения в любое время, нажав на ссылку отказа от подписки в электронных письмах, которые мы отправляем, или связавшись с нами. После этого вы будете удалены из маркетинговых списков. Тем не менее, мы по-прежнему можем связываться с вами, например, для отправки вам сообщений, связанных с обслуживанием, которые необходимы для администрирования и использования вашей учетной записи, для ответа на запросы на обслуживание или для других целей, не связанных с маркетингом.
Файлы cookie и аналогичные технологии. Большинство веб-браузеров по умолчанию настроены на прием файлов cookie. Если вы предпочитаете, вы обычно можете настроить свой браузер на удаление файлов cookie и отклонение файлов cookie. Если вы решите удалить файлы cookie или отклонить файлы cookie, это может повлиять на определенные функции или услуги наших Сервисов. Чтобы отказаться от рекламы рекламодателей на основе интересов в наших Сервисах, посетите http://www.aboutads.info/choices
Если у вас есть вопросы или комментарии о ваших правах на конфиденциальность, вы можете написать нам по адресу привет@fdiltd.com
- ОРГАНЫ УПРАВЛЕНИЯ ДЛЯ НЕОБХОДИМЫХ ФУНКЦИЙ
Большинство веб-браузеров, а также некоторые мобильные операционные системы и мобильные приложения включают функцию или параметр «Не отслеживать» (DNT), который вы можете активировать, чтобы сигнализировать о том, что вы предпочитаете конфиденциальность, чтобы данные о ваших действиях в Интернете не отслеживались и не собирались. На данном этапе не разработан единый технологический стандарт для распознавания и реализации сигналов DNT. Таким образом, в настоящее время мы не реагируем на сигналы браузера DNT или любой другой механизм, который автоматически сообщает о вашем решении не отслеживаться в Интернете. Если будет принят стандарт онлайн-отслеживания, которому мы должны следовать в будущем, мы сообщим вам об этой практике в пересмотренной версии настоящего уведомления о конфиденциальности.
- ДЕЛАЕМ ЛИ МЫ ОБНОВЛЕНИЯ ЭТОГО УВЕДОМЛЕНИЯ?
Мы можем время от времени обновлять это уведомление о конфиденциальности. Обновленная версия будет отмечена обновленной датой «Пересмотрено», и обновленная версия вступит в силу, как только она будет доступна. Если мы внесем существенные изменения в это уведомление о конфиденциальности, мы можем уведомить вас, либо разместив уведомление о таких изменениях или напрямую отправив вам уведомление. Мы рекомендуем вам регулярно просматривать это уведомление о конфиденциальности, чтобы быть в курсе того, как мы защищаем вашу информацию.
- КАК ВЫ МОЖЕТЕ СВЯЗАТЬСЯ С НАМИ ПО ЭТОМУ УВЕДОМЛЕНИЮ?
Если у вас есть вопросы или комментарии по этому уведомлению, вы можете отправить нам электронное письмо по адресу привет@fdiltd.com или по почте:
Fluid Dynamics International Ltd Unit 10, Hybris Business Park, Warmwell Road, Crossways, Dorchester, Dorset, DT2 88F, Соединенное Королевство.
- КАК ВЫ МОЖЕТЕ ПРОСМОТРЕТЬ, ОБНОВИТЬ ИЛИ УДАЛИТЬ ДАННЫЕ, КОТОРЫЕ МЫ ОТ ВАС СОБИРАЕМ?
В соответствии с действующим законодательством вашей страны вы можете иметь право запросить доступ к личной информации, которую мы получаем от вас, изменить эту информацию или удалить ее. Чтобы запросить просмотр, обновление или удаление вашей личной информации, напишите нам по адресу привет@fdiltd.com.
C помощью какого запроса пользователь сообщает свое текущее местоположение
В настоящей версии протокола SIP определено шесть типов запросов. Каждый из них предназначен для выполнения довольно широкого круга задач, что является явным достоинством протокола SIP, так как благодаря этому число сообщений, которыми обмениваются терминалы и серверы, сведено к минимуму. С помощью запросов клиент сообщает о текущем местоположении, приглашает пользователей принять участие в сеансах связи, модифицирует уже установленные сеансы, завершает их и т.д. Сервер определяет тип принятого запроса по названию, указанному в стартовой строке. В той же строке в поле Request-URI указан SIP-адрес оборудования, которому этот запрос адресован. Содержание полей То и Request-URI может различаться, например, в поле То может быть указан публикуемый адрес абонента, а в поле Request-URI — текущий адрес пользователя.
Запрос INVITE приглашает пользователя принять участие в сеансе связи. Он обычно содержит описание сеанса связи, в котором указывается вид принимаемой информации и параметры (список возможных вариантов параметров), необходимые для приема информации, а также может указываться вид информации, которую вызываемый пользователь желает передавать. В ответе на запрос типа INVITE указывается вид информации, которая будет приниматься вызываемым пользователем, и, кроме того, может указываться вид информации, которую вызываемый пользователь собирается передавать (возможные параметры передачи информации).
В этом сообщении могут содержаться также данные, необходимые для аутентификации абонента, и, следовательно, доступа клиентов к SIP-серверу. При необходимости изменить характеристики уже организованных каналов передается запрос INVITE с новым описанием сеанса связи. Для приглашения нового участника к уже установленному соединению также используется сообщение INVITE.
Запрос АСК подтверждает прием ответа на запрос INVITE. Следует отметить, что запрос АСК используется только совместно с запросом INVITE, т.е. этим сообщением оборудование вызывающего пользователя показывает, что оно получило окончательный ответ на свой запрос INVITE. В сообщении АСК может содержаться окончательное описание сеанса связи, передаваемое вызывающим пользователем.
Запрос CANCEL отменяет обработку ранее переданных запросов с теми же, что и в запросе CANCEL, значениями полей Call-ID, To, From и CSeq, но не влияет на те запросы, обработка которых уже завершена. Например, запрос CANCEL применяется тогда, когда прокси-сервер размножает запросы для поиска пользователя по нескольким направлениям и в одном из них его находит. Обработку запросов, разосланных во всех остальных направлениях, сервер отменяет при помощи сообщения CANCEL.
Запросом BYE оборудование вызываемого или вызывающего пользователя завершает соединение. Сторона, получившая запрос BYE, должна прекратить передачу речевой (мультимедийной) информации и подтвердить его выполнение ответом 200 ОК.
При помощи запроса типа REGISTER пользователь сообщает свое текущее местоположение. В этом сообщении содержатся следующие поля:
• Поле То содержит адресную информацию, которую надо сохранить или модифицировать на сервере;
• Поле From содержит адрес инициатора регистрации. Зарегистрировать пользователя может либо он сам, либо другое лицо, например, секретарь может зарегистрировать своего начальника;
• Поле Contact содержит новый адрес пользователя, по которому должны передаваться все дальнейшие запросы INVITE. Если в запросе REGISTER поле Contact отсутствует, то регистрация остается прежней. В случае отмены регистрации здесь помещается символ «*»;
• В поле Expires указывается время в секундах, в течение которого регистрация действительна. Если данное поле отсутствует, то по умолчанию назначается время — 1 час, после чего регистрация отменяется. Регистрацию можно также отменить, передав сообщение REGISTER с полем Expires, которому присвоено значение О, и с соответствующим полем Contact.
Запросом OPTIONS вызываемый пользователь запрашивает информацию о функциональных возможностях терминального оборудования вызываемого пользователя. В ответ на этот запрос оборудование вызываемого пользователя сообщает требуемые сведения. Применение запроса OPTIONS ограничено теми случаями, когда необходимо узнать о функциональных возможностях оборудования до установления соединения. Для установления соединения запрос этого типа не используется.
INVITE sip: watson@boston.bell-tel.com SIP/2.0 Via: SIP/2.0/UDP kton.bell-tel.com From: A. Bell To: T. Watson Call-ID: 3298420296@kton.bell-tel.com Cseq: 1 INVITE Content-Type: application/sdp Content-Length: . v=0 o=bell 53655765 2353687637 IN IР4 12&.3.4.5 C=IN IP4 kton.bell-tel.com m=audio 3456 RTP/AVP 0345
Рис. 7 Пример запроса INVITE
При передаче сообщений протокола SIP, упакованных в сигнальные сообщения протокола UDP, существует вероятность того, что размер запроса или ответа окажется больше максимально допустимого для данной сети, и произойдет фрагментация пакета. Чтобы избежать этого, используется сжатый формат имен основных заголовков, подобно тому, как это делается в протоколе SDP, Ниже приведен список таких заголовков (Таблица 2).
Геолокация

Геолокация позволяет определять географическое местоположение посетителей веб-сайта. И это не означает просто страну или даже город, в котором находится посетитель. Геолокация может сузить информацию о местоположении человека к городскому кварталу или даже определить его точные координаты, если он зашел на страницу со смартфона.
Все основные браузеры предоставляют хороший уровень поддержки геолокации:
| Браузер | IE | Firefox | Chrome | Safari | Opera | Safari iOS | Android |
| Минимальная версия | 9 | 3.5 | 5 | 5 | 10.6 | 3.2 | 2.1 |
Большинство новых возможностей JavaScript, которые мы рассмотрели ранее, были частью первоначальной спецификации HTML5, а потом были отделены, когда спецификацию передали в ведение организации W3C. Но геолокация никогда не была частью HTML5, а просто полностью сформировалась приблизительно в то же самое время. Но почти все рассматривают эту возможность вместе с возможностями HTML5, как часть одной большой волны будущих технологий.
Принцип работы геолокации
Возможность геолокации вызывает довольно много вопросов у людей, которых обычно нельзя назвать параноиками. Например, каким образом может какое-то программное обеспечение знать, что я не болею, как я сказал своему начальнику, а смотрю футбол в кафе? В нем что, есть какой-то скрытый код, который отслеживает все мои действия? Интересно, что это за фургон там на улице и те люди, которые прикидываются, будто бы они меняют колесо?
К счастью, возможность геолокации не из разряда страшилок о слежке. Это потому, что даже если браузер может вычислить ваше местонахождение, он не сообщит его веб-сайту без вашего явного на то разрешения:

Веб-страница хочет получить данные о местоположении посетителя. Посетитель может разрешить предоставлять эти данные или же не предоставлять их. Такое поведение браузера Chrome не является собственной инициативой его разработчиков, а официальным правилом стандарта геолокации, требующим, чтобы каждый веб-сайт, пытающийся получить данные о местоположении посетителя, получил для этого его разрешение.
Чтобы вычислить местоположение посетителя, браузер заручается помощью , например, для Chrome это сервис Google Location Services. Определение местоположения является задачей не из легких, и поставщик применяет несколько разных подходов для ее решения.
В случае настольного компьютера с фиксированным (т.е. небеспроводным) подключением, метод простой, но дает не очень точные результаты. Когда кто-то подключается к интернету, данные с его компьютера или локальной сети направляются (через кабель, выделенную линию или коммутируемое телефонное соединение) на мощное сетевое аппаратное устройство, которое, в свою очередь, направляет их в интернет. Это аппаратное устройство имеет однозначный IP-адрес, т.е. числовой код, который идентифицирует это устройство для других участников сети. Это устройство также имеет физический почтовый адрес.
Поставщик местоположения использует эти два типа информации для определения географического местоположения посетителя веб-страницы. Сначала вычисляется IP-адрес устройства, через которое осуществляется подключение, а затем определяется его физический адрес. Естественно, такой непрямой подход позволяет определить точное местоположение не пользователя, а только его интернет-провайдера.
Тем не менее часто даже такие неточные результаты являются полезными. Например, если вы используете средство геолокации, чтобы найти магазин, продающий пиццу на вынос, вы можете быстро перейти в район, который вас действительно интересует — вблизи вашего дома — даже если вы находитесь не совсем рядом.
Метод определения местоположения посредством IP-адреса является самым неточным способом геолокации. Если имеется лучший источник данных, поставщик местоположения будет использовать этот источник.
Если посетитель зашел на страницу с нетбука или смартфона по беспроводному подключению, поставщик местоположения использует ближайшие точки беспроводного доступа. В идеальном случае поставщик местоположения выбирает данные из огромной базы данных, чтобы определить точное местонахождение этих точек доступа, а потом использует полученную информацию, чтобы определить местоположение посетителя методом триангуляции.
А в случае подключения с мобильного телефона поставщик местоположения применяет подобный метод триангуляции, но использует сигналы от разных антенн мобильной связи. Эта быстрая, сравнительно эффективная процедура обычно позволяет определить местоположение посетителя с точностью до 1 км.
Наконец, многие мобильные устройства оснащены специальными аппаратными средствами , что позволяет определять местоположение таких устройств с точностью всего лишь до нескольких метров. Но этот метод геолокации имеет свой недостаток — он медленнее и потребляет больше энергии, что важно для устройств, работающих на аккумуляторах. Кроме этого, он не особенно хорошо работает в городах с большими и высокими зданиями по причине отражения сигнала от строений.
Конечно же, возможны и другие способы определения местоположения. Ничто не препятствует поставщику местоположения использовать для этого другие источники информации, такие как данные от RFID-устройств (Radio Frequency Identification — радиочастотная идентификация), данные от устройств Bluetooth, файлы cookies с информацией от картографического сайта наподобие Google Maps и т.п.
Из всего этого можно сделать следующий вывод: независимо от способа подключения к интернету, даже если посетитель веб-сайта сидит за настольным компьютером, возможность геолокации позволяет определить его местонахождение с большей или меньшей точностью. А если он выходит в интернет с мобильного телефона или с устройства, оснащенного аппаратным обеспечением GPS, его местоположение может быть определено с точностью скорее большей, чем меньшей.
В каких сферах применять геолокацию?
Ответив на большой вопрос, как работает геолокация, нам нужно разобраться еще с одним: какая нам от нее польза?
Здесь ключевым аспектом, который нужно понимать, является то, что функциональность геолокации позволяет определить приблизительные географические координаты посетителя страницы. И это все. Веб-разработчик должен объединить эту простую, но важную информацию с более подробными данными о местоположении посетителя. Эти данные можно получить от веб-сервера (обычно из огромной серверной базы данных) или какой-либо географической веб-службы (скажем, Google Maps).
Например, для большого предприятия, имеющего филиалы в нескольких точках, может потребоваться сравнить местоположение посетителя веб-страницы с местоположением своих разных филиалов, чтобы определить ближайший к посетителю.
А разработчик какого-либо средства социальных сетей может создать диаграмму расположения группы пользователей, показывающую им расстояние между ними. Или же данные о местонахождении можно использовать для предоставления посетителям веб-сайта какой-либо услуги, например нахождения ближайшего работающего круглосуточно магазина или кафе. В любом случае, информация о местоположении посетителя веб-страницы важна только в комбинации с другими географическими данными.
Хотя картографические и географические услуги, предоставляемые другими компаниями, довольно обширны, мы рассмотрим одну из них — Google Maps — чуть позже.
Определение координат посетителя
Возможность геолокации предельно проста. Она состоит из трех методов объекта : getCurrentPosition(), watchPosition() и clearWatch().
Объект navigator — это сравнительно незначительная часть JavaScript. Его несколько свойств предоставляют информацию о текущем браузере и его возможностях. Наиболее полезным из них является свойство navigator.userAgent, которое предоставляет информационную строку, содержащую подробные данные о браузере, его версии, а также операционной системы, в которой он выполняется.
Для получения местоположения посетителя вызывается метод getCurrentPosition(). Но следует понимать, что процесс определения местоположения занимает определенное время, в течение которого никакой уважающий себя браузер не остановит всю деятельность на странице, пока ожидает эти данные. Поэтому метод getCurrentPosition() исполняется асинхронно, т.е. после его запуска продолжается выполнение следующего за ним кода. Когда определение местоположения завершится, для обработки результатов активируется другой фрагмент кода.
Можно ожидать, что завершение определения местоположения сопровождается извещением, во многом подобном тому, как сообщается об окончании загрузки изображения или чтения текстового файла. Но язык JavaScript можно назвать каким угодно, но только не последовательным. И при вызове метода getCurrentPosition() ему передается .
Далее приведен пример вызова этого метода:
navigator.geolocation.getCurrentPosition( function(position) < alert('Последний раз вас засекали здесь: ' + position.coords.latitude + ", " + position.coords.longitude); >);
При исполнении этот код вызывает метод getCurrentPosition() и передает ему функцию. Когда браузер завершит процесс определения местоположения, он активирует эту функцию, которая выводит окно сообщения:

Не забывайте: использование геолокации допустимо только в том случае, если браузер поддерживает эту возможность и посетитель разрешит ее применение. Также разумно протестировать страницу, применяющую эту возможность, прежде чем размещать ее на веб-сервере для практического применения. В противном случае могут возникнуть проблемы (например, не будет функционировать обработка ошибок геолокации), и некоторые браузеры вообще не смогут определить местоположение пользователя.
Определение точности предоставленного местоположения
При успешном выполнении метода getCurrentPosition() код получает объект position, который имеет два свойства: timestamp (содержит время выполнения геолокации) и coords (содержит географические координаты).
Но свойство coords в свою очередь является подобъектом объекта position и кроме свойств latitude и longitude, определяющих географические координаты посетителя, имеет еще несколько других свойств, предоставляющих дополнительную информацию о местоположении. Это такие свойства, как altitude (высота над уровнем моря), heading (направление движения) и speed (скорость). Но на данный момент эти свойства не поддерживаются ни одним браузером.
Более интересным является свойство accuracy, которое указывает точность определенного местоположения в метрах. (Это означает, что по мере понижения точности данных местоположения значение свойства accuracy возрастает, что может несколько сбивать с толку.) Например, значение свойства accuracy, равное 2135 метрам, означает, что местоположение пользователя было определено в пределах этого расстояния.
Свойство accuracy полезно для определения качества результатов геолокации. Например, если значение свойства accuracy измеряется десятками километров, данные геолокации вряд ли имеют какую-либо практическую ценность:
if (position.coords.accuracy > 10000)
В таком случае, возможно, разумно известить пользователя о неопределенных данных его местоположения и/или предложить ему ввести правильную информацию самому.
Обработка ошибок
Функциональность геолокации не срабатывает, если посетитель отказывается дать разрешение на ее применение. В таком случае функция завершения в нашем примере не вызывается и страница не будет знать, то ли браузер все еще пытается определить местоположение или же произошла ошибка в исполнении кода.
Для решения этой проблемы при вызове метода getCurrentPosition() ему нужно передавать не одну функцию, а две. Первая функция, как мы уже рассмотрели, вызывается в случае успешного завершения процесса геолокации. В противном же случае вызывается вторая функция. Далее приведен пример с использованием этих двух функций:
// Сохраняем элемент в котором страница отображает результат var result; window.onload = function() < result = document.getElementById('result'); // Если функциональность геолокации доступна, // пытаемся определить координаты посетителя if (navigator.geolocation) < // Передаем две функции navigator.geolocation.getCurrentPosition( geolocationSuccess, geolocationFailure); // Выводим результат result.innerHTML = "Поиск начался"; >else < // Выводим результат result.innerHTML = "Ваш браузер не поддерживает геолокацию"; >> function geolocationSuccess(position) < result.innerHTML = "Последний раз вас засекали здесь: " + position.coords.latitude + ", " + position.coords.longitude; >function geolocationFailure(positionError)
При вызове функции ошибки геолокации браузер передает ей объект ошибки, который имеет два свойства: code (содержит числовой код, указывающий один из четырех типов ошибки) и message (содержит короткое извещение о проблеме). Обычно извещение предназначено для тестирования, а код ошибки используется кодом функции для определения, каким образом решать данную проблему.
Модифицированная функция ошибки, которая проверяет все возможные значения кода ошибки, выглядит так:
function geolocationFailure(positionError) < if(positionError == 1) < result.innerHTML = "Вы решили не предоставлять данные о своем местоположении, " + "но это не проблема. Мы больше не будем запрашивать их у вас."; >else if(positionError == 2) < result.innerHTML = "Проблемы с сетью или нельзя связаться со службой определения " + "местоположения по каким-либо другим причинам."; >else if(positionError == 3) < result.innerHTML = "He удалось определить местоположение " + "в течение установленного времени. "; >else < result.innerHTML = "Загадочная ошибка."; >>
Установка параметров геолокации
Итак, мы рассмотрели, как вызывать метод getCurrentPosition() с двумя параметрами: функцией для обработки успеха геолокации и функцией для обработки ошибки при попытке ее выполнения. Но этому методу можно передавать еще один параметр, коим является объект, устанавливающий определенные параметры геолокации.
В настоящее время можно установить три параметра, каждый из которых соответствует отдельному свойству объекта параметров геолокации. В следующем примере устанавливается один параметр enableHighAccuracy:
navigator.geolocation.getCurrentPosition( geolocationSuccess, geolocationFailure, );
А в этом примере устанавливаются все три параметра:
navigator.geolocation.getCurrentPosition( geolocationSuccess, geolocationFailure, );
В обоих этих примерах параметры геолокации устанавливаются посредством литералов объектов JavaScript.
Что же означают эти свойства? Свойство enableHighAccuracy задействует высокоточное определение местоположения, используя систему GPS (если устройство поддерживает эту возможность и посетитель разрешил ее использование). Не устанавливайте этот параметр, если только вам не требуется получить точные координаты, т.к. ее применение сильно повышает расход заряда аккумулятора устройства браузера. По умолчанию свойству enableHighAccuracy присваивается значение false.
Свойство timeout определяет период времени, в течение которого страница будет ожидать получения данных геолокации, прежде чем считать попытку неудачной.
Значения timeout устанавливается в миллисекундах, т.е. 10 000 мс означает максимальное ожидание 10 с. Отсчет начинается после того, как пользователь согласится предоставить данные геолокации. По умолчанию свойству timeout присваивается 0, означающий, что страница будет ожидать результаты геолокации бесконечно, не активируя ошибку тайм-аута.
Свойство maximumAge позволяет кэширование данных о местоположении. Например, значение maximumAge, равное 60 000 мс, разрешает пользоваться данными геолокации, полученными минуту назад. Это позволяет сэкономить время и вычислительные ресурсы, а также означает, что результаты геолокации будут менее точными, если посетитель перемещается. По умолчанию свойству maximumAge присваивается 0, означающий, что кэшированные результаты геолокации никогда не используются. Свойству можно также присвоить специальное значение infinity, в этом случае будут использоваться кэшированные данные геолокации любой давности.
Отображение карты
Определение географических координат местоположения посетителя веб-сайта — конечно же, интересный трюк. Но он быстро утрачивает свою привлекательность, если мы не найдем этой информации какое-либо полезное применение. За этим дело не станет, т.к. в интернете имеются целые россыпи данных географического местоположения. (Часто проблемой является преобразование этой информации в формат, полезный для веб-приложения.)
Кроме того, существует несколько картографических сервисов, неоспоримым лидером которых является Google Maps. Надежные оценки обращений к этой службе дают основания полагать, что Google Maps является наиболее используемым веб-приложением для любых целей.
Используя Google Maps, можно создать карту любого размера любой части мира. Можно управлять взаимодействием посетителей с этой картой, генерировать маршруты для проезда из одной точки в другую и, что наиболее полезно, накладывать на эту карту свою информацию.
Служба Google Maps предоставляет свои услуги на бесплатной основе (даже для коммерческих сайтов) при условии бесплатного доступа к сайту. (Для платных сайтов Google предоставляет платный картографический сервис.) В настоящее время Google Maps не вставляет свою рекламу на сайты, пользующиеся ее услугами, но лицензионные условия явно оговаривают право на это в будущем.
На рисунке ниже показана модифицированная версия страницы геолокации. Здесь полученные географические координаты пользователя служат для отображения его местоположения на карте:

Создание такой страницы не представляет никаких сложностей. Первым делом нам нужна ссылка на сценарии интерфейса API Google Maps. Эта ссылка размещается перед всеми блоками сценариев, которые используют функциональность картографии:
Геолокация .
Далее нам будет нужен элемент для размещения динамически создаваемой карты. Для удобства обращения к этому элементу присваиваем ему однозначный идентификатор:
Где вы живете?
Размер карты можно определить с помощью правила таблицы стилей:
#mapSurface
Теперь все готово к использованию функциональностей, предоставляемых Google Maps. Первым делом нужно создать поверхность карты. В этом примере карта создается при загрузке страницы, чтобы ее можно было использовать в функциях успеха или ошибки геолокации. (В конце концов, ошибка геолокации означает всего лишь то, что страница не может определить текущее местоположение пользователя. В таком случае все равно имеет смысл отображать карту, но только центрировать ее относительно точки с координатами по умолчанию.)
Далее приведен код, исполняемый при загрузке страницы. Сначала он создает карту, а потом пытается определить местоположение посетителя:
var results; var map; window.onload = function() < result = document.getElementById('result'); // Устанавливаем некоторые параметры карты. В данном примере // устанавливаются начальный уровень масштабирования и тип карты. // Информацию о других параметрах см. в документации по Google Maps. var myOptions = < zoom: 13, mapTypeId: google.maps.MapTypeId.ROADMAP >; // Создаем карту, используя установленные выше параметры map = new google.maps.Map(document.getElementById("mapSurface"), myOptions); // Пытаемся определить местоположение пользователя if (navigator.geolocation) < navigator.geolocation.getCurrentPosition( geolocationSuccess, geolocationFailure); result.innerHTML = "Поиск завершен"; >else < result.innerHTML = "Ваш браузер не поддерживает геолокацию"; goToDefaultLocation(); >>
Но созданная этим кодом карта еще не отображается на странице, т.к. еще не установлена географическая позиция. Для этого нужно создать специфическую глобальную точку, используя объект LatLng, которая потом помещается на карту посредством метода setCenter() карты. Далее приведен код, который выполняет все эти действия для координат посетителя:
function geolocationSuccess(position) < // Преобразуем местоположение в объект LatLng var location = new google.maps.LatLng(position.coords.latitude,position.coords.longitude); // Отображаем эту точку на карте map.setCenter(location); >
Этого кода будет достаточно для отображения карты наподобие показанной на рисунке выше. Но к этой базовой карте можно добавить разные примочки, например отображение других мест во врезке или же всплывающее информационное окно. Последнее создается с помощью объекта infoWindow. Далее приведен код для создания и отображения всплывающего информационного окна (как на рисунке выше):
function geolocationSuccess(position) < . // Создаем всплывающее информационное окно и устанавливаем // его текст и положение на карте. var infowindow = new google.maps.InfoWindow(); infowindow.setContent("Вы находитесь где-то в этом районе."); infowindow.setPosition(location); // Отображаем всплывающее окно infowindow.open(map); results.innerHTML = "Местоположение отмечено на карте."; >
Наконец, в случае ошибки геолокации или отсутствия ее поддержки в браузере посетителя можно выполнить, по сути, те же действия, но используя альтернативные предустановленные координаты вместо координат посетителя:
function geolocationFailure(positionError) < . goToDefaultLocation(); >function goToDefaultLocation() < // Примерные координаты центра Москвы var moscow = new google.maps.LatLng(55.753878,37.649275); map.setCenter(moscow); >
Отслеживание перемещений посетителя
Во всех рассмотренных нами до сих пор примерах мы использовали метод getCurrentPosition(), являющийся ключевой функциональностью геолокации. Но объект geolocation имеет еще два других метода, которые позволяют отслеживать перемещения посетителя и извещать страницу об этих перемещениях.
Первым из этих методов является метод watchPosition() который в значительной степени похож на метод getCurrentPosition(). Подобно методу getCurrentPosition(), метод watchPosition() принимает параметры: функцию успеха (единственный обязательный параметр) и функцию ошибки:
navigator.geolocation.watchPosition( geolocationSuccess, geolocationFailure);
Разница между этими двумя методами состоит в том, что метод watchPosition() может активировать функцию успеха неоднократно — по определению местоположения в первый раз, а потом каждый раз, когда он обнаруживает новое местоположение. Для настольных компьютеров, которые никогда не перемещаются, методы getCurrentPosition() и watchPosition() имеют абсолютно одинаковый эффект.
Но в отличие от метода getCurrentPosition() метод watchPosition() возвращает число. Это число можно сохранить и передать методу clearWatch(), чтобы прекратить отслеживать перемещения:
var watch = navigator.geolocation.watchPosition( geolocationSuccess, geolocationFailure); . navigator.geolocation.clearWatch(watch);
Этот шаг можно не выполнять и продолжать получать сообщения о перемещениях до тех пор, пока посетитель не покинет страницу.