Web服务器介绍以及HTTP基本介绍

一、Web服务器


1. 什么是Web服务器?

  • 服务器(提供服务)指的是一台安装待定的软件的计算机,用于专门提供特地的服务,按照 服务类型的不同,又划分为:Web服务器、数据库服务器、文件服务器等等。
  • 客户端(使用服务)指的是再一次服务过程中使用这个服务的设备(网络端点)。目前咱们最常见的客户端就是浏览器。

2. Web 服务器软件分类

  • Nginx
  • Apache-php
  • llS - c# .net
  • Tomcat - java

二、请求响应的流程


  1. 用户打开浏览器
  2. 地址栏输入我们需要访问的网站网址
  3. 浏览器通过DNS服务器获取即将访问的网站IP地址
  4. 浏览器发起一个对这个IP地址的请求
  5. 服务器端监听指定的端口的服务器软件接收到这个请求,进行相应的处理
  6. 服务器端处理完的结果返回给客户端浏览器(响应)
  7. 浏览器将服务端返回的结果呈现到界面上

三、Node.js内置模块之http


在Node中,并没有类似于'Apache'这样的软件来提供Web服务,但是我们使用Node.js中的内置模块http,也可以实现一个Web服务器的功能,而且性能更高。
// 1. 引入http模块
var http = require('http')

// 2. 调用方法创建服务器
var server = http.createServer();

// 3. 启动服务器 指定服务器要监听的端口号
// 共有三个参数
// 1. 第一个参数,指定监听的端口号
// 2. 第二个参数是服务器的IP地址,默认是本地回环地址,是127.0.0.1
// 3. 第三个参数是当服务器启动成功后,要执行的回调函数
server.listen(3000,()=>{
  console.log('the server is running at http://127.0.0.1:3000');
})

// 4. 监听客户端的请求,并处理请求,最后把处理的结果通过网络再响应回客户端浏览器
// 给服务器对象注册一个请求事件,每当有新的客户端请求我们服务器的时候,都会触发这个事件
// req: request的缩写,每当有请求过来的时候,都可以拿这次请求的request对象
// res: response的缩写,可以将服务器端的数据通过这个对象的一些方法返回给浏览器客户端
server.on('request',(req,res)=>{
  // req: request的缩写 , res: response的缩写 
  console.log('有新的请求过来了...');
  res.write('OK')  // 向客户端发送一些数据内容
  res.end(); // 表示服务器端对客户端的数据已经发送完毕了,客户端可以接收并显示了 
  // 如果只发送一次的话,可以直接使用res.end('112233')
})

注:
如果返回给浏览器的数据是中文的话,很可能会出现乱码的问题,因为浏览器端默认的是以ASCII码的方式来解析的,此时需要让服务器端告诉浏览器端如何解析服务器端返回过去的数据.

 res.writeHeader(200,{  // 此设置是跟随响应头一并返回给浏览器端的
    'Content-Type':'text/plain;charset=utf-8'
  })

四、HTTP:HTTP协议


定义:

HTTP(HyperText Transfer Protocol,超文本传输协议)最早就是计算机与计算机之间沟通的一种标准协议,这种协议规范了通讯内容的格式以及各项内容的含义。

随着时代的发展,技术的变迁,这种协议现在广泛的应用在各种领域,也不仅仅局限于计算机与计算机之间,手机、电视等各种智能设备很多时候都在使用这种协议通讯,所以一般现在称 HTTP 为端与端之间的通讯协议

Web 属于 B/S 架构的应用软件,在 B/S 架构中,浏览器与服务器沟通的协议就是 HTTP 协议,作为一个合格的 Web 开发者,了解 HTTP 协议中约定的内容是一门必修课。

约定形式:

  1. 客户端通过随机端口与服务端某个固定端口(一般为80)建立链接 三次握手
    a)客户端向服务器发送一个连接请求
    b)服务器向客户端返回一个确认信息
    c)客户端将请求及这个确认信息发送服务器
  2. 客户端通过这个链接发送请求到服务端(这里的请求是名词)
  3. 服务端监听端口得到的客户端发送过来的请求
  4. 服务端通过连接响应给客户端状态和内容(响应报文)

约定内容:

  • 请求 / 响应报文格式
  • 请求方式 —— GET / POST / etc
  • 响应转态 —— 200 / 404 / 302 / 304 / etc
  • 预设的请求 / 响应头

五、请求报文


报文分请求报文和响应报文

先来看请求报文:
在这里插入图片描述
请求行

GET /demo.html HTTP/1.1
请求方式 + 空格 + 请求路径 + 空格 + HTTP 协议版本

请求头

客户端想要告诉服务端的一些额外信息,以下为常见的请求头:
在这里插入图片描述

请求体

这次请求客户端想要发送给服务端的数据正文,一般在 GET 请求时很少用到,因为 GET 请求主观上都是去“拿东西”。

六、Url访问路径

req.url

为了根据浏览器客户端的不同的请求路径,返回不同的内容,因此需要使用req.url来获取客户端的访问路径.

// 1. 引入模块 
var http = require('http')

// 2. 创建服务
var server = http.createServer();

// 3. 启动服务,并监听端口
server.listen('3000',()=> {
  console.log('the server is running at http://127.0.0.1:3000');
})

// 4. 监听请求的事件
server.on('request',(req,res)=>{
  console.log(req.url); // 通过req.url就可以轻松的获取到移动端的访问路径,端口号的路径
  res.end('OK')
})
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值