Подтвердить что ты не робот

Http.createserver vs net.createserver в node.js

У меня возникли проблемы с пониманием разницы между net.createserver и http.createserver в node.js.

Я прочитал документацию для обоих методов, расположенных по этим двум URL-адресам https://nodejs.org/api/net.html#/net_net, https://nodejs.org/api/http.html#/http_class_http_server.

Я понимаю, что http.createserver создает http-сервер. Однако в документации указано, что net.createserver создает tcp-сервер. Я понимаю, что tcp - это протокол передачи, на котором находится http, и что http-серверы настроены на чтение заголовков HTTP-запросов. Я также хорошо понимаю концепцию даже излучателей в node.js. Тем не менее, я не понимаю это понятие сервера tcp и почему его можно было бы сделать в node.js. В контексте я кодирую пример приложения чата в книге "node.js in action".

4b9b3361

Ответ 1

http.createServer() настраивает сервер, который обрабатывает HTTP-протокол, который действительно передается через tcp. net.createServer() создает сервер, который просто понимает, когда произошло TCP-соединение, и данные были переданы и т.д., но ничего не знает о том, был ли получен действительный HTTP-запрос и т.д.

Если вы пишете веб-сервер, пользуйтесь http.createServer() over net.createServer(), так как это сэкономит вам много работы. Если вы пишете какой-либо другой сервер, не используйте http.createServer().

Ответ 2

Я мало знаю о Node.js, но я знаю кое-что о сетях. HTTP - это протокол, который работает на 7-м (Application) уровне модели OSI. TCP - это протокол, который работает на 4-м (транспортном) уровне модели OSI. Как вы сказали, HTTP работает поверх TCP. Возможность создания HTTP-сервера с помощью http.createServer() заключается в том, что вам не нужно реализовывать его самостоятельно, используя net.createServer(). Протокол TCP может использоваться множеством приложений, вы можете создать свой собственный или реализовать какой-то другой протокол, кроме HTTP, например: FTP, DNS, SMTP, Telnet и многое другое.