Я пользуюсь ежевикой последние 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 со словами: « Эй, мой контактный адрес изменился, пожалуйста, используйте этот ».
Что происходит, когда вы используете и WIFI, и 3G? Ваш телефон выдает две команды IMAP IDLE?
Наконец, все ли мобильные телефоны (с тарифным планом) имеют уникальные IP-адреса? Если нет (скажем, телекомпания выполняет NAT), как мой сервер imap может инициировать связь с моим устройством?
Как видите, я немного растерялся и был бы признателен за дополнительную информацию.
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-адресов).
Нет - Единый маршрут по умолчанию
Что происходит, когда вы используете и WIFI, и 3G? Ваш телефон выдает две команды IMAP IDLE?
Нет, ваш телефон будет использовать только один из них для отправки / получения данных в Интернете (если у вас нет волшебного телефона с балансировкой нагрузки, я никогда его не видел, но эй, мы не все видели все!). Он выберет предпочтительный и установит маршрут по умолчанию в свою таблицу маршрутизации через этот носитель (обычно, конечно, Wi-Fi).
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-сервера есть strop, вы просто повторно аутентифицируетесь со своего нового IP-адреса и продолжите как обычно.