目录 第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