内容简介
开发TCP/IP网络客户端和服务器应用程序
管理本地设备的IPv4/IPv6网络接口
使用HTTP和HTTPS协议写作有许多用途、高效的网络客户端
编写一个可以使用常见电子邮件协议的电子邮件客户端
通过远程登录和SSH连接执行远程系统管理任务
使用网络服务与热门网站互动
并监控和分析重要的常见网络安全漏洞
目录
- 第1章套接字、IPv4和简单的客户端/服务器编程1
- 1.1简介1
- 1.2打印设备名和IPv4地址2
- 1.2.1准备工作2
- 1.2.2实战演练2
- 1.2.3原理分析3
- 1.3获取远程设备的IP地址4
- 1.3.1实战演练4
- 1.3.2原理分析4
- 1.4将IPv4地址转换成不同的格式5
- 1.4.1实战演练5
- 1.4.2原理分析6
- 1.5通过指定的端口和协议找到服务名6
- 1.5.1准备工作6
- 1.5.2实战演练6
- 1.5.3原理分析7
- 1.6主机字节序和网络字节序之间相互转换7
- 1.6.1实战演练7
- 1.6.2原理分析8
- 1.7设定并获取默认的套接字超时时间8
- 1.7.1实战演练8
- 1.7.2原理分析9
- 1.8优雅地处理套接字错误9
- 1.8.1实战演练9
- 1.8.2原理分析10
- 1.9修改套接字发送和接收的缓冲区大小12
- 1.9.1实战演练12
- 1.9.2原理分析13
- 1.10把套接字改成阻塞或非阻塞模式13
- 1.10.1实战演练13
- 1.10.2原理分析14
- 1.11重用套接字地址14
- 1.11.1实战演练14
- 1.11.2原理分析16
- 1.12从网络时间服务器获取并打印当前时间16
- 1.12.1准备工作16
- 1.12.2实战演练16
- 1.12.3原理分析17
- 1.13编写一个SNTP客户端17
- 1.13.1实战演练17
- 1.13.2原理分析18
- 1.14编写一个简单的回显客户端/服务器应用18
- 1.14.1实战演练18
- 1.14.2原理分析21
- 第2章使用多路复用套接字I/O提升性能22
- 2.1简介22
- 2.2在套接字服务器程序中使用ForkingMixIn23
- 2.2.1实战演练23
- 2.2.2原理分析25
- 2.3在套接字服务器程序中使用ThreadingMixIn25
- 2.3.1准备工作26
- 2.3.2实战演练26
- 2.3.3原理分析27
- 2.4使用select.select编写一个聊天室服务器28
- 2.4.1实战演练28
- 2.4.2原理分析34
- 2.5使用select.epoll多路复用Web服务器34
- 2.5.1实战演练34
- 2.5.2原理分析37
- 2.6使用并发库Diesel多路复用回显服务器37
- 2.6.1准备工作37
- 2.6.2实战演练37
- 2.6.3原理分析39
- 第3章IPv6、Unix域套接字和网络接口40
- 3.1简介40
- 3.2把本地端口转发到远程主机41
- 3.2.1实战演练41
- 3.2.2原理分析43
- 3.3通过ICMP查验网络中的主机44
- 3.3.1准备工作44
- 3.3.2实战演练44
- 3.3.3原理分析48
- 3.4等待远程网络服务上线48
- 3.4.1实战演练48
- 3.4.2原理分析50
- 3.5枚举设备中的接口51
- 3.5.1准备工作51
- 3.5.2实战演练51
- 3.5.3原理分析52
- 3.6找出设备中某个接口的IP地址52
- 3.6.1准备工作52
- 3.6.2实战演练53
- 3.6.3原理分析53
- 3.7探测设备中的接口是否开启53
- 3.7.1准备工作54
- 3.7.2实战演练54
- 3.7.3原理分析55
- 3.8检测网络中未开启的设备55
- 3.8.1准备工作55
- 3.8.2实战演练55
- 3.8.3原理分析56
- 3.9使用相连的套接字执行基本的进程间通信57
- 3.9.1准备工作57
- 3.9.2实战演练57
- 3.9.3原理分析58
- 3.10使用Unix域套接字执行进程间通信58
- 3.10.1实战演练58
- 3.10.2原理分析60
- 3.11确认你使用的Python是否支持IPv6套接字61
- 3.11.1准备工作61
- 3.11.2实战演练61
- 3.11.3原理分析63
- 3.12从IPv6地址中提取IPv6前缀63
- 3.12.1实战演练63
- 3.12.2原理分析64
- 3.13编写一个IPv6回显客户端/服务器64
- 3.13.1实战演练64
- 3.13.2原理分析67
- 第4章HTTP协议网络编程68
- 4.1简介68
- 4.2从HTTP服务器下载数据68
- 4.2.1实战演练69
- 4.2.2原理分析70
- 4.3在你的设备中伺服HTTP请求70
- 4.3.1实战演练70
- 4.3.2原理分析72
- 4.4访问网站后提取cookie信息72
- 4.4.1实战演练73
- 4.4.2原理分析75
- 4.5提交网页表单75
- 4.5.1准备工作75
- 4.5.2实战演练75
- 4.5.3原理分析77
- 4.6通过代理服务器发送Web请求77
- 4.6.1准备工作77
- 4.6.2实战演练77
- 4.6.3原理分析78
- 4.7使用HEAD请求检查网页是否存在78
- 4.7.1实战演练78
- 4.7.2原理分析79
- 4.8把客户端伪装成Mozilla Firefox79
- 4.8.1实战演练79
- 4.8.2原理分析80
- 4.9使用HTTP压缩节省Web请求消耗的带宽80
- 4.9.1实战演练81
- 4.9.2原理分析82
- 4.10编写一个支持断点续传功能的HTTP容错客户端82
- 4.10.1实战演练83
- 4.10.2原理分析84
- 4.11使用Python和OpenSSL编写一个简单的HTTPS服务器84
- 4.11.1准备工作84
- 4.11.2实战演练84
- 4.11.3原理分析86
- 第5章电子邮件协议、FTP和CGI编程87
- 5.1简介87
- 5.2列出FTP远程服务器中的文件87
- 5.2.1准备工作87
- 5.2.2实战演练88
- 5.2.3原理分析89
- 5.3把本地文件上传到远程FTP服务器中89
- 5.3.1准备工作89
- 5.3.2实战演练89
- 5.3.3原理分析90
- 5.4把当前工作目录中的内容压缩成ZIP文件后通过电子邮件发送91
- 5.4.1准备工作91
- 5.4.2实战演练91
- 5.4.3原理分析93
- 5.4.4参考资源94
- 5.5通过POP3协议下载谷歌电子邮件94
- 5.5.1准备工作94
- 5.5.2实战演练94
- 5.5.3原理分析95
- 5.6通过IMAP协议查收远程服务器中的电子邮件95
- 5.6.1准备工作95
- 5.6.2实战演练96
- 5.6.3原理分析97
- 5.7通过Gmail的SMTP服务器发送带有附件的电子邮件97
- 5.7.1准备工作97
- 5.7.2实战演练97
- 5.7.3原理分析99
- 5.8使用CGI为基于Python的Web服务器编写一个留言板99
- 5.8.1实战演练99
- 5.8.2原理分析101
- 第6章屏幕抓取和其他实用程序103
- 6.1简介103
- 6.2使用谷歌地图API搜索公司地址103
- 6.2.1准备工作103
- 6.2.2实战演练104
- 6.2.3原理分析104
- 6.2.4参考资源104
- 6.3使用谷歌地图URL搜索地理坐标105
- 6.3.1实战演练105
- 6.3.2原理分析106
- 6.4搜索维基百科中的文章106
- 6.4.1准备工作107
- 6.4.2实战演练107
- 6.4.3原理分析109
- 6.5使用谷歌搜索股价110
- 6.5.1准备工作110
- 6.5.2实战演练110
- 6.5.3原理分析111
- 6.6搜索GitHub中的源代码仓库111
- 6.6.1准备工作112
- 6.6.2实战演练112
- 6.6.3原理分析113
- 6.7读取BBC的新闻订阅源114
- 6.7.1准备工作114
- 6.7.2实战演练114
- 6.7.3原理分析115
- 6.8爬取网页中的链接116
- 6.8.1实战演练116
- 6.8.2原理分析118
- 第7章跨设备编程119
- 7.1简介119
- 7.2使用telnet在远程主机中执行shell命令119
- 7.2.1准备工作119
- 7.2.2实战演练120
- 7.2.3原理分析121
- 7.3通过SFTP把文件复制到远程设备中121
- 7.3.1准备工作122
- 7.3.2实战演练122
- 7.3.3原理分析123
- 7.4打印远程设备的CPU信息123
- 7.4.1准备工作123
- 7.4.2实战演练124
- 7.4.3原理分析125
- 7.5在远程主机中安装Python包126
- 7.5.1准备工作126
- 7.5.2实战演练126
- 7.5.3原理分析127
- 7.6在远程主机中运行MySQL命令128
- 7.6.1准备工作128
- 7.6.2实战演练128
- 7.6.3原理分析131
- 7.7通过SSH把文件传输到远程设备中131
- 7.7.1准备工作131
- 7.7.2实战演练131
- 7.7.3原理分析134
- 7.8远程配置Apache运行网站134
- 7.8.1准备工作134
- 7.8.2实战演练134
- 7.8.3原理分析136
- 第8章使用Web服务:XML-RPC、SOAP和REST138
- 8.1简介138
- 8.2查询本地XML-RPC服务器139
- 8.2.1准备工作139
- 8.2.2实战演练139
- 8.2.3原理分析141
- 8.3编写一个多线程、多调用XML-RPC服务器141
- 8.3.1实战演练141
- 8.3.2原理分析143
- 8.4运行一个支持HTTP基本认证的XML-RPC服务器143
- 8.4.1实战演练143
- 8.4.2原理分析146
- 8.5使用REST从Flickr中收集一些照片信息146
- 8.5.1实战演练146
- 8.5.2原理分析149
- 8.6找出亚马逊S3 Web服务支持的SOAP方法150
- 8.6.1准备工作150
- 8.6.2实战演练150
- 8.6.3原理分析151
- 8.7使用谷歌搜索定制信息151
- 8.7.1准备工作151
- 8.7.2实战演练151
- 8.7.3原理分析152
- 8.8通过商品搜索API在亚马逊中搜索图书153
- 8.8.1准备工作153
- 8.8.2实战演练153
- 8.8.3原理分析155
- 第9章网络监控和安全性156
- 9.1简介156
- 9.2嗅探网络数据包156
- 9.2.1准备工作156
- 9.2.2实战演练157
- 9.2.3原理分析158
- 9.3使用pcap转储器把数据包保存为pcap格式159
- 9.3.1实战演练159
- 9.3.2原理分析161
- 9.4在HTTP数据包中添加额外的首部162
- 9.4.1实战演练162
- 9.4.2原理分析163
- 9.5扫描远程主机的端口163
- 9.5.1实战演练164
- 9.5.2原理分析165
- 9.6自定义数据包的IP地址165
- 9.6.1实战演练165
- 9.6.2原理分析167
- 9.7读取保存的pcap文件以重放流量167
- 9.7.1实战演练167
- 9.7.2原理分析169
- 9.8扫描数据包的广播169
- 9.8.1实战演练169
- 9.8.2原理分析170