Node.js学习笔记-03

news2024/11/27 18:45:32

七、网络编程

1. 构建 TCP 服务

在这里插入图片描述
TCP 是面向连接的协议,显著特征 在传输之前需要3次握手形成会话。
客户端 ——请求连接——> 服务器端 ——响应——> 客户端 ——开始传输——> 服务器端。

2. 构建 UDP 服务

3. 构建 HTTP 服务

http模块

在node中HTTP服务继承自TCP服务器(net模块),它能够与多个客户端保持连接,由于其采用事件驱动的形式,并不为每一个连接创建额外的线程或进程,保持很低的内存占用,所以能实现高并发。
http模块请求流程

4. 构建 WebSocket 服务

WebSocket协议主要分为两个部分:握手 和 数据传输。
(握手部分由HTTP完成,握手顺利完成后当前连接将不再进行HTTP的交互,而是开始WebSocket的数据帧协议)

5. 网络服务与安全

Node在网络安全上提供了3个模块,分别为 crypto、tls、https。

TLS / SSL

1、密钥

TLS / SSL 是一对公钥/私钥 的结构,非对称结构。
客户端和服务端交换密钥
Node 在底层采用的是 openssl 实现TLS/SSL 。

2、数字证书

TLS 服务

HTTPS 服务

6. 总结

Node基于事件驱动和非阻塞设计,在分布式环境中尤其能发挥出它的特长,基于事件驱动可以实现与大量的客户端进行连接,非阻塞设计则让它可以更好地提升网络的响应吞吐。Node提供了相对底层的网络调用,以及基于事件的编接口,使得开发者在这些模块上十分轻松地构建网络应用。

八、构建web应用(重点)

8.1 基础功能

// 经典案例 Hello World
var http = require('http')
http.createServer( function (req , res){
    res.writeHead(200,{'Content-Type':'text/plain'});
    res.end('Hello World\n');
} ).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/')
// 使用 node .\helloWorld.js  运行服务,输入地址即可访问。

要实现更丰富的需求,一切都从如下这个函数展开:

function (req , res){
    res.writeHead(200,{'Content-Type':'text/plain'});
    res.end();
}

8.1.1 请求方法

在Web应用中最常见的请求方法是 GET 和 POST,除此之外,还有HEAD、DELETE、PUT、CONNECT等方法。
请求方法存在于报文的第一行的第一个单词,通常大写。如下为一个报文头的示例:
报文头为GET的示例

8.1.2 路径解析

路径部分存在于报文的第一行的第二部分,参考上图。

8.1.3 查询字符串

跟在路径后面的字符串就是查询字符串(如 ?name=nb)

Node提供了 querystring模块用于处理这部分数据:

var querystring = require('querystring');
var query = querystring.parse( url.parse(req.url).query ); 
// 更简介的方法是 给 url.parse()传递第二个参数,如下
var query2 = url.parse(req.url, true).query; 
// 它会将 name=nb&age=120 解析为一个JSON对象 {name:'nb',age:120}
// 如果键多次出现,那么它的值将会是一个数组 name=nb1&name=nb2 => {name:['nb1','nb2']}

8.1.4 Cookie

HTTP是一个无状态的协议,而现实业务中却是需要一定的状态的,否者无法区分用户之间的身份。如何标识和认证一个用户,最早的方案就是Cookie。

Cookie的处理分为如下几步:服务器向客户端发送Cookie => 浏览器将Cookie保存 => 之后每次请求都会将Cookie发向服务器;

HTTP_Parser 会将所有的报文字段解析到 req.headers上,那么 Cookie 就是 req.headers.cookie
根据规范中定义 Cookie 值的格式是 key=value;key2=value2 形式的。

8.1.5 Session

问题1:Cookie可能会体积过大;问题2:Cookie可以在前后端进行修改,Cookie对敏感数据的保护可以说是无效的。Session 应运而生。

Session的数据只保留在服务器端,客户端无法修改。这样数据安全性得到一定保障,数据也无需在协议中每次都被传递。

虽然在服务器端存储数据十分方便,如何将每个客户和服务器中的数据一一对应呢?这里有两种常见的实现方式:

  1. 基于 Cookie 来实现用户和数据的映射;P195
  2. 通过查询字符串来实现浏览器端和服务器端数据的对应;P195(风险大于1)
