Ответ
TCP (Transmission Control Protocol) — это один из основных протоколов транспортного уровня в стеке TCP/IP, предназначенный для надежной передачи данных.
Ключевые характеристики:
Надежность (Guaranteed Delivery): TCP гарантирует, что все отправленные данные будут доставлены получателю. Если пакет теряется в сети, TCP автоматически запрашивает его повторную отправку.
Установка соединения (Connection-Oriented): Перед началом обмена данными TCP устанавливает соединение между отправителем и получателем с помощью процесса, называемого трёхэтапным рукопожатием (three-way handshake: SYN, SYN-ACK, ACK).
Упорядоченная доставка (Ordered Data): TCP гарантирует, что данные будут доставлены получателю в том же порядке, в котором они были отправлены.
Контроль потока и перегрузки (Flow & Congestion Control): TCP регулирует скорость передачи данных, чтобы не перегрузить сеть или получателя, обеспечивая стабильность.
Когда используется TCP?
Там, где целостность и порядок данных критически важны:
- Веб-трафик (HTTP/HTTPS)
- Электронная почта (SMTP)
- Передача файлов (FTP)
- Подключения к базам данных
Пример установления TCP-соединения на Go:
package main
import (
"log"
"net"
)
func main() {
// Устанавливаем TCP-соединение с сервером example.com на порт 80
conn, err := net.Dial("tcp", "example.com:80")
if err != nil {
log.Fatal(err)
}
defer conn.Close()
// Отправляем простой HTTP-запрос
_, err = conn.Write([]byte("GET / HTTP/1.0rnrn"))
if err != nil {
log.Fatal(err)
}
// ... здесь можно читать ответ
}
В отличие от TCP, протокол UDP используется там, где скорость важнее надежности (например, в онлайн-играх, видеостриминге), так как он не гарантирует доставку и порядок пакетов.