Как TCP различает потерю сегмента из-за поврежденного сегмента на стороне получателя или из-за перегрузки?

У меня возникли сомнения, где я не могу найти, как отправитель различает потерю сегмента - потеряно ли оно из-за повреждения или потеряно из-за перегрузки в сети?

1 ответ

TCP может различать текущее состояние рассматриваемого соединения, предоставляя различные флаги в заголовке TCP.

Например, стандартизованное рукопожатие, наиболее часто встречающееся в TCP-соединении, выглядит следующим образом:

SYN,SYN-ACK,ACK

Также известное как трехстороннее рукопожатие. Если пакет будет потерян во время передачи, отправитель сможет осознать свою потребность в повторной отправке пакета, поскольку он НЕ получит ACK от получателя.

Также отправитель отправит "SYN" и будет ждать флага "ACK". Если он не появится, не беспокойтесь, отправитель повторно отправит SYN.

Означает ли это, что пакет взорвался, улетел в странном направлении или был поврежден, как вы говорите, TCP это не волнует. TCP заботится об одном и только об одном - вернуть флаг ACK от Получателя. Это связано с тем, что TCP по своей сути доверяет нижним уровням модели сетевого уровня TCP/IP, которые несут ответственность за обработку ошибок во время соединения. Ошибки чаще всего видны на уровне 2, и на этом уровне есть забавные алгоритмы для управления ошибками пакетов, такие как последовательность проверки кадров / прямая коррекция ошибок (и, помимо всего этого, IPv4 имеет свою собственную контрольную сумму заголовка, чтобы убедиться, что заголовок тоже не перепутался!).

Однако заторы - это совсем другая история. Существует множество алгоритмов, гарантирующих, что перегрузка не влияет на поток пакетов во время соединения. Двумя большими из них являются TCP Congestion Window и TCP Slow Start, которые работают в связке друг с другом. Я бы порекомендовал прочитать работу этих алогирм, поскольку это слишком большая тема, чтобы упоминать в этой теме, но, короче говоря, они позволяют соединению понять, перегружен ли поток, и имеют соответствующие ответы.

Страница в Википедии по этой теме - лучшее место, чтобы прочитать об этом.

Надеюсь, это проясняет ваш вопрос!

Другие вопросы по тегам