1.Session 与内存
  • Session 弊端:
  • 增加内存消耗,会引起性能问题;
  • 我们为了利用 多核CPU启动多个进程时,用户请求的连接将可能随意分配到各个进程中,Node的进程与进程之间是不能直接共享内存的,用户的Session可能会引起错乱。
  • 为解决性能问题和Session数据无法跨进程共享的问题,常用的方案是将Session集中化,如常用的工具 Redis、Memcached等。P198
  • 尽管采用第三方缓存会引起网络访问,理论上比本地慢,但还是利大于弊。
2.Session 与安全

主要是指如何让这个口令更加安全。

  1. 加密 / 解密
  2. 将客户端的某些独有信息与口令作为原始值然后签名。这样攻击者一旦不在原始的客户端上进行访问就会导致签名失败。

8.1.6 缓存

如何节省不必要的传输,提高性能。

8.1.7 Basic认证

P204 --不太重要

8.2 数据上传

8.3 路由解析

8.4 中间件

8.5 页面渲染

8.6 总结

  • 本章涉及的内容较为丰富,在Web应用的整个构建过程中,从处理请求到响应请求的整个过程都有原理性阐述,整理本章细节就可以完成一个功能完备的Web开发框架。过去的各种Web技术,随着框架和库的成型,开发者往往迷糊地知道应用框架和库,却不知道细节的实现,这好比没有地图却在野地里行进。本章的内容希望能为Node开发者带来地图似的启发,在开发Web应用时能够心有轮廓,明了细微。
  • 现在知名和成熟的Web框架有Connect、Express等,本章中的内容在这些框架中都有实现因为行文的原因,本章中的代码实现得较为粗糙,实际使用请使用这些成熟的框架。
    P245

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/858508.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电脑数据怎么加密?电脑数据加密软件有哪些?

在生活和工作中,我们总离不开电脑,而电脑中那些重要的数据,需要我们加密保护。那么电脑数据该怎么加密呢?电脑数据加密软件又有哪些呢?下面我们就来了解一下吧。 电脑数据加密软件 一般来说,常见的电脑加密…

Drools用户手册翻译——第四章 Drools规则引擎(十四)复杂事件处理(CEP)滑动窗口和内存管理

甩锅声明:本人英语一般,翻译只是为了做个笔记,所以有翻译错误的地方,错就错了,如果你想给我纠正,就给我留言,我会改过来,如果懒得理我,就直接划过即可。 目录 时间或长…

详解配置交换机多生成树MSTP+VRRP 的典型组网

详解配置交换机多生成树MSTPVRRP 的典型组网 组网: 1. 这是一个由三台交换机组成的倒三角型二层交换网络;网络中有4个VLAN:10、20、30、40;接口编号如图所示;SW3为接入层交换机,SW1、SW2为汇聚层交换机&am…

论文阅读 - Neutral bots probe political bias on social media

论文链接:Neutral bots probe political bias on social media | EndNote Click 试图遏制滥用行为和错误信息的社交媒体平台被指责存在政治偏见。我们部署中立的社交机器人,它们开始关注 Twitter 上的不同新闻源,并跟踪它们以探究平台机制与用…

linux自动程序

嵌入式linux下有软件需要自启动,只需要在/etc/init.d/rcS末尾添加所要启动的程序即可,开机就会自动运行 vi /etc/init.d/rcS在文件末尾添加 例:

Unity-Linux部署WebGL项目MIME类型添加

在以往的文章中有提到过使用IIS部署WebGL添加MIME类型使WebGL项目在浏览器中能够正常加载,那么如果咱们做的是商业项目,往往是需要部署在学校或者云服务器上面的,大部分情况下如果项目有接口或者后台管理系统,后台基本都会使用Lin…

对p-n结/AlGaN/GaN HEMTs中n-GaN掺杂浓度对栅极可靠性的影响

目录 第35届功率半导体器件与集成电路国际研讨会论文集2023年5月28日至6月1日,中国香港南方科技大学电气电子工程系,深圳标题:Impacts of n-GaN Doping Concentration on Gate Reliability of p-n Junction/AlGaN/GaN HEMTs摘要信息解释研究了…

MySQL基本语法总结

创建数据库 create database 数据库名; -- 字符集要看mysql 版本, 5.7 Latin, 8.0 utf8 create database 数据库名 character set ‘utf8’;-- 指定数据库的字符集 create database IF NOT EXISTS 数据库名 character se…

