一、web服务器
web服务器又称为www服务器,专门用来托管网站的服务器。一台服务器上可以一台服务器上可以托管多个网站。各网站的开发者只需要把做好的网页和其他文件放置在web服务器上,世界上的其他用户就可以使用浏览器访问服务器中的网页。
1)发送请求,后台分析用户的url,明白客户端想要干什么
2)根据用户的需要,找他想访问的资源
3)去数据库中查找相应的数据
4)编写应用程序将数据渲染为HTML代码,发送到客户端
5)显示到浏览器
二、服务器上的应用程序介绍
硬件:超大内存+Intel至强系列多线程处理器+超大硬盘+带宽
软件:
操作系统:linux(或 Unix、Windows)
http服务:Apache(音译为阿帕奇)是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上。(Nginx 俄罗斯人开发的免费开源服务器应用程序,结构简单速度快 )
编程语言:Java、php、Python、go....
数据库:Oracle、mysql、sqlserver ,DB2 ...
三、IP地址与域名
实际上我们是通过IP地址来访问网络服务,但是不容易记忆,因此发明了域名来代替IP地址。127.0.0.1 (localhost)都可以用来访问本地服务器。也就是说iP地址和域名之间有一一对应的关系。
四、node.js服务器
使用node.js 演示一个基本的http服务架构。注意node的代码虽少,但性能很好。
let http= require("http");
let fs=require("fs");
// 创建一个http服务器
let server = http.createServer((request,response)=>{
console.log( request.url );
// 从服务器上读取hello.html 发送给浏览器
fs.readFile("./hello.html", (err,data)=>{
response.end( data.toString() );
})
})
// 启动http服务在3000端口
server.listen(3000,()=>{
console.log("服务已启动在3000端口");
})
五、http的发展历史
1) http 0.9
整个协议比较简单,只有一个get方法,客户端只能发生get请求,服务端只能返回html。传输完成后TCP自动断开连接。
IDC、TCP、http、html 之间的区别:
IDC:Internet data center 网络数据服务提供商
TCP:可以理解为一个高速公路,客户端与服务器端必须先建立TCP通道,才能下一步操作。
HTTP:TCP建立后, http协议可以理解为高速公路上的汽车,汽车上的货物就是html。
2) http1.0
有了请求(request)与响应(response)头,用来描述请求与响应的基本信息。另外还增加了POST和http方法,服务器不仅仅可以发送html,还可以支持图片、视频、二进制类的文件。
http1.0 最大的问题当TCP通道建立后,一次只能发送一个http请求。(高速路上只能跑一辆车)当网页的内容较多时,容易产生网络堵塞情况,极大的影响效率。
3) http1.1
特征:
默认开启了持久连接(keep-alive),解决了1.0连接使用效率不高的问题。保持一段时间的连接,在此期间可以持续发送http请求:
http1.1 添加了很多请求方法,除了get\post\http,还增加了put、delete、options、add 等等,这些将来可以用来创建RESTful 风格的路由设计。
http1.1 缺点: 虽然使用了持久连接减少了TCP连接的成本,但是服务器对于同一个tcp连接中的请求仍然是按照先后顺序进行处理。可能会影响页面的渲染速度。因此人们发明了一些优化方法,比如精灵图(雪碧图),合并JavaScript、css等
4) http2.0
更加安全,高效。比如功能:网页的压缩传输、加密协议、流技术、复路多用等等。新版的浏览器普遍都已支持http2.0, 服务器端的应用程序目前正在开发推广中。
六、请求与响应
1) 请求(request)
输入url,点击表单提交按钮,script中的src属性,超链接、中的href ,设置手机上的手势操作都是请求(从客户端发送了一个请求信息)
一个请求信息中包含:
1) 请求行( 包括了协议 ,url (URI))
2)请求头( request header )属性,以键:值的形式
3) 请求体( request body ) 提交的表单的内容。
2) 响应(response):在服务器接收和解释请求信息后,返回的一个响应信息
一个响应信息中包含:
a) 状态行
b) 响应头 ,属性,以键:值的形式告诉客户端服务器可以响应的类型。content-type: 表示这次响应的内容类型: text/html image/jpeg application/x-javascript
c) 响应体: 服务器返回的资源内容。如html代码,css代码等。
七、http协议特点:
1) 简单快速:http协议比较简单,因此通信速度比较快。
2)灵活:http允许传输任意类型的数据对象(css\img\js\html\二进制类型文件)
3)无状态: http无状态,http协议本身对事务处理没有记忆功能,服务器不知道浏览器的状态。即像登录操作,必须使用cookie\session 这样的技术来辅助。
4)无连接: 无连接的含义是限制每次连接只处理一个请求,服务器响应之后就断开连接。keep-alive也不是一直连接,有设置好的连接保存时间。