■ Contents
ix
Other getaddrinfo( ) Flags ������������������������������������������������������������������������������������������������������������������������������������ 64
Primitive Name Service Routines ������������������������������������������������������������������������������������������������������������������������ 65
Using getsockaddr( ) in Your Own Code ��������������������������������������������������������������������������������������������������������������� 65
The DNS Protocol ������������������������������������������������������������������������������������������������������������������������67
Why Not to Use Raw DNS ������������������������������������������������������������������������������������������������������������������������������������ 69
Making a DNS Query from Python ����������������������������������������������������������������������������������������������������������������������� 69
Resolving Mail Domains �������������������������������������������������������������������������������������������������������������������������������������� 71
Summary ������������������������������������������������������������������������������������������������������������������������������������� 73
■ Chapter 5: Network Data and Network Errors �����������������������������������������������������������������75
Bytes and Strings ������������������������������������������������������������������������������������������������������������������������75
Character Strings ������������������������������������������������������������������������������������������������������������������������������������������������� 76
Binary Numbers and Network Byte Order ����������������������������������������������������������������������������������������������������������� 79
Framing and Quoting �������������������������������������������������������������������������������������������������������������������81
Pickles and Self-delimiting Formats �������������������������������������������������������������������������������������������86
XML and JSON �����������������������������������������������������������������������������������������������������������������������������86
Compression �������������������������������������������������������������������������������������������������������������������������������87
Network Exceptions ��������������������������������������������������������������������������������������������������������������������88
Raising More Specific Exceptions ����������������������������������������������������������������������������������������������������������������������� 90
Catching and Reporting Network Exceptions ������������������������������������������������������������������������������������������������������ 91
Summary ������������������������������������������������������������������������������������������������������������������������������������� 92
■ Chapter 6: TLS/SSL ����������������������������������������������������������������������������������������������������������93
What TLS Fails to Protect ������������������������������������������������������������������������������������������������������������93
What Could Possibly Go Wrong? ��������������������������������������������������������������������������������������������������94
Generating Certificates ����������������������������������������������������������������������������������������������������������������95
Offloading TLS �����������������������������������������������������������������������������������������������������������������������������98
Python 3�4 Default Contexts ��������������������������������������������������������������������������������������������������������99
Variations on Socket Wrapping �������������������������������������������������������������������������������������������������������������������������� 103