返回 随笔记录
随笔记录

五、网络编程

博主
大约 8 分钟

五、网络编程

范围:TCP/IP、HTTP、WebSocket、Netty、RPC框架 知识点数量:203项 返回总目录


5.1 网络基础

5.1.1 TCP/IP协议

  • 529. OSI七层模型 - 掌握各层功能和协议,理解封装解封装
  • 530. TCP三次握手 - 掌握连接建立过程,理解SYN flood防护
  • 531. TCP四次挥手 - 掌握连接关闭,理解TIME_WAIT作用(2MSL)
  • 532. TCP可靠传输 - 掌握序列号、确认应答、超时重传
  • 533. TCP流量控制 - 掌握滑动窗口机制,理解窗口大小协商
  • 534. TCP拥塞控制 - 掌握慢启动、拥塞避免、快重传、快恢复
  • 535. UDP协议 - 掌握无连接特性,理解DNS、视频流应用
  • 536. TCP vs UDP - 理解区别和选型,掌握适用场景
  • 537. TCP粘包问题 - 掌握原因分析,理解解决方案(定长、分隔符、长度字段)
  • 538. TCP Keep-Alive - 掌握心跳检测,理解与应用层心跳区别
  • 539. TCP状态转换 - 掌握11种状态,理解状态图
  • 540. 半关闭状态 - 掌握shutdownInput/Output,理解单向关闭
  • 541. TCP快速打开 - 理解TFO机制,掌握Cookie交换

5.1.2 HTTP协议

  • 542. HTTP/1.1 - 掌握请求方法、状态码、头部,理解长连接
  • 543. HTTP/2 - 掌握多路复用、头部压缩(HPACK)、服务端推送
  • 544. HTTP/3 (QUIC) - 掌握基于UDP的新一代HTTP,理解0-RTT
  • 545. HTTPS原理 - 掌握SSL/TLS握手和证书验证,理解对称+非对称加密
  • 546. Cookie与Session - 掌握状态管理,理解Cookie属性和Session持久化
  • 547. CORS跨域 - 掌握跨域请求机制,理解预检请求(OPTIONS)
  • 548. HTTP缓存 - 掌握强缓存(Cache-Control)和协商缓存(ETag/Last-Modified)
  • 549. RESTful设计 - 掌握资源命名和HTTP动词,理解HATEOAS
  • 550. HTTP状态码 - 掌握1xx-5xx分类,理解常用状态码场景
  • 551. HTTP头部 - 掌握通用/请求/响应/实体头部,理解自定义头部
  • 552. 内容协商 - 掌握Accept头部,理解媒体类型和编码协商
  • 553. HTTP压缩 - 掌握gzip/deflate/brotli,理解压缩比和性能

5.1.3 Socket编程

  • 554. Socket基础 - 掌握TCP客户端/服务端,理解IP+端口
  • 555. ServerSocket - 掌握服务端监听,理解backlog参数
  • 556. DatagramSocket - 掌握UDP通信,理解数据包丢失处理
  • 557. 多线程Socket - 掌握每请求一线程模型,理解线程池优化
  • 558. Socket超时设置 - 掌握connectTimeout和readTimeout
  • 559. Socket选项 - 掌握TCP_NODELAY、SO_REUSEADDR、SO_KEEPALIVE
  • 560. NIO Selector - 掌握多路复用,理解SelectionKey
  • 561. ByteBuffer - 掌握直接/堆缓冲区,理解flip/clear/compact
  • 562. Channel - 掌握FileChannel、SocketChannel、ServerSocketChannel
  • 563. AIO异步IO - 掌握AsynchronousChannelGroup,理解CompletionHandler
  • 564. IO模型对比 - 理解BIO/NIO/AIO区别,掌握选择策略
  • 565. Epoll机制 - 掌握Linux事件驱动,理解LT/ET模式

5.2 WebSocket

5.2.1 WebSocket基础

  • 566. WebSocket握手 - 掌握HTTP升级到WebSocket,理解Upgrade头部
  • 567. 数据帧格式 - 掌握Opcode、Mask、Payload Length
  • 568. 心跳机制 - 掌握Ping/Pong帧,理解保活策略
  • 569. 断线重连 - 掌握指数退避重连策略
  • 570. 消息类型 - 掌握文本和二进制消息,理解分片消息
  • 571. Spring WebSocket - 掌握框架集成,理解WebSocketHandler
  • 572. 子协议 - 掌握Sec-WebSocket-Protocol,理解STOMP
  • 573. 连接关闭 - 掌握Close帧和状态码,理解优雅关闭
  • 574. 消息大小限制 - 掌握最大帧配置,理解大消息分片

5.2.2 WebSocket应用

  • 575. 聊天室实现 - 掌握群发消息,理解会话管理
  • 576. 实时通知 - 掌握消息推送,理解订阅模式
  • 577. 在线协作文档 - 掌握操作转换(OT)算法
  • 578. 负载均衡 - 掌握WebSocket会话保持,理解Sticky Session
  • 579. 安全考虑 - 掌握WSS加密,理解Origin验证和Token认证
  • 580. 性能调优 - 掌握连接数限制,理解单机10万连接优化
  • 581. STOMP协议 - 掌握消息代理,理解Destination
  • 582. WebSocket集群 - 掌握Redis Pub/Sub广播,理解跨节点消息

5.3 Netty框架

5.3.1 Netty核心

  • 583. EventLoopGroup - 掌握线程模型,理解Reactor模式
  • 584. Channel - 掌握通道抽象,理解NioSocketChannel
  • 585. ChannelPipeline - 掌握处理链,理解入站出站顺序
  • 586. ChannelHandler - 掌握入站(ChannelInboundHandler)出站(ChannelOutboundHandler)
  • 587. ByteBuf - 掌握内存管理,理解引用计数
  • 588. Bootstrap - 掌握服务端(ServerBootstrap)客户端启动
  • 589. ChannelFuture - 掌握异步操作,理解addListener回调
  • 590. ChannelHandlerContext - 掌握上下文,理解fire事件传递
  • 591. Unpooled vs Pooled - 掌握内存分配,理解池化优势
  • 592. ReferenceCounted - 掌握引用计数,理解release释放

5.3.2 Netty进阶

  • 593. 粘包拆包 - 掌握DelimiterBasedFrameDecoder、LengthFieldBasedFrameDecoder
  • 594. 编解码器 - 掌握Protobuf、JSON、MessagePack编解码
  • 595. 零拷贝 - 掌握DirectBuffer、CompositeByteBuf、FileRegion
  • 596. 内存池 - 掌握PooledByteBufAllocator,理解Arena和Chunk
  • 597. 心跳检测 - 掌握IdleStateHandler,理解读/写/读写空闲
  • 598. 性能调优 - 掌握Boss/Worker线程配置,理解线程数计算
  • 599. 源码分析 - 理解Reactor模式实现,掌握启动流程
  • 600. 自定义协议 - 掌握协议设计(魔数+版本+长度+内容)
  • 601. Handler执行顺序 - 理解Pipeline双向链表,掌握添加/移除
  • 602. 优雅停机 - 掌握EventLoopGroup shutdownGracefully

5.3.3 Netty应用

  • 603. RPC框架底层 - 掌握Dubbo网络层实现
  • 604. 网关开发 - 掌握Spring Cloud Gateway底层Netty
  • 605. 即时通讯 - 掌握IM系统架构,理解消息可靠投递
  • 606. 游戏服务器 - 掌握高并发处理,理解帧同步
  • 607. 协议实现 - 掌握HTTP、MQTT、Redis协议实现
  • 608. 性能测试 - 掌握wrk/JMH压测,理解吞吐量指标
  • 609. 连接管理 - 掌握ChannelGroup,理解全局连接管理

