Я пытаюсь понять трехстороннее рукопожатие, но плохо понимаю, как это применимо к реальному сценарию. Например, если я использую веб-браузер, такой как Mozilla Firefox, и захожу на сайт www.superuser.com, я считаю, что происходит следующее
Я запускаю Firefox и в качестве приложения назначается случайный идентификатор процесса. Предполагая, что я запускаю с пустой страницы, это все, что происходит.
Теперь, если я захожу на сайт www.superuser.com, мой компьютер инициирует контакт с сервером, отправляя пакет SYN.
Сервер отвечает запросом, отправляя пакет ACK вместе со своим собственным пакетом SYN.
Мой компьютер отвечает пакетом ACK, и соединение установлено.
Теперь путаница,
Что именно означает установленное? Если бы мне пришлось, например, перейти на другую страницу на www.superuser.com, повторяется ли трехстороннее рукопожатие?
Когда мой компьютер отправляет флаг FIN и когда сервер отвечает своим собственным пакетом FIN?
Я понимаю, что приложение может иметь несколько потоков при отправке запроса с сервера, означает ли это, что каждый поток имеет свое собственное трехстороннее рукопожатие? Являются ли они независимыми друг от друга?
Что означают различные состояния FIN_WAIT?
Может ли сервер завершить соединение, не будучи инициированным клиентом, или он всегда должен инициироваться клиентом?