Nem o TCP nem o UDP podem garantir que os pacotes cheguem ao seu destino em sequência, porque ambos usam pacotes IP, e o IP não faz nenhum sequenciamento.
Com o UDP, existem dois problemas separados. Uma é a ordem dos pacotes que compõem um único datagrama. Você não pode controlar isso, e todas as implementações que eu conheço as enviarão em ordem.
No entanto, você pode enviar seus datagramas na ordem que desejar. Os fragmentos individuais que compõem um datagrama serão reordenados pelo receptor para reconstruir o datagrama original. Os datagramas recebidos fora de ordem (não na ordem em que foram enviados) serão passados para o aplicativo na ordem em que foram recebidos. Um datagrama é considerado recebido quando o último fragmento necessário para reconstruí-lo é recebido. Os datagramas serão transmitidos para o aplicativo quando forem concluídos, independentemente da ordem em que foram enviados.
Com o TCP, a implementação controla a formação de pacotes. Você não pode realmente controlar isso. Todas as implementações que conheço as enviarão em ordem. Eles são obrigados a reordená-los se forem recebidos fora de ordem.