分段是发生在传输层,一般是TCP进行分段;分片是发生在网络层,IP层会将数据进行分片传输。
分片-MTU(Maximum Transmission Unit,最大传输单元)
首先说一下MTU的概念。MTU是指数据链路层会对数据帧的大小有一个限制,这个限制就叫做MTU。
如果说IP层有一个数据要传,而这个数据的大小超出了MTU,那么IP层就会根据MTU将这个数据进行分片,然后一片一片的进行传输。
接收方接收到这些数据片之后,就会由接收方的IP层进行重装,形成一整个数据。
使用UDP很容易导致分片,而使用TCP一般会避免分片,这是因为TCP有自己的分段方式。
网络通信,尽一切可能避免IP的分片!为什么?因为负责IP分片的那台主机、路由器会花费很多CPU资源来处理分片,同时对应的接受端也需要花费很多资源来进行重组。
分段-MSS(Maxitum Segment Size,最大分段大小)
这个是TCP中的概念,指TCP数据包每次能够传输的最大数据分段,这个是根据当前网络的传输速率以及传输容量来定义的。在每次TCP传输前,发送方和接收方都会根据情况商定一个MSS,然后发送方就会将一整个数据流根据MSS分成多段,然后一段一段的传输。
总结:UDP不会分段,那就又IP来分片;TCP会自行分段,那么就不需要IP来分片了。