MST

星途 面试题库

面试题:网络编程中TCP/IP协议栈分片技术原理

请详细阐述在TCP/IP协议栈中,分片技术是在什么情况下触发的,以及分片过程是如何实现的,包括涉及到的相关字段及其作用。
11.0万 热度难度
后端开发网络编程

知识考点

AI 面试

面试题答案

一键面试

触发情况

当IP数据报的大小超过了链路层MTU(最大传输单元)时,就会触发分片技术。例如,以太网的MTU通常是1500字节,如果一个IP数据报(包含首部和数据)超过了1500字节,就需要进行分片。

分片过程实现

  1. 源主机分片:源主机在构建IP数据报时,若发现数据报大小超过了要发送链路的MTU,就将数据报分成多个较小的片段(分片)。每个分片都包含一个IP首部和部分数据。
  2. 中间路由器分片:当一个IP数据报在传输过程中,经过某个路由器时,如果该路由器要转发的链路MTU小于数据报的大小,路由器也会对数据报进行分片。

相关字段及其作用

  1. 标识(Identification)字段:16位,在IP首部中。它是源主机赋予IP数据报的标识符,同一数据报的所有分片都具有相同的标识值。作用是让目的主机能够识别哪些分片属于同一个原始数据报,以便将它们重新组装。
  2. 标志(Flags)字段:3位,在IP首部中。其中低2位有意义:
    • MF(More Fragments):1位,MF = 1表示该分片后面还有其他分片;MF = 0表示该分片是最后一个分片。
    • DF(Don't Fragment):1位,DF = 1表示不允许分片。若数据报大小超过MTU且DF = 1,路由器将丢弃该数据报,并向源主机发送ICMP“目标不可达”消息。
  3. 片偏移(Fragment Offset)字段:13位,在IP首部中。它指出该分片在原始数据报中的相对位置,以8字节为单位进行计数。目的主机根据片偏移的值将分片按正确顺序重新组装成原始数据报。