当前位置: 首页> 房产> 市场 > 脑白金网络营销_从珠海回来都变黄码了_北京网站建设公司优势_推广一单500

脑白金网络营销_从珠海回来都变黄码了_北京网站建设公司优势_推广一单500

时间:2025/7/29 8:18:10来源:https://blog.csdn.net/ljl1704/article/details/146571133 浏览次数:0次
脑白金网络营销_从珠海回来都变黄码了_北京网站建设公司优势_推广一单500

1. IP 分片重组(IP Fragmentation & Reassembly)

(1)分片原因

  • 当 IP 数据包长度超过 MTU(Maximum Transmission Unit)(如以太网默认 1500 字节)时,路由器或发送端会将其分片。

  • 分片字段

    • Identification(16 比特):同一数据包的所有分片共享相同 ID。

    • Fragment Offset(13 比特):当前分片在原始数据包中的偏移量(以 8 字节为单位)。

    • Flags(3 比特):

      • MF(More Fragments)=1:表示后续还有分片。

      • DF(Don’t Fragment)=1:禁止分片(如 ICMP 探测包)。

(2)重组原理

  • 接收端 根据以下字段重组分片:

    1. Identification:匹配同一数据包的所有分片。

    2. Fragment Offset:按偏移量排序分片。

    3. MF 标志:若 MF=0,表示最后一个分片。

  • 重组策略

    • 重叠分片处理

      • 若分片范围重叠(如恶意攻击或网络异常),协议栈通常选择 后到达的分片覆盖先到达的(Linux 默认策略)。

      • 也可选择 丢弃重叠分片(取决于实现)。

    • 超时机制

      • 若部分分片丢失,重组队列会等待一段时间(如 Linux 默认 30 秒),超时后丢弃所有分片。

(3)协议栈处理阶段

  • 在网络层(IP 层)完成重组,之后将完整数据包交给传输层(如 TCP/UDP)。

  • 关键函数(Linux 内核):

    • ip_defrag():处理分片重组。

    • ip_frag_queue():管理分片队列。


2. TCP 会话重组(TCP Stream Reassembly)

(1)重组原因

  • TCP 是面向流的协议,但网络传输可能乱序、丢失或重复。

  • 接收端需对数据段(Segment)按序列号(Sequence Number)排序,确保应用层收到有序数据。

(2)重组原理

  • 基于序列号(Sequence Number)

    • 每个 TCP 段的序列号标识其第一个字节的全局位置。

    • 接收方通过 滑动窗口机制 确认连续数据(ACK)并缓存乱序数据。

  • 重组策略

    • 乱序数据缓存

      • 若收到非连续数据(如 Seq=100 先于 Seq=50 到达),内核会缓存乱序段,等待缺失数据。

    • 重叠数据处理

      • 若数据范围重叠(如重传或恶意攻击),TCP 会选择 覆盖旧数据 或 丢弃新数据(取决于实现)。

      • Linux 默认策略:保留先到达的数据(避免重传污染)。

    • SACK(Selective ACK)

      • 通过 TCP 选项 SACK 精确告知发送方已收到的乱序数据块,减少不必要的重传。

(3)协议栈处理阶段

  • 在传输层(TCP 层)完成重组,排序后的数据存入接收缓冲区,供应用层读取。

  • 关键机制

    • 滑动窗口:动态调整接收窗口,控制发送速率。

    • 重传队列:管理疑似丢失的数据段。

  • 关键函数(Linux 内核):

    • tcp_rcv_established():处理已建立连接的数据。

    • tcp_data_queue():管理数据排序和提交。


3. IP 分片 vs. TCP 重组对比

特性IP 分片重组TCP 会话重组
触发条件数据包超过 MTU数据乱序、丢失、重复
依赖字段Identification、Fragment Offset、MFSequence Number、ACK、SACK
处理重叠策略后到覆盖先到(默认)先到优先(默认)或丢弃新数据
协议栈阶段网络层(IP 层)传输层(TCP 层)
超时机制30 秒(Linux)由 RTO(重传超时)动态计算
典型应用场景UDP、ICMP 大包TCP 流式传输(如 HTTP、FTP)

4. 协议栈中的重组阶段

  1. 网卡收包

    • DMA 将数据包拷贝到内核 Ring Buffer。

  2. IP 层处理

    • 检查分片(ip_defrag()),重组后交给传输层。

  3. TCP 层处理

    • 排序乱序数据(tcp_data_queue()),提交到接收缓冲区。

  4. 应用层读取

    • 通过 recv() 从 TCP 缓冲区拷贝数据到用户空间。


5. 关键问题与优化

(1)IP 分片的问题

  • 性能开销:重组消耗 CPU/内存。

  • 安全风险:分片可被用于攻击(如泪滴攻击)。

  • 优化

    • 避免分片:PMTUD(路径 MTU 发现)或设置 DF=1

(2)TCP 重组的挑战

  • 乱序容忍:需合理设置窗口大小和缓冲区。

  • 优化

    • 启用 SACK 减少重传。

    • 调整 tcp_rmem 扩大接收缓冲区。


总结

  • IP 分片重组 在网络层完成,依赖分片字段和超时机制,处理策略通常覆盖后到分片。

  • TCP 会话重组 在传输层完成,依赖序列号和滑动窗口,默认优先保留先到数据。

  • 重叠处理策略 影响安全性和可靠性,需根据场景权衡(如防御攻击 vs. 保证数据正确性)。

  • 协议栈分层 确保各司其职:IP 层负责分片,TCP 层负责流式重组。

关键字:脑白金网络营销_从珠海回来都变黄码了_北京网站建设公司优势_推广一单500

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: