Ответ
Разработчик чаще всего работает с протоколами прикладного уровня (Application Layer), которые работают поверх TCP/IP и определяют формат и семантику обмена данными между приложениями.
Основные протоколы:
| Протокол | Порт (по умолчанию) | Назначение | Ключевые особенности |
|---|---|---|---|
| HTTP/HTTPS | 80 / 443 | Веб-коммуникации | Статус-коды, методы (GET, POST), заголовки, основа REST API. |
| WebSocket | 80 / 443 | Двусторонняя связь в реальном времени | Устанавливается поверх HTTP, позволяет persistent-соединение. |
| gRPC | Любой | Высокопроизводительный RPC | Использует HTTP/2 и Protocol Buffers (бинарный формат). |
| AMQP (RabbitMQ) | 5672 | Асинхронная передача сообщений | Реализация брокеров сообщений, гарантированная доставка. |
| SMTP / IMAP / POP3 | 25 / 143 / 110 | Отправка и получение email | Работа с почтовыми сервисами. |
| DNS | 53 | Преобразование доменных имен в IP-адреса | Обычно через системные вызовы или библиотеки. |
Пример работы с HTTP-протоколом через Java HttpClient (Java 11+):
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.example.com/data"))
.header("Content-Type", "application/json")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println("Status: " + response.statusCode());
System.out.println("Body: " + response.body()); Ответ 18+ 🔞
Вот же ж, ну и тема! Сидишь ты такой, кодишь, а тут на тебе — протоколы, блядь. Как будто мало своих проблем, так ещё и эти прикладные штуки, которые поверх TCP/IP болтаются, определяют, как твои софтины друг с другом болтать будут. Ну, в общем, без них нихуя, так что давай разбираться, что к чему.
Смотри, вот тебе основная банда, с которой разработчику чаще всего приходится иметь дело. Запоминай, а то потом будешь как Герасим — «Му-му» говорить, а нихуя не понимать.
| Протокол | Порт (стандартный) | Зачем нужен | Что в нём особенного, блядь |
|---|---|---|---|
| HTTP/HTTPS | 80 / 443 | Для веба, для всего | Статус-коды (типа 404 — «пошёл нахуй, страницы нет»), методы (GET, POST), заголовки. Основа для REST API, без него нихуя. |
| WebSocket | 80 / 443 | Двустороннее общение в реальном времени | Поднимается поверх HTTP, как надёжный мост, и держит соединение, а не дрочит запросами туда-сюда. |
| gRPC | Любой | Высокопроизводительный удалённый вызов процедур | Юзает HTTP/2 и Protocol Buffers — всё бинарное, быстрое, для серьёзных пацанов. |
| AMQP (типа RabbitMQ) | 5672 | Асинхронная отправка сообщений | Это для брокеров, чтоб сообщения гарантированно доходили, даже если один сервис лег спать. |
| SMTP / IMAP / POP3 | 25 / 143 / 110 | Для почты, чтоб письма летали | Отправка, получение — вся эта email-движуха. |
| DNS | 53 | Превращает «yandex.ru» в цифры (IP) | Обычно через системные вызовы юзается, самому редко приходится вникать, но знать надо. |
А теперь, чтобы не быть просто болтуном, вот тебе кусок кода на Java, как с HTTP работать через новый HttpClient (Java 11+). Смотри, не запутайся:
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.example.com/data"))
.header("Content-Type", "application/json")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println("Status: " + response.statusCode());
System.out.println("Body: " + response.body());
Вот и всё, ебать мои старые костыли! Отправил запрос, получил ответ. Главное — статус-код посмотреть, а то придёт тебе 500, а ты будешь думать, что всё охуенно. Так что держи ухо востро и не путай порты, а то выйдешь в интернет через почтовый ящик, блядь.