Опубликовано

Встречайте: Сетевое программирование на Python

Сетевое программирование на Python

Книга посвящена разработке серверных приложений и клиент-серверных архитектур на Python. Рассказано о поддержке SSL в Python 3, представлены примеры работы с протоколами TCP, UDP, HTTP, SMTP, IMAP, FTP, RPC, взаимодействия с сервисами DNS. Освещена работа с электронной почтой в приложениях. Описаны цели протокола TLS и методы их достижения на Python. Подробно описаны возможности модуля asyncio, входящего в состав Python 3.4, даны рекомендации по разработке сетевых приложений с использованием веб-фреймворков Flask и Django.

Для программистов

ПОДРОБНОЕ РУКОВОДСТВО ПО СЕТЕВОМУ ПРОГРАММИРОВАНИЮ НА PYTHON

Книга рассказывает о разработке на языке Python клиент-серверных проектов, взаимодействующих с сетью и веб-приложениями. Всесторонне рассматривается поддержка SSL, показаны примеры работы с протоколами TCP, UDP, HTTP, SMTP, IMAP, FTP, RPC и взаимодействия с сервисами DNS. Рассказано об использовании входящего в состав Python 3.4 модуля asyncio, о сетевых возможностях веб-фреймворков Flask и Django.

В книге описаны
ключевые возможности SSL в Python 3,
цели протокола TLS и методы их достижения на Python,
архитектура серверов и создание серверных приложений,
работа с электронной почтой в приложениях,
применение Flask и Django для создания сетевых веб-приложений.

Книгу “Сетевое программирование на Python” можно купить со скидкой в интернет-магазине издательства “БХВ“.

Об авторе. 14

О рецензенте. 15

Благодарности. 16

Предисловие. 17

Пакет кода. 19

ГЛАВА 1. Введение в сетевое взаимодействие между клиентом и сервером.. 21

Содержание главы. 21

Цель  22

Основы: стеки и библиотеки. 22

Уровни приложения. 25

Что такое протокол. 26

Сетевое взаимодействие. 28

Слой за слоем. 30

Кодирование и декодирование. 32

Протокол IP. 33

IP-адреса. 34

Маршрутизация. 35

Фрагментация пакетов. 37

Подробно об IP. 38

Резюме. 38

ГЛАВА 2. Протокол UDP. 41

Содержание главы. 42

Цель  42

Множество сервисов в одной системе. 42

Сокет — точка соединения. 44

Клиенты, принимающие любые пакеты. 48

Отсрочка, блокировка и время ожидания. 50

UDP-сокеты. 54

Идентификаторы запросов. 56

От привязки до интерфейсов. 57

Фрагментация UDP. 59

Параметры сокетов. 61

Широковещание. 62

Сценарии применения UDP. 64

Резюме. 64

ГЛАВА 3. Протокол TCP. 67

Содержание главы. 67

Цель  68

Как работает TCP. 68

Когда использовать TCP. 69

Сокеты TCP. 70

TCP-клиент и TCP-сервер. 71

Одно взаимодействие — один сокет. 75

Адрес. 77

От привязки до интерфейсов. 78

Взаимоблокировка. 79

Полуоткрытые соединения, закрытые соединения. 84

Потоки TCP для передачи файлов. 86

Резюме. 86

ГЛАВА 4. DNS и имена сокетов. 89

Содержание главы. 89

Цель  89

Имена сокетов и хостов. 90

Пять координат сокетов. 91

IPv6  92

Современное разрешение адресов. 93

Привязка сервера к порту с помощью getaddrinfo() 94

Метод getaddrinfo() для привязки к сервису. 95

Получение канонического имени хоста с помощью getaddrinfo() 96

Другие флаги getaddrinfo() 98

Примитивные процедуры службы имен. 99

Метод getsockaddr() 100

Протокол DNS. 101

Почему не стоит использовать DNS напрямую.. 104

Python для DNS-запросов. 105

Разрешение почтовых доменов. 106

Резюме. 109

ГЛАВА 5. Данные и ошибки в Интернете. 111

Содержание главы. 111

Цель  111

Строки и байты. 111

Строки символов. 113

Сетевой порядок байтов и двоичные числа. 116

Кадрирование. 119

Pickle и форматы с разделителями. 125

JSON и XML. 126

Сжатие. 127

Исключения в сети. 128

Специфические исключения. 130

Исключения в сети: обнаружение и сообщение об ошибках. 131

Резюме. 133

ГЛАВА 6. Протокол SSL/TLS. 135

Содержание главы. 135

Цель  136

От чего не защищает TLS. 136

Что худшее может случиться?. 137

Создание сертификатов. 139

TLS Offloading. 141

Контексты по умолчанию в Python 3.4. 142

Подходы к обертке сокетов. 146

Выбор шифров вручную и Perfect Forward Security. 147

Поддержка протокола TLS. 149

Дальнейшее изучение. 151

Резюме. 157

ГЛАВА 7. Архитектура сервера. 159

Содержание главы. 159

Цель  160

Несколько слов о развертывании. 160

Базовый протокол. 162

Однопоточный сервер. 166

Многопроцессорный и многопоточный серверы. 169

Фреймворк SocketServer из прошлого. 171

Асинхронные серверы. 172

Фреймворк asyncio с обратными вызовами. 177

Фреймворк asyncio с сопрограммами. 179

Устаревший модуль asyncore. 181

Комбинированный подход. 182

Под влиянием inetd. 183

Резюме. 185

ГЛАВА 8. Очереди сообщений и кеши. 187

Содержание главы. 187

Цель  188

Использование Memcached (кеширование в памяти) 188

Хеширование и сегментирование. 191

