Два утверждения «соединение может быть установлено» и «я могу продолжить то, что я намереваюсь сделать» далеко не эквивалентны, и простой тест TCP-соединения, такой как Тест-NetConnection
совсем не проверяет то же самое, что и фактическое git клон
.
Возможность открыть TCP-соединение с портом не означает доступа к службе, прослушивающей этот порт. Существует много этапов после первоначального подключения, на которых может произойти сбой, например согласование TLS, аутентификация, авторизация или обмен протоколами на уровне приложения.
Кроме того, ограничения брандмауэра — не единственная возможная причина сбоя соединения TCP, а сбои соединения TCP — не единственное возможное последствие ограничений брандмауэра. Итак, ваши заявления:
Если я не могу получить доступ к сайту через определенный порт, это означает, что мне нужно изменить брандмауэр, прежде чем продолжить.
и
В противном случае, если я смогу добраться до сайта, я смогу продолжить то, что намереваюсь сделать.
оба неправы.
Это означает, что вместо того, чтобы задаваться вопросом, почему ваш Тест-NetConnection
test не обнаружил проблему, которая позже привела к сбою вашего доступа к GitHub, вам следует проанализировать, в чем на самом деле была эта проблема, а затем оценить, принесет ли обнаружение этой конкретной проблемы какую-либо пользу заранее. Если ответ да, вы можете разработать тест, чтобы сделать именно это.
На практике часто наиболее эффективным способом действий является простое выполнение намеченной операции без каких-либо предварительных тестов и обработка любых ошибок по мере их возникновения. Заблаговременная проверка на наличие проблем имеет смысл только в том случае, если они могут быть устранены автоматически или если попытка и неудача фактической операции сопряжены со значительными затратами или риском.
В частности, операции GitHub терпят неудачу довольно изящно и с достаточно четким указанием причины сбоя, поэтому я не вижу прямой выгоды в том, чтобы сначала протестировать соединение, а не просто попробовать выполнить предполагаемую операцию напрямую.