k8s-----集群调度

目录 一:调度约束 二:Pod 启动创建过程 三:k8s调度过程 1、Predicate 有一系列的常见的算法 2、常见优先级选项 3、指定调度节点 (1)nodeName指定 (2)nodeSelector指定 四:亲和…

数字工厂管理系统能给企业管理者带来哪些好处

数字工厂管理系统是现代企业管理的神器,它能够以数字化方式管理企业的生产过程,实现生产过程的自动化、智能化和可视化。数字工厂管理系统解决方案不仅提高了生产效率,还给企业管理者带来了很多好处。下面就让我们来详细了解一下。 首先&…

【Android】MVC,MVP,MVVM三种架构模式的区别

MVC 传统的代码架构模式,仅仅是对代码进行了分层,其中的C代表Controller,控制的意思 将代码划分为数据层,视图层,控制层,三层之间可以任意交互 MVP MVP是在MVC基础上改进而来的一种架构,其中的…

2023年10款常用的Mac工具合集

Typora Typora 是一款由 Abner Lee 开发的轻量级 Markdown 编辑器,与其他 Markdown 编辑器不同的是,Typora 没有采用源代码和预览双栏显示的方式,而是采用所见即所得的编辑方式,实现了即时预览的功能,但也可切换至源代…

帆软设计器:报表超链接“删除”后仍会打开链接的问题

这个问题是在使用帆软报表设计器(版本 10.0)发现的。当直接在决策报表的某个报表下点击 “特效-超级链接” 、并去掉了里面的超链接之后,刷新报表还是鼠标悬浮上去就是一个链接的样子。 找到报表所在单元格 “单元格元素” 的“特效” 配置&a…

【操作系统】操作系统知识点总结(秋招篇)

文章目录 前言操作系统主要做了哪些工作?进程 线程 协程之间的区别进程的组成部分介绍一下进程的PCB讲一下进程的五态 以及它们的状态转移用户态和内核态是什么?进程在用户态和内核态之间是如何切换的讲一下进程之间的通信方式讲一下进程调度的三个层次介…

广州华锐互动:VR3D课程在线教育平台为职业院校提供沉浸式的虚拟现实学习体验

随着科技的飞速发展,虚拟现实(VR)和增强现实(AR)技术已经逐渐渗透到我们生活的各个领域。其中,VR3D课程在线教育平台作为一种新兴的教育方式,正在逐渐改变我们的学习方式和体验。本文将详细介绍VR3D课程在线教育平台的应用前景及特点。 VR3D课…

matplotlib 笔记 plt.grid

用于添加网格线 主要参数 visible 布尔值,True表示画网格 which表示要显示的刻度线类型,可以是 major(主刻度)或 minor(次刻度),或者同时显示(both)alpha 透明度 …

【Linux的开胃小菜】常用的RPM软件包与YUM仓库包管理器使用

一、系统初始化进程 systemd与System V init的区别以及作用: System V init运行级别systemd目标名称systemd目标作用0poweroff.target关机1rescue.target单用户模式2multi-user.target多用户的文本界面3multi-user.target多用户的文本界面4multi-user.target多用户…

数字万用表测量基础知识--使用DMM测量电阻

概览 DMM(即数字万用表)是一种电气测试和测量仪器,可测量直流和交流信号的电压、电流和电阻。本文介绍如何正确使用和理解数字万用表(DMM)。 使用DMM测量电阻 电阻测量通常用于测量电阻器或其他组件的电阻,如传感器或扬声器。电…

【腾讯云 Cloud Studio 实战训练营】基于Cloud Studio构建React完成点餐H5页面

前言 【腾讯云 Cloud Studio 实战训练营】基于Cloud Studio 构建React完成点餐H5页面一、Cloud Studio介绍1.1 Cloud Studio 是什么1.2 相关链接1.3 登录注册 二、实战练习2.1 初始化工作空间2.2 开发一个简版的点餐系统页面1. 安装 antd-mobile2. 安装 less 和 less-loader3. …

新能源汽车充电桩控制主板有哪些特点

你是否好奇,新能源汽车充电桩控制主板是什么样子的?它有哪些特点?接下来,我们将为您揭秘。 控制主板是充电桩的大脑,它决定了充电桩的性能和稳定性。睿讯微充电桩主板拥有良好的整机抗干扰能力,能够有效地防止外部信号和电磁波的…