Очереди сообщений. 194

Очереди сообщений в Python. 196

Резюме. 201

ГЛАВА 9. HTTP-клиенты.. 203

Содержание главы. 203

Цель  204

Библиотеки клиентов Python. 204

Кадрирование, шифрование и порты. 206

Методы. 208

Хосты и пути. 209

Коды состояний. 210

Валидация и кеширование. 213

Кодирование содержимого. 216

Согласование содержимого. 216

Тип содержимого. 218

Аутентификация по HTTP. 219

Файлы cookie. 221

Поддержание соединения и httplib. 222

Резюме. 223

ГЛАВА 10. Серверы для работы с HTTP. 225

Содержание главы. 225

Цель  226

Стандарт WSGI 226

Серверные фреймворки для асинхронной обработки. 228

Прямые и обратные прокси. 229

Четыре архитектурных стиля. 230

Python на Apache. 232

HTTP-серверы на Python. 232

Преимущество обратных прокси. 233

Платформа как услуга. 234

REST и паттерны GET и POST. 236

WSGI без фреймворка. 238

Резюме. 242

ГЛАВА 11. Всемирная паутина. 245

Содержание главы. 245

Цель  246

URL и гипермедиа. 246

Создание и парсинг URL. 247

Относительные URL. 250

Язык гипертекстовой разметки HTML. 251

Чтение и запись с использованием базы данных. 253

Ужасное веб-приложение на Flask. 255

Методы и формы HTTP. 261

Когда формы используют неподходящие методы. 263

Опасные и безопасные сookie. 264

Непостоянный межсайтовый скриптинг. 266

Постоянный межсайтовый скриптинг. 268

Подделка межсайтовых запросов. 269

Улучшенная программа. 270

Приложение для оплаты на Django. 273

Выбор фреймворка для веб-сайта. 277

Веб-сокеты. 279

Веб-скрейпинг. 279

Получение страниц. 281

Страницы для веб-скрейпинга. 285

Рекурсивный веб-скрейпинг. 287

Резюме. 291

ГЛАВА 12. Составление и парсинг сообщений электронной почты.. 293

Содержание главы. 293

Цель  294

Форматирование электронного письма. 294

Составление электронного письма. 296

HTML и мультимедиа. 298

Создание контента. 303

Парсинг электронного письма. 305

Использование MIME. 307

Кодирование заголовков. 309

Парсинг дат. 311

Резюме. 312

ГЛАВА 13. Протокол SMTP. 313

Содержание главы. 313

Цель  314

Веб-сервисы электронной почты и почтовые клиенты. 314

Все началось с командной строки. 314

Развитие клиентов. 315

Переход на веб-сервисы электронной почты. 317

Функции SMTP. 318

Передача электронной почты. 319

Получатель на конверте и заголовки. 320

Несколько прыжков. 320

Библиотека для работы с протоколом SMTP. 322

Обработка ошибок и отладка. 323

EHLO для сбора информации. 326

SSL и TLS. 329

Аутентификация SMTP. 332

Советы по SMTP. 333

Резюме. 334

ГЛАВА 14. Протокол POP. 335

Содержание главы. 335

Цель  336

Серверы POP и стандарты. 336

Аутентификация и подключение. 336

Получение информации о почтовом ящике. 339

Загрузка и удаление писем. 340

Резюме. 343

ГЛАВА 15. Протокол IMAP. 345

Содержание главы. 346

Цель  347

Реализация IMAP в Python. 347

Клиент IMAP. 349

Просмотр папок. 351

UID и номера писем. 351

Интервалы между письмами. 352

Общая информация. 352

Получение всего почтового ящика. 354

Загрузка отдельных писем. 356

Добавление и удаление флагов. 363

Удаление писем. 364

Поиск. 364

Работа с папками. 366

Асинхронность. 367

Резюме. 367

ГЛАВА 16. Протоколы SSH и Telnet 369

Содержание главы. 369

Цель  370

Автоматизация с помощью командной строки. 370

Раскрытие выражения и экранирование в командной строке. 371

Аргументы в командах UNIX.. 372

Экранирование символов. 374

Ужасная командная строка Windows 376

Терминал. 377

Терминалы и буферизация. 380

Telnet 381

SSH: безопасная оболочка. 386

SSH: краткий обзор. 386

Ключи хоста для SSH.. 387

Аутентификация в SSH.. 390

Отдельные команды и сеансы. 391

Протокол SFTP. 396

Дополнительные возможности. 399

Резюме. 399

ГЛАВА 17. Протокол FTP. 401

Содержание главы. 402

Цель  402

Что делать, если невозможно использовать FTP. 402

Каналы коммуникации. 403

FTP в Python. 404

Двоичные файлы и файлы ASCII 405

Расширенная загрузка двоичных файлов с сервера. 407

Отправка данных на удаленный компьютер. 409

Расширенная отправка двоичных данных. 410

Обработка ошибок. 411

Поиск по каталогам. 412

Обнаружение каталогов и загрузка в рекурсивном режиме. 414

Создание и удаление каталогов. 416

Безопасное использование FTP. 416

Резюме. 416

ГЛАВА 18. RPC — удаленный вызов процедур. 419

Содержание главы. 420

Цель  421

Характеристики RPC. 421

XML-RPC. 422

JSON-RPC. 429

Самодокументируемые данные. 432

Объекты: Pyro и RPyC. 434

Пример RPyC. 435

Очереди сообщений, RPC и веб-фреймворки. 438

Восстановление после ошибок в сети. 438

Резюме. 439

Предметный указатель. 441

Summary
Aggregate Rating
3 based on 1 votes
Добавить комментарий