Что делает SSH таким устойчивым к проблемам с подключением?

Что делает SSH таким устойчивым к проблемам с подключением?

Я перезагрузил WiFi-роутер офиса, и, как и ожидалось, мой ноутбук отключился. После повторного подключения я заметил, что мой сеанс SSH так и не был прерван.

Что в протоколе SSH делает это возможным? Или это больше связано с TCP/IP?

решение1

По умолчанию SSH имеет довольно большие тайм-ауты, по умолчанию установлено время ожидания TCP, а по умолчанию время ожидания TCP также велико.

Любая форма keepalive фактически заставит его разорвать соединение раньше, поскольку, когда клиент/сервер увидит, что keepalive не доходят до цели, он разорвет соединение.

Таким образом, пока ваш IP-адрес остается прежним, SSH-соединение может сохраняться очень долго, если не происходит ничего, что могло бы заполнить буферы отправки/приема.

решение2

Я бы сказал, что это TCP. Пока адрес тот же самый, все, что было отправлено, пока сеть была недоступна, будет рассматриваться как потерянный пакет и отправлено повторно. Пока сеть не была недоступна слишком долго, клиент и сервер наверстают упущенное. Если бы вообще ничего не было отправлено с любого конца, пока сеть была недоступна, то ни клиент, ни сервер даже не узнали бы о наличии проблемы.

Однако в последнем случае любой протокол в сети с коммутацией пакетов вел бы себя точно так же, поэтому утверждение, что это из-за SSH или из-за TCP, не является полным ответом.

Связанный контент