Я создаю серверное приложение UDP на C #. Я столкнулся с проблемой контрольной суммы пакета.
Как вы, вероятно, знаете, каждый пакет должен иметь простой способ сообщить получателю, что данные пакета не повреждены.
Теперь UDP уже имеет 2-байтовую контрольную сумму как часть заголовка, что необязательно, по крайней мере, в мире IPv4. Альтернативный метод состоит в том, чтобы иметь пользовательскую контрольную сумму как часть раздела данных в каждом пакете и проверять ее на получателе.
Мой вопрос сводится к следующему: лучше ли полагаться на (необязательную) контрольную сумму в заголовке UDP-пакета или создать собственную контрольную сумму как часть раздела данных пакета?
Возможно, правильный ответ зависит от обстоятельств (как обычно), поэтому одним из обстоятельств здесь является то, что, хотя код написан и разработан в .NET для Windows, он может должен работать в независимой от платформы платформе. Mono.NET, поэтому возможное решение должно быть совместимо с другими платформами. Я полагаю, что пользовательский алгоритм контрольной суммы будет легко переносимым, но я не очень уверен насчет первого.
Есть мысли?
Также приветствуются крики о проверке контрольных сумм в целом.