5.4 RPC框架

5.4.1 RPC基础

  • 610. RPC原理 - 掌握远程调用流程,理解代理+序列化+网络
  • 611. 服务注册与发现 - 掌握注册中心,理解心跳健康检查
  • 612. 序列化协议 - 掌握Protobuf、Hessian、Kryo、Avro
  • 613. 通信协议 - 掌握自定义协议设计,理解协议头设计
  • 614. 负载均衡 - 掌握轮询、随机、一致性Hash、加权
  • 615. 容错机制 - 掌握重试、熔断、降级、限流
  • 616. 服务版本 - 掌握多版本共存,理解灰度发布
  • 617. 超时控制 - 掌握全局/方法级超时,理解超时传播
  • 618. 异步调用 - 掌握Future/CompletableFuture,理解回调

5.4.2 gRPC

  • 619. Proto文件 - 掌握IDL定义,理解message和service
  • 620. gRPC服务 - 掌握四种调用模式(Unary/Server/Client/Bidi Stream)
  • 621. Stream调用 - 掌握流式通信,理解背压机制
  • 622. 拦截器 - 掌握ClientInterceptor和ServerInterceptor
  • 623. 元数据传递 - 掌握Metadata,理解上下文传递
  • 624. gRPC集成Spring - 掌握grpc-spring-boot-starter
  • 625. gRPC Gateway - 掌握HTTP/gRPC转换
  • 626. 错误处理 - 掌握Status Code,理解错误详情

5.4.3 Dubbo

  • 627. Dubbo架构 - 掌握Provider、Consumer、Registry、Monitor
  • 628. 服务暴露 - 掌握ServiceBean,理解本地/远程暴露
  • 629. 服务引用 - 掌握ReferenceBean,理解代理创建
  • 630. 集群容错 - 掌握Failover、Failfast、Failsafe、Failback
  • 631. 扩展点 - 掌握SPI机制,理解自适应扩展
  • 632. Dubbo 3.0 - 掌握Triple协议和应用级服务发现
  • 633. 泛化调用 - 掌握GenericService,理解无依赖调用
  • 634. 服务分组 - 掌握Group/Version隔离
  • 635. 隐式传参 - 掌握RpcContext,理解隐式参数传递
  • 636. 线程模型 - 掌握Dispatcher策略,理解全派发/消息派发

进度统计

  • 领域:网络编程
  • 知识点总数:203项
  • 已完成:0项
  • 待完成:203项

实战项目建议

  • 项目1:简易RPC框架 - 实现服务注册发现、动态代理、序列化、负载均衡、容错
  • 项目2:WebSocket聊天室 - 实现群聊、私聊、在线状态、消息持久化、断线重连
  • 项目3:HTTP服务器 - 使用Netty实现HTTP服务器,支持静态资源、路由、JSON响应

常见面试问题

  • TCP三次握手和四次挥手过程?为什么是三次不是两次?
  • HTTP/1.1 vs HTTP/2 vs HTTP/3的区别?
  • Netty的线程模型?Reactor模式有几种?
  • RPC调用中序列化协议如何选择?Protobuf为什么快?
  • Dubbo的集群容错策略有哪些?默认是什么?

推荐学习资源

  • 书籍:《TCP/IP详解》《Netty实战》《HTTP权威指南》
  • 视频:极客时间《Netty源码剖析》《RPC实战与核心原理》
  • 官方:Netty官方文档、gRPC官方文档、Dubbo官方文档

返回总目录

知识点测试

读完文章了?来测试一下你对知识点的掌握程度吧!

评论区

使用 GitHub 账号登录后即可发表评论,支持 Markdown 格式。

如果评论系统无法加载,请确保:

  • 您的网络可以访问 GitHub
  • giscus GitHub App 已安装到仓库
  • 仓库已启用 Discussions 功能