网络分发数据 - IP分片
网络分发数据 - IP分片
ip分片
tcp分段
应用层分包
IP层分片
什么是ip分片?
IP协议在传输数据包时会将数据报文分成若干片进行传输,并在目标系统中进行重组。这个过程就要分片.
为什么分片?
网络传输过程中,在数据链路层中基于各种厂商提供的不同设备,比如以太网,令牌,无线网。他们的传输能力有所不同,所以需要最大传输单元(MTU)进行双方通信的数据负荷限制。如果IP不分片,在遇到IP报文长度超过中间设备转发接口的MTU值时,该IP报文将会被中间设备丢弃。在丢弃之后,中间设备会向发送方发送ICMP差错报文。所以IP数据报加上数据帧头部后大于MTU,为了防止数据丢失,需要对其进行分片处理。
IP分片实现和组装
16位标识:唯一标识主机发送的每个数据报。初始值由系统随机生成,每发送一个数据报,其值加一。该值在数据报分片时被复制到每个分片中,因此同一个数据报的所有分片标识值都相同
3位标志:第一位保留,第二位表示禁止分片,如果设置了该位,IP数据报长度超过MTU将被丢弃,返回错误。第三位表示更多分片,除了最后一个分片,其它都要置它为1.
13位分片偏移:该分片相较于原始IP数据报开始处(仅指数据部分)的偏移。实际偏移值是该值左移3位得到。因此除了最后一个分片,每个分片的数据部分长度必须是8的整数倍
发送端的ip数据+头部信息大于MTU值,我们会使用16位的标识号记录一个IP包的ID,以确定这几个分片属于同一个包。在在接收端,我们在ip层对于这些ip分片包进行重组,然后在传输给上层传输层。