По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Полученную от маршрутизаторов «соседей» и других устройств в рамках сети роутер хранит в нескольких таблицах. Существует 3 типа таблиц: Таблица соседей: Хранит информацию от устройств подключенных напрямую. Вся собранная от соседей информация добавляется в таблицу соседей и включает наименования интерфейсов и соответствующих адресов. По умолчанию, “Hello” пакеты отправляются с интерфейсов каждые 5 секунд, чтобы быть уверенным, что сосед работает. Каждый EIGRP маршрутизатор хранит свой собственный экземпляр такой таблицы. Таким образом: Каждый маршрутизатор имеет четкое представление о напрямую подключенных устройствах. Каждый роутер располагает топологией сети в рамках своего ближайшего окружения. Топологическая таблица: Представляет собой набор из таблиц других EIGRP устройств полученных от соседей. Данная таблица представляет из себя список сетей назначения и соответствующих метрик. Выглядит данная таблица вот так: При условии доступность устройств Successor и Feasible Successor они так же присутствуют в таблице для каждой из сетей. Каждый из пунктов маркируется буков A или P, что означает активное или пассивное состояние. Пассивное состояние говорит о том, что роутер знает маршрут к пункту назначения, в то время как активный означает, что топология изменилась и маршрутизатор обновляет данные для данного маршрута. Подчеркнем следующие позиции: Для каждой из сетей назначения маршрутизатор хранит маршрут через Feasible Successor, т.е маршрут, который считается вторым по приоритету после маршрута через Successor. Таблица маршрутизации: Данная таблица представляет собой карту из всех известных маршрутов. Данная таблица строится на основании данных, полученных из топологической таблицы. Можно сказать, что указанные выше таблицы используются для количественной характеристики маршрутов, а таблица маршрутизации дает нам качественную характеристику. Что важно: Только один маршрут через Successor попадает в таблицу маршрутизации и используется для отправки пакетов (в случае доступности). Если маршрут через Successor оказывается недоступным, в таблицу маршрутизации из топологической таблицы копируется маршрут через Feasible Successor и используется в качестве альтернативного. Что такое Successor? Существует два главных типа устройств в сетях EIGRP. Оба устройства гарантируют отсутствие петель в сети: Successor: Устройство, которое обеспечивает самую короткую дистанцию маршрута на пути пакета в сеть назначения. Другими словами, это устройство обеспечивает наилучший маршрут в сеть назначения. Feasible Successor: Это устройство обеспечивает второй по приоритету маршрут в сеть назначения после маршрута Successor – устройства. Типы пакетов EIGRP EIGRP использует 5 типов пакетов: Hello/ACKs пакеты: Это мультикаст пакеты, используемые для обнаружения и отслеживания состояния соседских устройств в сети. Любой Hello пакет должен получить подтверждение, или другими словами ответ – то есть ACK сообщение. Хочется отметить, что ACK пакет является юникастовым. Updates: Надежные юникастовые пакеты, который содержат обновления маршрутной информации для построения/перестроения таблицы маршрутизации. Queries: Мультикаст пакеты, которые отправляет устройство при переходе в активное состояние. Если пакет отправляется в качестве ответа, то он будет юникастовым. Replies: Это надежные юникаст пакеты отправленные в ответ на queries пакеты. Данные пакет говорит получателю о том, что устройство Feasible Successor доступно и не должно переходить в активный режим. Requests: Ненадежные мультикаст или юникаст пакеты, используемые для сбора информации от соседних устройств. В следующей статье мы расскажем о сходимости EIGRP сетей.
img
В этой статье посмотрим как можно отправлять электронные письма при помощи Python. Есть и более простые способы это сделать, но мне больше подошел именно следующий вариант. Итак, вот как это выглядит: у вас есть имена и адреса электронной почты некоторой группы контактов. И вы хотите отправить каждому из них письмо, добавив в начале сообщения «Уважаемый [имя]». Для простоты вы можете хранить всю контактную информацию просто в файле, а не в базе данных. Также вы можете сохранить в файл шаблон сообщения, которое вы хотите отправить. Модуль smtplib в Python – это практически все, что вам понадобиться для отправки простых электронных писем без заполнения темы письма или какой-либо еще дополнительной информации. Но, конечно, для настоящих писем вам необходимо заполнить строку темы письма и другую информацию, и, возможно, даже прикрепить изображения или какие-то другие вложения. Вот тут и приходит на помощь пакет email в Python. Имейте в виду, что нельзя отправить сообщение через электронную почту, используя только этот пакет. Вам необходимо совместить email и smtplib. Обязательно ознакомьтесь с подробной официальной документацией для каждого из этих пакетов. Вот четыре основных шага для отправки электронных писем с помощью Python: Настройте SMTP-сервер и войдите в свою учетную запись. Создайте объект сообщения MIMEMultipart и загрузите его с соответствующими заголовками для полей From (От), To (Кому) и Subject (Тема). Добавьте тело сообщения. Отправьте сообщение с помощью объекта SMTP-сервера. А теперь давайте рассмотрим весь процесс. Допустим, что у вас есть файл контактов mycontacts.txt, который выглядит вот так: user@computer ~ $ cat mycontacts.txt john johndoe@example.com katie katie2016@example.com Каждая строка соответствует одному контакту. В каждой строке пишется имя, а за ним следует адрес электронной почты. У меня все сохранено в нижнем регистре. Я оставлю преобразования любых полей или некоторых начальных букв в верхний регистр логике программирования, если это будет необходимо. В Python это все довольно просто. Далее у нас есть файл с шаблоном сообщения message.txt. user@computer ~ $ cat message.txt Dear ${PERSON_NAME}, This is a test message. Have a great weekend! Yours Truly Обратили внимание на ${PERSON_NAME}? Это шаблонная строка в Python. Шаблонные строки можно легко заменить другими строками; в данном примере ${PERSON_NAME} будет заменено настоящим именем человека (вы скоро это увидите). А теперь давайте перейдем к коду Python. Для начала нам необходимо прочитать контакты из файла mycontacts.txt. Мы, кстати, можем обобщить это в отдельную функцию. # Function to read the contacts from a given contact file and return a # list of names and email addresses def get_contacts(filename): names = [] emails = [] with open(filename, mode='r', encoding='utf-8') as contacts_file: for a_contact in contacts_file: names.append(a_contact.split()[0]) emails.append(a_contact.split()[1]) return names, emails Функция get_contacts() в качестве аргумента принимает имя файла. Она откроет этот файл, прочитает каждую строку (то есть каждый контакт), разделит их на имя и адрес электронной почты, а затем добавит их в два отдельных списка. И, наконец, в качестве результата работы функции возвращаются эти два списка. Также нам нужна функция для того, чтобы прочитать шаблон сообщения (такой как message.txt) и вернуть объект типа Template, созданный из его содержимого. from string import Template def read_template(filename): with open(filename, 'r', encoding='utf-8') as template_file: template_file_content = template_file.read() return Template(template_file_content) Как и предыдущая функция, в качестве аргумента она принимает имя файла. Для того, чтобы отправить письмо, вам необходимо использовать протокол SMTP (Simple Mail Transfer Protocol – протокол простого обмена электронной почтой). Как уже упоминалось ранее, у Python есть необходимые для этого библиотеки. # import the smtplib module. It should be included in Python by default import smtplib # set up the SMTP server s = smtplib.SMTP(host='your_host_address_here', port=your_port_here) s.starttls() s.login(MY_ADDRESS, PASSWORD) В приведенном выше фрагменте кода вы импортируете smtplib, а затем создаете экземпляр SMTP, который формирует SMTP-соединение. В качестве параметра он принимает адрес хоста и номер порта, оба эти параметра полностью зависят от настроек SMTP вашего поставщика услуг электронной почты. Например, в случае Outlook строка под номером 4 будет выглядеть вот так: s = smtplib.SMTP(host='smtp-mail.outlook.com', port=587) Для того, чтобы все работало, вам необходимо использовать адрес хоста и номер порта конкретно вашего поставщика услуг электронной почты. MY_ADDRESS и PASSWORD – это две переменные, которые содержат полный адрес электронной почты и пароль от учетной записи, которую вы собираетесь использовать. А теперь самое время получить контактную информацию и шаблон сообщения, используя функции, которые мы определили ранее. names, emails = get_contacts('mycontacts.txt') # read contacts message_template = read_template('message.txt') А теперь давайте отправим отдельное письмо каждому из этих контактов. # import necessary packages from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText # For each contact, send the email: for name, email in zip(names, emails): msg = MIMEMultipart() # create a message # add in the actual person name to the message template message = message_template.substitute(PERSON_NAME=name.title()) # setup the parameters of the message msg['From']=MY_ADDRESS msg['To']=email msg['Subject']="This is TEST" # add in the message body msg.attach(MIMEText(message, 'plain')) # send the message via the server set up earlier. s.send_message(msg) del msg Для каждого name (имя) и email (адрес электронной почты) (из файла с контактами) вы создаете объект MIMEMultipart, настраиваете заголовки типов содержимого From (от), To (кому), Subject (тема) как словарь ключевых слов, а затем прикрепляете тело сообщения к объекту MIMEMultipart в виде обычного текста. Возможно, вам захочется прочитать документацию, чтобы узнать больше о других типах MIME, с которыми вы также можете поэкспериментировать. Также обратите внимание, что в строке 10 выше я заменяю ${PERSON_NAME} фактическим именем, которое было извлечено из файла с контактами с помощью механизма шаблонизации в Python. В данном конкретном примере я каждый раз удаляю объект MIMEMultipart и создаю его заново при каждой итерации цикла. Как только вы проделаете все это, то сможете отправить сообщение, используя простую удобную функцию send_message() объекта SMTP, который вы создали ранее. А вот и полный код: import smtplib from string import Template from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText MY_ADDRESS = 'my_address@example.comm' PASSWORD = 'mypassword' def get_contacts(filename): """ Return two lists names, emails containing names and email addresses read from a file specified by filename. """ names = [] emails = [] with open(filename, mode='r', encoding='utf-8') as contacts_file: for a_contact in contacts_file: names.append(a_contact.split()[0]) emails.append(a_contact.split()[1]) return names, emails def read_template(filename): """ Returns a Template object comprising the contents of the file specified by filename. """ with open(filename, 'r', encoding='utf-8') as template_file: template_file_content = template_file.read() return Template(template_file_content) def main(): names, emails = get_contacts('mycontacts.txt') # read contacts message_template = read_template('message.txt') # set up the SMTP server s = smtplib.SMTP(host='your_host_address_here', port=your_port_here) s.starttls() s.login(MY_ADDRESS, PASSWORD) # For each contact, send the email: for name, email in zip(names, emails): msg = MIMEMultipart() # create a message # add in the actual person name to the message template message = message_template.substitute(PERSON_NAME=name.title()) # Prints out the message body for our sake print(message) # setup the parameters of the message msg['From']=MY_ADDRESS msg['To']=email msg['Subject']="This is TEST" # add in the message body msg.attach(MIMEText(message, 'plain')) # send the message via the server set up earlier. s.send_message(msg) del msg # Terminate the SMTP session and close the connection s.quit() if __name__ == '__main__': main()
img
Wi-Fi это технология, которая использует радиоволны для отправки и получения сигналов от находящихся поблизости устройств, чтобы обеспечить им доступ в этот ваш Интернет. Wi-Fi это сокращение от Wireless Fidelity, и переводится как... беспроводная точность? Эм. На самом деле слово Wi-Fi - это бренд, который лепят на каждую железку, производители которой доказали, что она умеет конвертировать радиосигнал в цифровой и обратно, а потом отправлять его в сеть. Техническое название этой технологи звучит так - IEEE 802.11, где цифры после букв обозначают разные поколения технологии. Радиочастоты сигналов Wi-Fi значительно отличаются от тех, которые используются в автомобильных радиоприемниках, сотовых телефонах или рациях, поскольку частоты Wi-Fi лежат в диапазоне гигагерц, а такие волны далеко не распространяются. Именно поэтому, чем ближе ты находишься к своему Wi-Fi роутеру тем лучше он раздаёт сигнал. В современных роутерах могут использоваться две частоты радиоволн: 2,4 и 5 гигагерц. Что это значит? Представь, что ты сидишь на пляже и наблюдаешь, как волны разбиваются о берег. Время между каждым ударом волны - частота волн. Один герц - это частота одной волны в секунду, а один гигагерц равен одному миллиарду волн в секунду. Расслабиться на таком пляже явно не получится Короче, чем выше частота, тем больше объем данных, передаваемых в секунду, и тем выше скорость. Зачем нам 2 частоты? Прикол в том, что на частоте 2,4 гигагерца работает ещё много всяких штук, например, некоторые микроволновки, Bluetooth устройства и беспроводные телефоны. Работая одновременно они начинают наводить друг на друга помехи, создавая интерференцию сигнала. На частоте 5 гигагерц эфир посвободнее и данных за единицу времени можно передать больше, но есть другая проблемка. Чем выше частота, тем сложнее сигналу преодолеть препятствия типа стен и потолков в здании. Так что этот раунд за 2,4 ГГц. Ещё важно, что частоты Wi-Fi разделены на несколько каналов, чтобы предотвратить интерференцию и помехи. Помнишь мы сказали, что радиочастоты Wi-Fi это 2,4 гигагерц? Это не совсем так. На самом деле это диапазон от 2,4 до примерно 2,5 Гигагерц разделенный на 13 частей, которые называются каналами. Например, мы можем настроить роутер так, чтобы он занял 1 канал, в этом случае он будет вещать в диапазоне от 2401 до 2423 мегагерц. Но что если роутеры твоих соседей тоже займут первый канал? Придется стучать по батарее чтобы он перенастраивал роутер! Как ты можешь догадаться, роутеры с диапазоном 5 Гигагерц лишены этого недостатка, так как там намного больше каналов. Так что, вот тебе хак: если мучаешься со скоростью своего соединения, когда сидишь на Wi-Fi - попробуй перелезть на другой канал. Когда дело доходит до обмена данными по этим каналам, тут-то и происходит волшебство. Изначально точка доступа Wi-Fi вещает на всю округу сообщения о том что я вот такая точка, работаю на такой частоте, вот мое название, которое по умному называется SSID (Service Set Identifier), ко мне можно подключиться, а мы на своем устройстве принимаем его и делаем запрос в сторону этой точки, говоря что да, хочу к тебе подключиться, вот пароль. Когда ты выходишь в Интернет на своем устройстве, оно преобразует всю информацию в двоичный код, язык компьютеров, нули и единицы. Эти 1 и 0 преобразуются в частоты волн микросхемой Wi-Fi, встроенной в твое устройство. Частоты проходят по радиоканалам, упомянутым ранее, и принимаются маршрутизатором Wi-Fi. Затем маршрутизатор преобразует частоты обратно в двоичный код и переводит код в запрошенный тобой трафик, а маршрутизатор получает эти данные через проводной кабель от твоего провайдера. Все это происходит невероятно быстро. Большинство роутеров работают со скоростью 54 Мбит/с, а это означает, что за одну секунду принимается или отправляется 54 миллиона единиц и нулей. Окей, но если мои данные летают по радиоволнам, то любой сможет их перехватить и прочитать? Перехватить - да, прочитать - нет. Всё шифруется. В самом начале в Wi-Fi были проблемы с безопасностью, из-за того что для защиты данных применялся очень слабый алгоритм шифрования RC4. Проблема, как и всегда в таких случаях, заключалась в длине ключа. Но с развитием технологии, безопасности уделили должное внимание и теперь во всех современных роутерах используется алгоритм шифрования AES с длиной ключа 256 бит. Ну и самое волнующее - опасен ли Wi-Fi? Смогу ли я пускать паутину, если посижу на роутере? Ну, нет. Давайте разберемся: у вас дома множество излучающих устройств. Та же микроволновка выделяет в тысячи раз более мощное излучение. Если обратиться к исследованиям, то постоянное воздействие сильного СВЧ-излучения на человеческий организм не проходит для него бесследно и действительно чревато проблемами со здоровьем. Но добавим, что Wi-Fi-устройства работают в неионизирующем диапазоне излучения, не оказывающем такого вредного воздействия, как ионизирующее излучение, которое способно образовывать ионы в веществе, на которое воздействует. Но, надо признать, Wi-Fi излучение может влиять на живые организмы за счет тепловых и нетепловых воздействий. Но спешим вас успокоить: специалисты утверждают, что из всех бытовых устройств, использующих радиочастоты, роутер - самое безопасное. Однако, лучше всего располагать его подальше от мест постоянного пребывания: повесьте его в коридор, или на чердак, например.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59