目录


第1章网络编程基础1
1.1什么是计算机网络1
1.2计算机网络的层次2
1.3网络数据传输4
1.4网络地址5
1.4.1IPv4编址5
1.4.2IPv6编址7
1.5MAC地址与地址解析8
第2章网络报文分析工具10
2.1Wireshark10
2.1.1Wireshark的安装10
2.1.2Wireshark报文分析14
2.1.3Wireshark过滤器18
2.2Fiddler22
2.2.1Fiddler Classic的安装23
2.2.2报文抓取原理24
2.2.3基本功能介绍26
2.2.4HTTPS报文解析30
第3章TCP/IP35
3.1TCP35
3.1.1TCP报文格式35
3.1.2三次握手38
3.1.3四次挥手41
3.1.4滑动窗口机制45
3.2UDP47
3.3IP48
3.3.1IPv448
3.3.2IPv649
3.4TCP/IP高级选项51
第4章Socket网络通信53
4.1Socket辅助类库53
4.1.1SocketAddressKind53
4.1.2IPMask53
4.1.3SocketNet54
4.1.4SocketAddress54
4.1.5SocketAddressWithMask57
4.1.6SocketKeepAliveConfig58
4.1.7SocketOptions59
4.2Socket基础接口59
4.2.1StreamingSocket59
4.2.2DatagramSocket60
4.2.3ServerSocket60
4.3TcpSocket61
4.4TcpSocket客户端示例66
4.4.1SMTP简介66
4.4.2SMTP客户端示例67
4.5TcpServerSocket69
4.6TCP回显服务器示例77
4.6.1TcpEchoServer的实现78
4.6.2TcpEchoClient的实现80
4.7UdpSocket82
4.8UDP回显服务器示例89
4.8.1UdpEchoServer的实现89
4.8.2UdpEchoClient的实现91
第5章粘包问题及解决方法94
5.1网络通信粘包的表现94
5.2粘包产生的原因98
5.3粘包解决方法99
5.3.1指定数据包结束标志99
5.3.2固定包首可变包体110
第6章基于缓冲区的高效网络I/O119
6.1直接输出与缓冲区输出119
6.2支持输出缓冲区的TCP套接字122
6.3输入缓冲区原理129
6.4输入缓冲区实现示例131
第7章非阻塞Socket通信140
7.1阻塞与非阻塞140
7.2非阻塞Socket141
7.3单线程处理一万并发示例142
7.3.1源码结构142
7.3.2带缓冲区的套接字类142
7.3.3线程安全的套接字队列类145
7.3.4回显服务器148
7.3.5回显客户端153
7.3.6编译运行156
第8章TLS与数字证书159
8.1安全通信的演化159
8.1.1明文通信159
8.1.2对称加密通信160
8.1.3非对称加密通信160
8.1.4基于数字证书的非对称加密通信162
8.2TLS协议简介164
8.2.1TLS协议演进史164
8.2.2TLS协议构成164
8.2.3TLS握手过程165
8.3实现自签名数字证书173
8.3.1Ubuntu系统下的OpenSSL安装174
8.3.2Ubuntu系统下的证书签发175
8.3.3Windows系统下的OpenSSL安装181
8.3.4Windows系统下的证书签发181
第9章安全网络通信188
9.1安全基础类库及示例188
9.1.1标准库Digest接口188
9.1.2crypto模块digest 包189
9.1.3PadOption192
9.1.4RSAPrivateKey192
9.1.5RSAPublicKey193
9.1.6RSA密钥示例194
9.1.7Curve197
9.1.8ECDSAPrivateKey197
9.1.9ECDSAPublicKey198
9.1.10ECDSA密钥示例198
9.2数字证书类库及示例200
9.2.1X509Name200
9.2.2SerialNumber 201
9.2.3KeyUsage201
9.2.4ExtKeyUsage202
9.2.5PublicKeyAlgorithm204
9.2.6Signature204
9.2.7SignatureAlgorithm204
9.2.8IP205
9.2.9X509CertificateInfo205
9.2.10X509Certificate206
9.2.11签发数字证书示例208
9.2.12X509CertificateRequestInfo211
9.2.13X509CertificateRequest213
9.2.14生成证书请求文件并签发数字证书示例214
9.3TLS类库及示例218
9.3.1TlsVersion218
9.3.2HashType218
9.3.3SignatureType218
9.3.4SignatureSchemeType219
9.3.5SignatureAlgorithm 219
9.3.6CertificateVerifyMode 219
9.3.7TlsClientIdentificationMode220
9.3.8CipherSuite 220
9.3.9TlsClientConfig 220
9.3.10TlsServerConfig 223
9.3.11TlsSession 224
9.3.12TlsSessionContext 225
9.3.13TlsSocket 225
9.3.14TLS回显服务器示例227
9.3.15TLS回显客户端示例230
9.3.16TLS会话复用示例233
第10章HTTP237
10.1HTTP的演进237
10.2HTTP消息结构238
10.2.1抽象消息结构238
10.2.2HTTP/1.1的消息结构239
10.2.3HTTP/2的消息结构245
10.2.4HTTP/3的消息结构251
10.3请求方法253
10.4状态码253
10.5首部字段257
10.6HTTP/首部压缩静态表258
10.6.1HTTP/2首部压缩静态表258
10.6.2HTTP/3首部压缩静态表261
第11章HTTP服务器端265
11.1Hello World265
11.2主要类库及示例267
11.2.1Protocol267
11.2.2HttpStatusCode267
11.2.3HttpHeaders269
11.2.4Cookie274
11.2.5HttpRequest279
11.2.6HttpResponse282
11.2.7HttpResponseBuilder283
11.2.8HttpResponseWriter286
11.2.9FileHandler290
11.2.10Server295
11.2.11HttpRequestDistributor297
11.2.12ServerBuilder301
11.3综合示例305
11.3.1基于自签名数字证书的HTTPS示例305
11.3.2Basic基本身份认证示例314
11.3.3Cookie身份认证示例320
第12章HTTP客户端329
12.1基础示例329
12.2客户端相关类库及示例330
12.2.1CookieJar330
12.2.2HttpRequestBuilder336
12.2.3Client342
12.2.4ClientBuilder348
12.3综合示例352
第13章WebSocket360
13.1WebSocket协议简介360
13.1.1WebSocket握手360
13.1.2WebSocket帧结构362
13.2WebSocket API364
13.3WebSocket仓颉类库367
13.3.1WebSocketFrameType367
13.3.2WebSocketFrame368
13.3.3WebSocket 368
13.4WebSocket简单示例370
13.4.1WebSocket服务器端实现370
13.4.2WebSocket控制台客户端实现372
13.4.3WebSocket浏览器客户端实现375
13.5加密的多端聊天室示例377
13.5.1聊天室服务器端实现377
13.5.2聊天室控制台客户端实现387
13.5.3聊天室浏览器客户端实现392
参考文献398