图书目录

目录

第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