Как работает функция push-уведомлений по электронной почте в телефонах, отличных от Blackberry?
Я был пользователем Blackberry в течение последних 6 лет. Я убедил себя переключиться на устройство Android. Я уже начал некоторые разработки для Android, так что наличие реального устройства Android было бы бонусом.
Мой вопрос: как работает push-email на телефонах, не принадлежащих BlackBerry? Вот то, что я собрал с некоторыми дедуктивными рассуждениями, но, пожалуйста, поправьте меня: на BB есть Blackberry Internet Service или Blackberry Enterprise Service. Это серверы, которые контролирует RIM, и они объединяют ваши учетные записи электронной почты (будь то учетная запись gmail или учетная запись imap в ваших собственных коробках linux) для новых писем. Как только приходит новое письмо, они отправляют это письмо на ваш телефон. Они знают, как / где находится ваш телефон (его IP-адрес или другая уникальная характеристика), потому что каждый раз, когда вы подписываетесь на антенну GPRS/3G, ваш оператор мобильной связи уведомляет BB о том, что клиент X с телефоном Y может быть достигнут по адресу Z.
Что происходит в сценарии без BB? Как мой собственный linux-сервер, на котором запущен imap (скажем, dovecot), знает, как связаться с моим мобильным телефоном, чтобы "отправить" новые электронные письма?
Прочитав немного, я наткнулся на IMAP IDLE, который, насколько я понимаю, является командой IMAP, которую клиент (мой мобильный телефон в данном случае) использует, чтобы сказать серверу: "Эй, я клиент X, и мой адрес Да, так что, если приходит новое электронное письмо, нажмите здесь ".
Вот где я постепенно теряю понимание: означает ли это, что каждый раз, когда я переключаюсь с одной мобильной антенны на другую (скажем, я еду по дороге), мой телефон будет отправлять новую команду IMAP IDLE на мой сервер dovecot, говоря: Эй, мой контактный адрес изменился, пожалуйста, используйте этот ".
Что происходит, когда вы используете Wi-Fi и 3G? Ваш телефон выдает две команды IMAP IDLE?
Наконец, все ли мобильные телефоны (с тарифным планом) имеют уникальные IP-адреса? Если нет (скажем, телефонный оператор NAT), как мой сервер imap может инициировать связь с моим устройством?
Как видите, я немного растерялся и был бы признателен за дополнительную информацию.
1 ответ
Does this mean that each time I switch from one mobile antenna to the next
(say i'm driving down the road) my phone will send a new IMAP IDLE command
to my dovecot server saying "Hey, my contact address has changed,
please use this one".
НЕТ - IP-соединение
Ваш телефон обменивается данными с мачтами сотовой связи, используя стек протоколов, отличный от стека TCP/IP, который вы используете для подключения к Интернету "данных" (например, стека s7). Когда вы перемещаетесь от мачты к мачте, стек IP не знает об изменениях. Ваш телефон все еще использует один и тот же IP-адрес (обычно) все время (если вы не проделали долгий путь, а не просто по дороге к следующей мачте, куда ваш оператор выделил отдельный географический блок IP-адресов).
НЕТ - Единственный маршрут по умолчанию
Что происходит, когда вы используете Wi-Fi и 3G? Ваш телефон выдает две команды IMAP IDLE?
Нет, ваш телефон будет использовать только один из них для отправки / получения данных в Интернете (если у вас нет волшебного телефона с балансировкой нагрузки, я никогда его не видел, но, эй, мы не все могли видеть все!). Он выберет предпочтительный и установит маршрут по умолчанию в свою таблицу маршрутизации через этот носитель (как правило, wifi, конечно).
Finally, do all mobile phones (with a data plan) have unique IP addresses?
НЕТ - там дефицита "я знаю")
Это действительно очень редко, на самом деле я никогда не видел, чтобы он только слышал об этом. Так что я до сих пор не верю. Предоставление каждому мобильному пользователю общедоступного IP-адреса было бы слишком расточительным, равно как и предоставление каждому компьютеру в вашем доме общедоступного IP-адреса. Скорее всего, у вас дома столько же интернет-телефонов, сколько компьютеров. С одной точкой доступа Wi-Fi они могут совместно использовать 1 IP. Нетрудно для "типичного" домашнего использования.
If not (say the telco NATs you) how can my imap server initiate a
communication to my device?
Один порт / UPNP - вам не нужна "полная" видимость IP
Чтобы ваш телефон мог обмениваться данными с вашим сервером (через IMAP), вы должны подключиться к TCP-порту 143 (или, возможно, 993, если хотите) со случайного номера исходящего порта выше 1024 на вашем мобильном телефоне. Устройство NAT на носителе может создать запись таблицы состояний NAT в своем устройстве GCN, сопоставляя частный IP-адрес вашего телефона и порт источника с общедоступным IP-адресом и номером порта вашего сервера. Это объяснит NAT дальше. По сути, вам нужно подключиться только к одному порту, что довольно просто для NAT. Другой вариант, такой как тот, который часто используется в домашних маршрутизаторах, является переадресацией UPnP, но он вряд ли используется на уровне несущей.
Завершение - Изменения IP
Таким образом, когда вы постоянно находитесь в сети 3G, когда вы перемещаетесь от сотовой к сотовой сети или от мачты к мачте, ваш частный IP-адрес между вами и оператором связи может измениться, но ваш общедоступный IP-адрес, общающийся с вашим сервером IMAP, должен оставаться прежним, поэтому соединение IMAP должно оставаться активный. Если вы измените общедоступное сопоставление IP-адресов, самое худшее, что может произойти, это то, что сервер IMAP не распознает приглашение IDLE для поддержания соединения в активном состоянии, поскольку он не распознает это как уже аутентифицированный сеанс, поэтому при условии использования вашего имени пользователя и пароля IMAP сохраняются на вашем телефоне, он должен просто повторно пройти аутентификацию с вашего нового общедоступного IP-адреса (зависит от телефона и почтового приложения, но такое поведение я нахожу 9/10 раз).
То же самое должно быть верно, если вы подключаетесь к беспроводной точке доступа. Если у IMAP-сервера есть строп, вы просто повторно аутентифицируетесь со своего нового IP и продолжаете в обычном режиме.