Receiving and merging the file fragments over the CAN message

I’m using the EPS32 TWI library for delivering the CAN message
I made a simple code for streaming & transferring a file over 8 bytes CAN message via the CAN Bus,

my code in c is as follows, however, my question is how to merge the fragmented file without any sequence controller? how do I check the CRC of the receiving file? since the CAN standard has its own acknowledgment, would that be sufficient for such huge streaming of a file?

typedef struct {
    union {
        struct {
            
            uint32_t extd: 1;          
            uint32_t rtr: 1;           
            uint32_t ss: 1;             
            uint32_t self: 1;            
            uint32_t dlc_non_comp: 1;   
            uint32_t reserved: 27;      
        };
        
        uint32_t flags;                 
    };
    uint32_t identifier;                
    uint8_t data_length_code;            
    uint8_t data[TWAI_FRAME_MAX_DLC];     
} CAN_message_t;

#define destinationNode 20000x

CAN_message_t msg;
              msg.identifier=destinationNode;
              msg.data_length_code=8

File date = file.open("/data.bin");
uint8_t *p=date;
 while(p){
    char buffer[8];
    memcpy(buffer, (p+8), 8);
    CAN_transmit(&msg);
    p+=8; 
 }
```,