С какими сетевыми протоколами вы работали на практике?

«С какими сетевыми протоколами вы работали на практике?» — вопрос из категории Сети, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Работал со следующими ключевыми сетевыми протоколами:

Прикладной уровень (Application Layer):

  • HTTP/HTTPS: Разработка RESTful API, клиентов для веб-сервисов, работа с заголовками, методами, кодами состояния.
  • WebSocket: Для реализации двусторонней реальном времени связи в приложениях.
  • FTP/SFTP: Автоматизация передачи файлов на удалённые серверы.

Транспортный уровень (Transport Layer):

  • TCP: Надёжная потоковая передача данных (сокетное программирование, клиент-серверные приложения).
  • UDP: Разработка функций, где важна скорость, а не гарантия доставки (например, телеметрия, голосовая связь).

Для работы с базами данных:

  • Использовал протоколы СУБД через JDBC (для MySQL, PostgreSQL) и специфичные драйверы.

Пример HTTP-запроса на Java с использованием HttpURLConnection:

import java.net.HttpURLConnection;
import java.net.URL;
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class HttpClientExample {
    public static String sendGetRequest(String urlString) throws Exception {
        URL url = new URL(urlString);
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setRequestMethod("GET");
        connection.setConnectTimeout(5000);
        connection.setReadTimeout(5000);

        int responseCode = connection.getResponseCode();
        System.out.println("Response Code: " + responseCode);

        try (BufferedReader in = new BufferedReader(
                new InputStreamReader(connection.getInputStream()))) {
            String inputLine;
            StringBuilder response = new StringBuilder();
            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }
            return response.toString();
        }
    }
}