내부 네트워크를 통해 2 개의 Linux OS간에 가변 크기의 패킷을 보내려고합니다. 패킷은 가변 크기이며 길이와 CRC는 패킷과 함께 전송되는 헤더에 표시됩니다. 나는이 한 고유 limitation of TCP checksumsTCP/IP를 사용하여 네트워크를 통해 가변 크기의 패킷을 전송합니다.
문제를 극복하기 위해 응용 프로그램 계층에서 CRC를 사용하고
struct hdr {
uint32 crc;
uint32 dataSize;
void *data;
};
을 대략 같은 - 뭔가의 dataSize
필드 자체가 손상되는 기회가 존재하는 경우 , 나는 다음 패킷이 어디에서 시작하는지 모른다. rec에서 소켓 버퍼를 읽을 때 나는이 패킷을 서로 옆에 읽었다. 그래서 dataSize
은 다음 패킷을 올바르게 얻을 수있는 유일한 방법입니다. CRC를 불일치가 발생하면 내가 가지고있는
일부 아이디어는 연결을 다시 시작
- 대입니다.
- 그런 패킷을 고정 크기의 하나의 큰 패킷으로 집계하고 CRC 오류가 발견되면 큰 패킷을 버립니다. 큰 패킷은 우리가 잃을 것을 확인하는 것입니다.
이러한 가변 크기 패킷에 대한 다른 아이디어는 없습니까?