Назад | Перейти на главную страницу

Какой сетевой уровень занимают сообщения, полученные по TCP или через сокет?

Я пытаюсь понять уровни сетевой абстракции.

Думаю, я понимаю, что TCP находится на сетевом уровне, а HTTP - на уровне приложений. Таким образом, HTTP может быть реализован «поверх» TCP.

Однако я также могу программировать "сокеты", что например на сервере позволяет прослушивать и отвечать на определенные сокеты.

В такой ситуации я мог бы ответить XML на определенном сокете, не определяя ничего конкретно на уровне приложения. Я просто передаю XML как текст ASCII в виде байтового массива. Будет ли рассмотрен ответ XML не часть прикладного уровня или просто «специальный» протокол на прикладном уровне?

TCP находится на уровне ТРАНСПОРТА, уровень 4. HTTP находится на уровне ПРИЛОЖЕНИЯ, уровень 7.

7 уровней модели OSI

В модели OSI верхние уровни (5-7) и нижние уровни (1-4) имеют определенные роли. Часто верхние уровни объединяются в один уровень, и поэтому модель OSI становится Пятиуровневая модель TCP. Нижние уровни обеспечивают сетевое соединение и надежность. Верхний уровень (и) предоставляет прикладные услуги пользователям и программам. Все, что вы видите или касаетесь, как приложение или разработчик, находится где-то на верхних уровнях.

То, что вы называете «программированием сокетов», на самом деле ничем не отличается от того, что делает любое приложение, которое должно взаимодействовать в сети. Сокет не может быть открыт, если это не требуется приложением верхнего уровня. Он запрашивает у операционной системы создание определенного сетевого сокета и отправку или получение данных. Поэтому даже базовое приложение, которое вы создаете для отправки или получения данных через сокет, считается процессом верхнего уровня.

Спорный вопрос, работает ли ваше XML-приложение на уровне 5, 6 или 7, потому что это действительно зависит от того, что вы делаете с данными оттуда. В запрос Технически открытие сокета происходит на уровне 5 (затем сокет открывается и поддерживается на нижних уровнях). Но, в зависимости от того, какие данные вы отправляете или получаете, и что вы делаете с этими данными, вы начнете работать на уровне 6 или 7. Из-за этой неоднозначности гораздо проще объединить верхние уровни в один, потому что это действительно не имеет большого значения с точки зрения приложения.