Каковы ключевые характеристики и назначение протокола TCP?

Ответ

TCP (Transmission Control Protocol) — это один из основных протоколов транспортного уровня в стеке TCP/IP, предназначенный для надежной передачи данных.

Ключевые характеристики:


  1. Надежность (Guaranteed Delivery): TCP гарантирует, что все отправленные данные будут доставлены получателю. Если пакет теряется в сети, TCP автоматически запрашивает его повторную отправку.



  2. Установка соединения (Connection-Oriented): Перед началом обмена данными TCP устанавливает соединение между отправителем и получателем с помощью процесса, называемого трёхэтапным рукопожатием (three-way handshake: SYN, SYN-ACK, ACK).



  3. Упорядоченная доставка (Ordered Data): TCP гарантирует, что данные будут доставлены получателю в том же порядке, в котором они были отправлены.



  4. Контроль потока и перегрузки (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 используется там, где скорость важнее надежности (например, в онлайн-играх, видеостриминге), так как он не гарантирует доставку и порядок пакетов.