Nodejs基础
- 网络基础概念
- IP
- IP的介绍
- IP的作用
- IP的分类
- 共享IP-公网
- 家庭共享——局域网
- 公网
- 本地回环IP地址
- 总结
- IP标准分类
- 端口
- 端口举例
- 端口介绍
- 总结
- HTTP模块
- 创建HTTP服务
- HTTP服务注意事项
- 浏览器查看HTTP报文
- 查看请求报文
- 查看请求体
- url当中的查询字符串
- 查看响应报文
网络基础概念
IP
IP的介绍
IP 也称为 「IP 地址」,本身是一个数字标识。例如 192.168.1.3
ip本身是一个32Bit的二进制数字,例如,11000000101010000000000100000011
但是为了标识,将每8个分为一组,转成十进制数字,并每组加上“.”来组合
IP的作用
IP本身是一个数字标识
IP用来标识网络中的设备,实现设备间的通信
IP的分类
2022年11月15日,联合国宣布世界人口达到80亿
一个ip由32位组成,最多能够使用 2^32=42,9496,7296 个设备
是远远不够使用的
解决
- 共享IP——公网IP
- 区域共享
- 家庭共享——局域网
- 本地回环IP地址
共享IP-公网
家庭共享——局域网
家庭设备:手机、电脑、手机、打印机等
公网
180.91.213.151:广域网IP或公网IP
本地回环IP地址
127.0.0.1~127.255.255.254 这期间的IP地址,都是指向本机的
总结
类型 | 说明 |
---|---|
本机回环IP地址 | 127.0.0.1 ~ 127.255.255.254 |
局域网IP (私网 IP) | 192.168.0.0 ~ 192.168.255.255,172.16.0.0 ~172.31.255.255,10.0.0.0 ~ 10.255.255.255 |
广域网 IP (公网 IP) | 除上述之外 |
IP标准分类
IP详细学习
端口
端口举例
将集市类比成计算机,每个摊位相当于计算机上的应用程序,而摊位编号则相当于端口
端口介绍
- 端口:应用程序的数字标识
一台现代计算机有65536个端口(0~65535)
一个应用程序可以使用一个或多个端口 - 端口的作用:实现不同主机应用程序之间的通信
总结
端口是应用程序的数字标识
主要作用是实现了不同主机应用程序之间的通信
HTTP模块
创建HTTP服务
//1、导入http模块
const http=require('http')
//2、创建服务对象
const server=http.createServer((request,response)=>{
response.end('Hello Http Server') //设置响应体
})
//3、监听端口,启动服务
server.listen(9000,()=>{
console.log("服务已经启动.......")
})
HTTP服务注意事项
- 命令行 ctrl + c 停止服务
- 当服务启动后,再更新代码时候 必须重启服务才能生效
- 响应内容中文乱码的解决办法
response.setHeader(‘content-type’,‘text/html;charset=utf-8’)
- 端口号被占用
Error: listen EADDRINUSE: address already in use :::9000
1)关闭当前正在运行监听端口的服务 ( 使用较多 )
2)修改其他端口号
- HTTP 协议默认端口是 80 。HTTPS 协议的默认端口是 443, HTTP 服务开发常用端口有 3000,
8080,8090,9000 等
如果端口被其他程序占用,可以使用 资源监视器 找到占用端口的程序,然后使用 任务管理器 关闭
对应的程序
-
第一个
-
第二个
- 第三个
//1、导入http模块
const http=require('http')
//2、创建服务对象
const server=http.createServer((request,response)=>{
// response.end('Hello Http') //设置响应体
response.end('你好') //设置响应体
})
//3、监听端口,启动服务
server.listen(9000,()=>{
console.log("服务已经启动.......")
})
修改之后为:
//1、导入http模块
const http=require('http')
//2、创建服务对象
const server=http.createServer((request,response)=>{
// response.end('Hello Http') //设置响应体
response.setHeader('content-type','text/html;charset=utf-8')
response.end('你好') //设置响应体
})
//3、监听端口,启动服务
server.listen(9000,()=>{
console.log("服务已经启动.......")
})
- 第四个
再开一个终端运行上述代码:
解决:
- 方法一: 关闭之前的,重新启动当前的
- 方法二:修改端口号
- 第五个
//1、导入http模块
const http=require('http')
//2、创建服务对象
const server=http.createServer((request,response)=>{
// response.end('Hello Http') //设置响应体
response.setHeader('content-type','text/html;charset=utf-8')
response.end('你好') //设置响应体
})
//3、监听端口,启动服务
// server.listen(9001,()=>{
// console.log("服务已经启动.......")
// })
//3、监听端口,启动服务
server.listen(80,()=>{
console.log("服务已经启动.......")
})
- 第六个——注意情况
结束后再重新启动自己的服务
浏览器查看HTTP报文
查看请求报文
//1、导入http模块
const http=require('http')
//2、创建服务对象
const server=http.createServer((request,response)=>{
// response.end('Hello Http') //设置响应体
response.setHeader('content-type','text/html;charset=utf-8')
response.end('你好') //设置响应体
})
//3、监听端口,启动服务
// server.listen(9001,()=>{
// console.log("服务已经启动.......")
// })
//3、监听端口,启动服务
server.listen(9000,()=>{
console.log("服务已经启动.......")
})
查看请求体
先新建一个表单
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="http://127.0.0.1:9000" method="post">
<input type="text" name="username"> <br>
<input type="password" name="password"> <br>
<input type="submit" value="提交">
</form>
</body>
</html>
点击提交后,在网络中显示请求,点击载荷查看请求体
url当中的查询字符串
查看响应报文