参考小林coding和这篇文章
说的已经非常详细了,这里记录一下我之前的疑惑以及想到的答案。
都说UDP不会粘包,如果一个UDP包很大,它在传输层不会拆分,但是它到了IP层,超过了MTU,它还是要拆分,那么拆分完,它是如何保证每个部分是属于哪个UDP包的(也就是粘包问题)
解决方法:首先UDP层传输层是不会分片的,无论数据包多大,所以它传入IP层的时候,是完整的数据,IP层会分片,它在分片的时候,会将此次分片的所有部分编号,给同一个数据包的部分添加统一标识,并且给这些部分分配不同的片偏移。并且标识是否为最后一片。
因此可以理解为IP层提供给传输层的都是完整的UDP。