Pull to refresh

Comments 6

Интересно, как это клиент вместо сервера стал принимать свои же пакеты? Слетела исходящая маршрутизация, в результате чего маршрут по умолчанию оказался через lo?
К сожалению я потеряла те скриншоты и не смогу показать их… постараюсь восстановить старую версию сервера из гитхаба и выложить сюда ссылку. Как я поняла такая ошибка не единична (как и на форумах об этом говорили, так и наши учителя/сис админ), и так как я не понимаю с чем она связанна и почему при падении клиента не рвалось соединение, а получилось зацикливание — пришлось делать новый протокол
Возможно вы простое не умеете готовить TCP/IP. Не являюсь специалистом, но некоторые утверждения касательно TCP вызывают сильные сомнения, например «шифрование» и «двойное подтверждение».
Что бы при падении клиента рвалось соединение, необходимо вручную отслеживать таймауты и сетевую активность, в ином случае сервер и клиент никогда не узнают, что соединение развалилось.
В гугле для решения этих проблем придумали QUIC

А в остальном да, много ошибок: никакого шифрования в TCP нет; в UDP тоже есть контрольные суммы для проверки целостности, просто нет автоматического ретрансмита битых пакетов. Двойное подтверждение — что имелось в виду непонятно. На TCP-пакет в ответ приходит один ACK.
И сервер отправляет сообщение что этот аск пришёл
Не отправляет. Three-Way-Handshake идет только при установлении соединения. Изучайте протокол TCP.

Более того, ACK приходит не на каждый пакет, а на окно (некое количество неподтвержденных пакетов), которое меняется динамически в зависимости от количества потерь в канале. За это отвечают congestion-алгоритмы.
Sign up to leave a comment.

Articles