IP分片,TCP分片

时间:2022-12-24 17:58:56

http://baike.baidu.com/link?url=TNFjj1fmfbVF4H4O9pciFRxdaOeli88iwRUfykiimOg0laI2GxN2z2_cNag3wpaw

http://wenku.baidu.com/link?url=zTDz1cQj7MQhfKulcV2SD3WOBMlbaftEVBgBBsnLTAE60cIT_OQ2VUBQgUlson8QpzEuhNJi6J-WFHS-0OPzQqxGXFgKuvWFKNNcS9EgVyy

http://hi.baidu.com/_jiangming/item/400c0bc2ff66d445bdef6988


先列出总结:

1、TCP 分片后无需 IP 分片。TCP协议会尽量采用TCP分片,而不是IP分片。
2、TCP 分片也有可能丢失,但 TCP 协议有重传机制
3、UDP报文过大,会导致IP分片



IP分片技术
链路层具有最大传输单元MTU这个特性 ,它限制了 数据帧 的最大长度,不同的 网络类型 都有一个上限值。

1产生原因编辑

以太网 的MTU是1500,你可以用 netstat -i 命令查看这个值。如果IP层有 数据包 要传,而且 数据包 的长度超过了MTU,那么IP层就要对数据包进行分片(fragmentation)操作,使每一片的长度都小于或等于MTU。我们假设要传输一个UDP数据包, 以太网 的MTU为1500字节,一般IP首部为20字节,UDP首部为8字节,数据的净荷(payload)部分预留是1500-20-8=1472字节。如果数据部分大于1472字节,就会出现分片现象。
以太网和802.3对数据帧的长度都有一个限制,其最大值分别是1500和1492个字节。

2技术信息编辑

IP首部包含了分片和重组所需的信息:
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Identification |R|DF|MF| Fragment Offset |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|<-------------16-------------->|<--3-->|<---------13---------->|
Identification:发送端发送的IP数据包标识字段都是一个唯一值,该值在分片时被复制到每个片中。
R:保留未用。
DF:Don't Fragment,“不分片”位,如果将这一比特置1 ,IP层将不对数据报进行分片。
MF:More Fragment,“更多的片”,除了最后一片外,其他每个组成数据报的片都要把该比特置1。
Fragment Offset:该片偏移原始 数据包开始处的位置。偏移的字节数是该值乘以8。
另外,当数据报被分片后,每个片的总长度值要改为该片的长度值

虽然数据可以分片,但是要尽量避免分片,因为IP层本身没有超时重传机制,由更高层来负责超时和重传(TCP有超时和重传机制).当某片报文丢失后,TCP在超时后会重发整个TCP报文段,而不是重传数据包文段的一个数据包片,分片还会增加丢包率,降低网络速度.