初识Node(二)node与服务器应用

一.客户端与服务端

客户端的工作:

1.在浏览器地址栏输入url 点击回车

2.客户端向服务器发送了请求

3.接受html代码,渲染为网页

服务端的工作:

1.接受用户的请求,分析用户的url,清楚客户端需要的资源

2.调用服务端的程序,处理请求,找到用户需要的资源

3.创建数据库,数据库内的增删改查,将数据库操作的结果返回应用程序

4.服务器端将操作结果转化为html代码发送给客户端

二.应用软件

1.Apache(音译为【阿帕奇】)是世界使用第一的web服务器,

2.Nginx是一款【轻量级】的web服务器

3.MySQL 是一个【关系型数据库管理系统】

4.Node既是平台也是编程语言

三.互联网协议的分类

http协议:超文本传输协议

ftp协议:文件传输协议,客户端通过FTP协议访问位于FTP服务器撒谎那个的资源,由于FTP传输效率非常高,在网络上上传输大的文件的时候,一般也采用该协议(使用了断点续传)

smtp协议:电子邮件传输协议

http协议的版本

http 1.0 :增加了请求头与响应头,用来描述请求与相应的基本信息。客户端除了GET,新添加了POST和HEAD方法。在线服务器不仅仅可以相应HTML文件,还支持图片、视频、二进制文件等数据。发送相应时需要使用content-type来描述数据格式。浏览器会按照content-type指定的类型来渲染页面

缺陷:只能同时进行一个线程

http1.1 :默认开启了持续连接(keep-alive),解决了1.0版本的TCP连接使用效率不高的问题。

添加了PUT,PATCH,OPTIONS,DELETE方法,可用于设计RestFul风格的路由

缺陷:只能按照请求的顺序响应,当碰到大量请求的时候,容易造成网络堵塞。问了解决这个问题,人们发明了很多网络优化技巧:精灵图,合并css,合并js,都是为了减少请求的次数。

http2.0 : 更加安全,高效。网页的压缩传输,加密协议,流技术,复合多用等。

http协议的特点

1.简单,快速

2.灵活,可以传输系统中多种类型的文件。例如:jpg,gif,png,doc,rar,pdf...

3.无状态,无连接。http协议不能记忆用户的各种状态。例如用户的登录状态,邮箱,订单信息....,因此人们又发明了cookie,session等技术帮助数显记忆用户状态的功能,无连接只服务完成后,会自动断开连接,释放资源。

四.请求与相应

1.请求:地址栏输入url,浏览器在解析html是碰到了src属性,link的herf属性时,ajax请求,表单提交等

1.请求行:请求方法,url,扎UN固态吗,http版本

2.请求头:一堆字符串,但是类似于对象的键值对,键值对用冒号隔开,每行回车隔开

3.请求体:只有表单以post方法提交时,表单中的数据就包含在请求体中

请求头中的内容:

Host: www.baidu.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Cookie: BIDUPSID=9C87FFF139EDF2BC4E3487A0B6596E71; PSTM=1554519058; BAIDUID=070D52EFBC1572770FC36F9E165BCCF4:FG=1; BD_UPN=13314752; BD_HOME=1; H_PS_PSSID=34132_34099_34043_31254_34004_33676_33607_26350; BA_HECTOR=2k80ag0h24a1a4a1uc1gcgglj0r
Upgrade-Insecure-Requests: 1
Cache-Control: max-age=0

2.响应 :鼓舞短每一次请求后,都要有响应:

1.状态行:包含http协议版本,扎UN固态吗,状态码的描述

2.响应头:也是一堆键值对形式的字符串,包含了很多信息。例如:content-type,浏览器必须知道content-type才能正确渲染页面

3.响应体:服务器响应给客户端的内容。

 五.状态码与状态码的描述

定义:状态码有三位数字组成,每一个数字都定义了相应的类型,共分为五类:

1xx : 指示信息--表示请求已接受,继续处理

2xx : 成功接收

3xx : 重定向--需完成请求,必须进行更进一步的操作

4xx:客户端错误--请求有语法错误或者请求无法实现

5xx :服务器端错误--服务器未能实现合法的请求

常见状态码:

200       ok              客户端请求成功

400       Bad Request        客户端请求语法错误,不能被服务器所理解

401      Unauthorized        请求未经授权,这个状态码必须和www-Authenticate报头域一起使用

403      Forbidden       服务器收到请求,但是拒绝提供服务

404     Not  Found       请求资源不存在 。

500      Internal Server Error    服务器发生了不可预期的错误

503    Server Unavaiable      服务器当前不能处理客户端的请求,一段时间后可能恢复正常

六.使用node创建一个http服务

let http = require('http');
let fs = require('fs');
let sum = 0;
let server = http.createServer((request,response)=>{
    console.log(request.url);
    sum++;
    if(request.url == '/'){
        let data = fs.readFileSync('./index.html');
        response.end(data.toString());
    }
})
//启动http监听服务
//端口号:范围0~60000,一个web服务器上如果只挂载一个网站有些资源浪费,可以指定不同的端口号费别对应不同的网站。
server.listen(3000,()=>{
    console.log('http服务已启动在3000端口');
})

 

七.node的顶层路由

url到函数的映射。开发人员实现设置好的url的字符串,当用户按照知道那个的url访问时可以得到特定的服务。

优点:安全,简洁

缺点:都区资源是不方便,必须要自己配程序实现。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值