Какие знаешь инструменты для проверки TCP соединения

«Какие знаешь инструменты для проверки TCP соединения» — вопрос из категории Сети, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Go для проверки TCP соединения можно использовать стандартный пакет net. Основные подходы:

  1. net.DialTimeout() - проверка соединения с таймаутом:
conn, err := net.DialTimeout("tcp", "example.com:80", 3*time.Second)
if err != nil {
    // обработка ошибки
}
defer conn.Close()
  1. net.Dial() - базовый вариант без таймаута:
conn, err := net.Dial("tcp", "127.0.0.1:8080")
  1. Пинг через TCP (не путать с ICMP ping):
_, err := net.Dial("tcp", fmt.Sprintf("%s:%d", host, port))
  1. Пакет net/http для HTTP-сервисов:
client := http.Client{Timeout: 5 * time.Second}
_, err := client.Get("http://example.com")

Для более сложных проверок можно использовать:

  • net.Conn с установкой дедлайнов
  • Специализированные утилиты типа nc (netcat) или telnet