Python Advanced Урок # 20 Работа с сетью в Python: Socket и HTTP

preview_player
Показать описание
Работа с сетью в Python: Socket и HTTP No урока: 1 Курс: Python Advanced
Средства обучения: Python3.6, PyCharm
Обзор, цель и назначение урока
Научить студентов писать сетевые приложения на языке Python. Дать базовые знания сетевой модели OSI и её уровней, а также научить создавать собственные socket-сервера/клиенты. Изучить протокол HTTP. Дать базовые знания данного протокола и его особенностей, а также научить обрабатывать HTTP сообщения с использованием языка Python.
Изучив материал данного занятия, учащийся сможет:
 Понимать основы сетевой модели OSI.
 Разрабатывать UDP/TCP socket-сервера.
 Разрабатывать UDP/TCP socket-клиенты, как для собственных, так и для сторонних socket-
серверов.
 Понимать протокол HTTP.
 Понимать типы запросов, их особенности и ограничения.
 Формировать запросы к HTTP серверам и обрабатывать ответы от них.
 Использовать стандартную библиотеку urllib.
 Использовать стороннюю библиотеку requests.
 Создавать программы на языке Python, позволяющие автоматизировать обработку
ответов.
Содержание урока
1. Основы сетевой модели OSI и её уровней.
2. Понятие адресации (IP и Port) и что такое socket.
3. Описание протокола UDP.
4. Создание UDP клиента/сервера.
5. Создание TCP клиента/сервера и сравнение с UDP.
6. Блокирующие и неблокирующие режимы работы socket.
7. ООП подход при создании socket-серверов используя библиотеку socketserver.
8. Создание простого socket-сервера средствами фреймворка Twisted.
9. Что такое протокол HTTP, как его использовать и основные типы запросов.
10. Понятие заголовков и статус кодов.
11. Типы HTTP запросов и их особенности.
12. Создание socket для демонстрации заголовков и ответов сервера.
13. Стандартная библиотека языка Python- urllib.
14. Библиотека requests.
15. Конфигурация библиотеки urllib: размер, pull-а соединений и режимы работы.
Резюме
 Модель OSI подробно описывает работу сети. Каждый уровень данной модели решает свою конкретную задачу, будь то логическая адресация, шифрование или передача данных по оптоволокну. Каждый уровень является частью единой модели.
 Полный адрес компонента сети состоит из IP и порта и записывается следующим образом 127.0.0.1:80.

 UDP протокол является ненадёжным протоколом передачи данных. Пакеты, отправленные с использованием данного протокола, могут быть потеряны или же нарушен их порядок при получении. Нет никакой гарантии 100%-ной доставки пакетов.
 TCP протокол является надёжным протоколом передачи данных. Данный протокол осуществляет так называемое рукопожатие и перед передачей/получением данных должен установить соединение с конечным узлом сети.
 В стандартной библиотеке языка Python существует библиотека socket, которая позволяет создавать socket-сервера и socket-клиенты.
 Для создания socket-серверов наиболее удобным подходом является ООП. Это необязательное требование, однако ООП подход предоставляет более удобный интерфейс для обработки запросов и новых подключений. Мы можем использовать стандартную библиотеку socketserver для создания сокет-серверов в ООП стиле.
 Используйте готовые библиотеки, проверенные временем. Такие библиотеки позволят вам создавать стабильные и надежные сокет-сервера/клиенты, написав всего лишь несколько строк кода. В то же время данные библиотеки предоставляют возможность удобной конфигурации ваших сокетов: порты, блокировки, таймауты и т.п.
 HTTP протокол является текстовым протоколом с определенной структурой. Данный протокол- это надстройка над socket, ведь по своей сути мы открываем socket-соединение и обмениваемся данными, закрывая его по завершению.
 HTTP протокол реализует 9 различных методов: OPTIONS, GET, HEAD, POST, PUT, PATCH, DELETE, TRACE, CONNECT. Каждый из методов предназначен для конкретной задачи, например, GET- для получения данных, а PUT для обновления данных. Каждый метод имеет свои особенности и отличия.
 Существует важное отличие POST метода от GET метода- размер передаваемых данных GET методом ограничен и составляет 8 килобайт. Объем данных, передаваемый методом POST исчисляется мегабайтами и как плюс, всегда можно увеличить это значение.
 Данные, передаваемые методом GET, передаются в URL строке браузера. Данные передаваемые методом POST, передаются в теле запроса (стандартный потов ввода).
 Чтобы понять, успешно ли завершился наш запрос, мы можем использовать статус коды.
200-ые статусы означают успешность запросов. Ошибки сервера- 500-ые. Ошибки данных
передаваемых клиентами- 400-ые.
 Язык Python содержит в своей стандартной библиотеке инструменты для работы с HTTP-
библиотека urllib.
Закрепление материала
 Что такое сетевая модель OSI и из чего она состоит?
 Почему в ряде задач лучше использовать протокол TCP вместо UDP?
 В чем отличие протоколов TCP и UDP?
 Какой тип сокетов можно использовать, если вы хотите наладить взаимодействие между
двумя программами в рамках одного сервера?
 За что отвечает константа socket.AF_INET?
 За что отвечает константа socket.AF_UNIX?
 Что такое HTTP протокол и из чего он состоит?

Рекомендации по теме
Комментарии
Автор

Отличное объяснение. Всё подробно и понятно. Спасибо !

leslivolf