Niedawno opracowałem grę online dla wielu graczy i działa dobrze. Jest centralny serwer obsługujący połączenia TCP z klientami, a oni zarówno odbierają, jak i wysyłają dane.
Czy istnieje sposób sprawdzenia, czy wysłane dane nie zostały zmodyfikowane, zanim odbiornik je odczyta?
Czy połączenie TCP w jakiś sposób go obsługuje? Jeśli nie, jaki jest najlepszy sposób (bez pytania o kod) do jego wdrożenia?
Teraz wpadłem tych pomysłów:Jak zweryfikować integralność danych między połączeniem klient-serwer?
- Modyfikowanie danych wysyłanych dodając jakieś sprawdzenia wartości, takiej długości pakietów.
- Po otrzymaniu pakietu poproś serwer, aby wysłał go ponownie i sprawdzi, czy są one równe.
Szukałem powszechnie używanego rozwiązania, ale nie mogłem znaleźć wiele.
Szyfrowanie powinno być moją ostatnią opcją.
Edit
Dla prostej drodze do osiągnięcia tego celu:
Zmodyfikowana przez hakera lub przez szumy/błąd? TCP/IP zajmuje się tym drugim, a nie pierwszym. –
Czy mógłbyś wyjaśnić pokrótce, jak to się dzieje? – mastaH
Skopiuj dane i dodaj wartość mieszania do wysyłanych danych. Osoba na drugim końcu powinna sprawdzić, czy hasz pasuje do tej z danych, które otrzymuje. To powinno zająć się błędami szumów. – eboix