Когда вы собираетесь куда-нибудь, используя браузер и указав порт, вы пытаетесь установить (TCP) соединение с этим портом.
Когда вы запускаете службу (например, веб-сервер), она запускается на определенном порту. Если вы попытаетесь подключиться к машине, и с этим портом не будет запущена какая-либо программа (правильный порт привязан к порту), или он будет защищен брандмауэром, то произойдет тайм-аут.
Когда вы заходили в Google через порт 8000, на нем не было запущено ни одной службы, поэтому время ожидания истекло. (На самом деле он пытается подключиться несколько раз, если в первые несколько раз произошла ошибка, чтобы сделать его более надежным)
Когда вы зашли в Google через порт 443, вы успешно установили соединение, потому что 443 обычно используется для HTTPS, то есть для безопасных соединений. Поскольку вы не инициировали безопасное соединение в соответствии с протоколом HTTPS, Chrome и Firefox работали таким образом.
Расширенный ответ
При установлении соединения по TCP происходит "трехстороннее рукопожатие" - клиент отправляет пакет "SYN" на сервер. Сервер получает это, и, предполагая, что программа запущена, он отправляет обратно подтверждение «SYN-ACK», затем клиент отправляет пакет "ACK" на сервер - в это время системы устанавливают соединение.
В случае подключения к порту 8000 клиент не получает ответ на пакет SYN, поэтому он пытается несколько раз, а затем сдается и время ожидания.
В случае подключения к порту 443, соединение устанавливается на уровне TCP. В настоящее время сервер ожидает согласования SSL-соединения для обеспечения безопасности (поскольку он настроен для этого через порт 443). Вы не знаете, как говорить по SSL, поэтому это не удалось.
Бонусные очки
Если у вас установлен TELNET - большинство систем делают это, вы можете притвориться браузером (или почтовым клиентом, или кем-то еще, если вы знаете протокол), выполнив следующие действия.
1. type "telnet www.google.com 80"
(wait for a few seconds)
2. Type GET / HTTP/1.1<enter>
host www.google.com<enter><enter>
На шаге 1 говорится, что Telnet создает TCP-соединение с сервером Googles на порту 80, а на шаге 2 указывается, что получить (GET / означает получить корневой файл), а в строке "host" указывается, к какому серверу вы хотите подключиться - вы Это необходимо, потому что многие сайты используют один сервер - вторая строка сообщает серверу, какой сайт. Вы дважды нажимаете клавишу ввода, чтобы сказать, что вы закончили отправку заголовка, а затем получаете ответ HTTP. (Если бы вы были веб-браузером, вы бы отправили гораздо больше информации, включая сведения о браузере, файлы cookie и т.д., Но в целях пояснения мы этого не делали.)