服务器是提供网络服务的机器,通过安装特殊的软件(或者是运行某段特殊的代码)来提供服务。
服务器 = 电脑 + 能给其它电脑/设备提供服务的软件
客户端与服务器:提供服务的是服务器,享受服务的是客户端
根据服务不同,服务器的类型也不同:
web服务器:
全称:I
nternet P
rotocol Address。
作用:标识一个网络设备(计算机、手机、电视)在某一个具体的网络当中的地址。要访问某个电脑上的资源,先要找到它的ip。
分类:ipV4 ipV6 (教育部办公厅关于贯彻落实《推进互联网协议第六版(IPv6)规模部署行动计划》的通知_部门政务_中国政府网)
格式:[0-255].[0-255].[0-255].[0-255]
即为四个 0-255 的数字组成(以ip4为例)。在同一个网络中,计算机的IP是不允许相同的,都是唯一的。
127.0.0.1 特指本机ip地址。
这个 百度一下,你就知道 会指向哪里?
域名:ip地址的别名,由于ip地址不好记忆,我就给它们取个好记的别名。localhost这个域名特指127.0.0.1这个地址。
域名解析系统:把域名翻译成Ip地址的系统。
一个IP地址的端口可以有65536个,范围是从[0,65535])。不同的端口被不同的软件占用,以提供不同的服务。
一台电脑可以通过安装多个服务器端软件来提供服务,比如Web服务、FTP服务、SMTP服务等。显然,仅仅通过ip地址是无法区分不同的服务的,这里就需要用到 “IP地址+端口号”来区分不同的服务
。
理解
如果理解IP地址(一台服务器)是一栋大商场,端口就是商场中的商铺的编号。
如果理解IP地址(一台服务器)是公司的前台电话,端口就是公司中各个部门的分机号。
通过netstat -a -n -o
查看端口使用情况
制定客户端与服务器之间的通讯规则。不同的协议的作用也不同。
http协议:
请求数据
和响应数据
的格式(报文)自己完成的网页,如果让其他人能够访问?
用http模块写一个简单的服务器,让同学来访问本机的服务
有三步:
第一步:新建一个文件,名为 d:/src/01http.js
( 文件名及路径名可以自行设置,建议均不使用中文字符), 内容如下
// 1. 引入http模块 const http = require('http'); // 2. 创建服务 const server = http.createServer(function(req, res) { console.log('有人来访问了') // 向客户端发送内容,并结束本次响应 res.end('hello world'); }); // 3. 启动服务 server.listen(8081, function() { console.log('服务器启动成功,请在http://localhost:8081中访问....'); });
第二步:运行js代码,启动服务。
在小黑窗中进入到01http.js所在的目录,键入命令 node 01http.js
,此时会弹出一个小黑窗,不要关。
第三步:测试功能
打开一个浏览器页面,输入地址:http://localhost:8081
,观察效果:
停止服务:ctrl + c
共享让同学来访问
把localhost改成你自己电脑的ip地址,例如:http://192.xxx.xxx.xxx:8081
,再把这个路径发你的同学(同一个局域网)来访问。
如果不能被其他同学访问,有可能你需要手动关闭你自己计算机的防火墙。
工作原理
使用http模块在本机上创建一个虚拟服务器,它来接收浏览器的请求,并给出响应。
注意:
重启
后,再次观察。请求一次,它就被调用一次
。客户端的请求
。设置对本次请求的响应
。请求
当web服务器就绪之后,如果没有客户端来访问它,它也是不会有任何效果的。也就是说回调函数不会执行。
而每一次的请求,都会导致回调函数要执行一次。
响应
通过res.end来设置响应的内容,res.end()的格式只是能是buffer或者是String