Ответ
TCP (Transmission Control Protocol) — это протокол транспортного уровня стека TCP/IP, обеспечивающий надёжную, упорядоченную и проверенную на ошибки доставку потока байтов между приложениями, работающими на разных хостах.
Ключевые характеристики:
-
Надёжность и подтверждение доставки:
- Получатель отправляет отправителю подтверждения (ACK) о получении пакетов.
- Отправитель повторно передаёт пакеты, если не получил подтверждение в течение таймаута.
-
Упорядоченность данных:
- Пакеты данных (сегменты) нумеруются. Получатель собирает их в правильном порядке, даже если они пришли в сети в другом.
-
Контроль перегрузки и потока:
- Управление потоком: Механизм «скользящего окна» предотвращает переполнение буфера получателя.
- Управление перегрузкой: Алгоритмы (например, медленный старт, предотвращение перегрузки) динамически регулируют скорость отправки данных в зависимости от загруженности сети.
-
Установка соединения (handshake):
- Перед обменом данными происходит трёхэтапное рукопожатие (SYN, SYN-ACK, ACK) для установки виртуального канала.
Пример создания TCP-соединения на Java:
Сервер:
// Сервер слушает порт 8080
try (ServerSocket serverSocket = new ServerSocket(8080)) {
System.out.println("Server listening on port 8080...");
// accept() блокируется, пока клиент не подключится
Socket clientSocket = serverSocket.accept();
// Получение входного потока от клиента
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
String message = in.readLine();
System.out.println("Received: " + message);
}
Клиент:
// Клиент подключается к серверу на localhost:8080
try (Socket socket = new Socket("localhost", 8080)) {
// Отправка данных серверу
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
out.println("Hello from TCP client!");
}
Типичное применение: Веб-браузеры (HTTP/HTTPS), передача файлов (FTP, SFTP), электронная почта (SMTP, IMAP), удалённый доступ (SSH).