引言:
本系列是根据《Mastering Python NetworkingThird Edition》翻译整理出来的,原著作者:Eric Chou,大家可以关注一下。
随着网络工程领域的快速变化,我们无疑也经历了类似的变化。
随着软件开发越来越多地集成到网络的各个方面、传统的命令行接口和垂直集成中,网络堆栈方法不再是管理当今网络的最佳方法。
对于网络工程师来说,我们所看到的变化充满了兴奋和机会,但却具有挑战性,特别是对于那些需要快速适应和跟上步伐的人来说。
这本书是为了通过提供一个实用的指南,说明如何从一个传统的平台发展到一个基于软件驱动的实践,来帮助缓解网络专业人员的过渡。
在本书中,我们使用Python作为掌握网络工程任务的编程语言。
一个变革的时代为技术进步提供了巨大的机会。
Who this book is for❓
这本书是理想的IT专业人员和操作工程师,他们已经管理了网络设备组,并希望扩展他们关于使用Python和其他工具来克服网络挑战的知识。
建议使用网络和Python方面的基本知识。
What this book covers❓
第1章,回顾TCP/IP协议套件和Python,回顾了构成当今互联网通信的基本技术,从OSI和客户端服务器模型到TCP、UDP和IP协议套件。本章将回顾Python语言的基础知识,如类型、操作符、循环、函数和包。
第2章,低级网络设备交互,使用实际的例子来说明如何使用Python在网络设备上执行命令。它还将讨论在自动化中使用只使用cli的接口所面临的挑战。本章将使用预期库、帕拉米科库、Netmiko库和Nornir库作为示例。
第3章,api和意图驱动的网络,讨论了支持应用程序编程接口(api)和其他高级交互方法的新型网络设备。它还演示了允许抽象低级任务的工具,同时重点关注网络工程师的意图。关于思科NX-API、Meraki、Juniper PyEZ、Arista Pyeapi, and Vyatta VyOS的讨论和例子将出现在本章中。
第4章,Python自动化框架-允许的基础,讨论了允许的基础,一个开源的,基于Python的自动化框架。允许从api更进一步,专注于声明性任务意图。在本章中,我们将介绍使用安易许及其高级体系结构的优点,并查看使用思科、瞻博和Arista设备的一些实际例子。
第5章,Python自动化框架——超越基础知识,建立在上一章的知识基础上,并涵盖了更高级的可允许的主题。我们将涵盖条件条件、循环、模板、变量、可允许的保险库和角色。它还将涵盖编写定制模块的基础知识。
第6章,使用Python的网络安全,介绍了几个Python工具来帮助您保护网络的安全。它将讨论使用Scapy进行安全测试,使用anssable快速实现访问列表,以及使用Python进行网络取证分析。
第7章,使用Python的网络监控-第1部分,涵盖了使用各种工具监控网络。本章包含了一些使用SNMP和PySNMP进行查询以获取设备信息的示例。矩阵库和Pygal的例子将显示为绘制结果。本章将以一个使用Python脚本作为输入源的Cacti示例结束。
第8章,使用Python的网络监控-第2部分,涵盖了更多的网络监控工具。本章将从使用Graphviz从LLDP信息中绘制网络图开始。我们将转向使用网络流和其他技术来使用基于推送的网络监控的示例。我们将使用Python来解码流包,并使用ntop来可视化结果。本文还将介绍弹性搜索以及如何将它用于网络监视。
第9章,使用Python构建网络Web服务,向您展示了如何使用Python烧瓶Web框架来创建我们自己的网络自动化API。网络API提供了一些好处,例如从网络详细信息中抽象出请求者、整合和自定义操作,以及通过限制可用操作的公开来提供更好的安全性。
第10章,AWS云网络,展示了我们如何使用AWS来构建一个具有功能性和有弹性的虚拟网络。我们将介绍虚拟私有云技术,如云形成、VPC路由表、访问列表、弹性IP、NAT网关、直接连接和其他相关主题。
第11章,Azure云网络,涵盖了Azure的网络服务,以及如何利用该服务构建网络服务。我们将讨论Azure VNet、快速路由和VPN、Azure网络负载均衡器,以及其他相关的网络服务。
第12章,使用弹性堆栈的网络数据分析,展示了我们如何使用弹性堆栈作为一组紧密集成的工具来帮助我们分析和监控我们的网络。我们将涵盖从安装、配置、数据导入与Logstash和节拍,以及使用弹性搜索搜索数据,到使用Kibana可视化的领域。
第13章,与Git合作,我们将说明如何利用Git进行协作和代码版本控制。本章将使用使用Git进行网络操作的实际例子。
第14章,与詹金斯的持续集成,使用詹金斯自动创建操作管道,可以节省我们的时间和增加可靠性。
第15章,网络的测试驱动开发,解释了如何使用Python的单元测试和小测试来创建简单的测试来验证我们的代码。我们还将看到为网络编写测试来验证可达性、网络延迟、安全性和网络事务的例子。我们还将看到如何将测试集成到连续集成工具中,如Jenkins。
To get the most out of this book
为了最大限度地利用这本书,我们推荐了一些基本的实践网络操作知识和Python知识。
大多数章节可以按任何顺序阅读,除了第4章和第5章,它们应该按顺序阅读。
除了在书的开头所介绍的基本的软件和硬件工具外,与每个章节相关的新工具也将在各自的章节中被介绍。
强烈建议遵循并实践您自己的网络实验室中显示的例子。
正文
第一章--Review of TCP/IP Protocol Suite and Python
欢迎来到网络工程的新时代!
多年来,DevOps和软件定义网络(SDN)运动等因素,已经显著地模糊了网络工程师、系统工程师和开发人员之间的界限。
你拿起这本书的事实表明,你可能已经是网络DevOps的采用者,或者你正在考虑检查网络的可编程性。
也许你和我一样,已经做了一名网络工程师多年了,并且想知道关于Python编程语言的热门话题是什么。
您甚至可能已经流利地掌握了Python编程语言,但您想知道它在网络工程领域的应用程序是什么。
如果你属于这些阵营,或者只是对网络工程领域的Python感到好奇,我相信这本书是适合你的:
这本书假设您有一些管理网络的实际经验,以及对网络协议的基本理解。
如果您已经熟悉Python作为一种语言,这很有帮助,但是我们将在本章的后面介绍一些基础知识。
你不需要成为Python或网络工程方面的专家来最大限度地发挥这本书。
这本书打算建立在网络工程和Python的基本基础上,以帮助读者学习和实践各种应用程序,可以使他们的生活更容易。
本章将快速访问相关的网络话题,而不涉及太多的细节。从我在现场工作的经验,一个典型的网络工程师或开发人员可能不记得确切的传输控制协议(TCP)状态机来完成他们的日常任务(我知道Idon),但他们会熟悉开放系统互连(OSI)模型,TCP和用户数据报协议(UDP)操作,不同的IP头字段,和其他基本概念。我们还将查看Python语言的高级评论;对于那些不每天用Python编写的读者来说,他们有理由阅读书的其余部分。
具体来说,我们将涵盖以下主题:
• An overview of the internet --