发展历程:
web服务器, 诞生于1989,3月 欧洲量子物理实验室,伯纳斯 开发了一种能实现超链接功能的协议 这就是我们最早的HTTP协议的核心 1993HTTP 正式解决了传输图像等多媒体信息并修正了字符显示中的错误使得WEB服务器在几年之内迅速的成为了互联网经典应用之一,以至于至今上网的主要目的就是为了浏览网页除了及时通信,这显示了其强大的生命力 主要是因为有丰富的表现形式,无论web服务器怎么传输数据他背后实现数据传输的基础是基于ASCII 本身的设计是用来传输纯文本信息的,只是这些文本能够实现超级链接,能够实现在多个页面之间来回或者多级跳转的多种连接方式,这种自由的寻址方式是通过URL来实现的,(URL,URI)统一资源定位符和统一资源标识符用来唯一的来引用位于web服务器上的资源
那么提供WEB服务器的协议有哪些呢?
1.http 80 端口
2.https 443 端口 加密方法 连接跳转到端口协议
提供WEB服务的服务器轻量级软件:
Nginx 俄罗斯人开发 静态解析
lighttpd 支持强大的反向代理Apache (美国国家超级计算机)软件基金会
Sun One SUN 公司产品
此外,除了这些web 服务器软件之外 还有一些软件
本身功能更强大 支持使用JSP 动态服务器页面对网页的请求 方便组成集群 构建应用程序组 相应速度快效率高
为此种应用开发的叫应用程序服务器,各种大型应用
图:应用程序服务器的市场占有份额
Websphere IBMWeblogic
AppServer
JBoss redhat 开源软件
Tomcat 属于Apache 由
Resin 轻量级开源服务器软件
通用浏览器:
IE, firefox, chrome, safari, opera,
HTTP: 基于TCP协议开发的版本目前最常用的有两个V1.0和V1.1 ,其中1.1最重要的表现在于支持持续连接(KeepAlive)
1.0不支持持久连接 。 我们知道一个网页的组成由图像、网站框架和各种各样的文本及其链接信息组成 同时网页是分成各个部分分块传输数据的 常识可知:当我们在网速慢的时候打开一个网站时,文本是一下打开了但是图片是一行一行的往下刷出来的,其实这是由HTTP内部的服务对象(web object)机制来实现 这些网页对象则是由一个个的图片和网页素材组成而每一个对象都是独立传输的 HTTP之所以使用TCP协议 是因为 HTTP在传输过程中是有序的而且是可靠的这样使得我们传输的数据不会丢失即使数据丢了在下次上传的时候数据还会重传过来重新组合起来 这也就是HTTP是基于TCP传输的原因
TCP的六个标志位:syn,ack,fin,rst,psh,urg
标志位是用于通信之初双方用来建立连接呼叫双方的过程 这是准备进行数据交换的前提
类似于打电话 拨通号码 A:喂!B:你好 ,A:你好
友好的问候之后确定对方是自己要找的人然后开始进行下一步的交流
3次握手机制:
1.syn=1 ack=0 fin=0 客户端发起第一次请求
2.syn=1 ack-1 服务器响应
3.ack=1 客户端回应
V1.0 对于HTTP来说每一个对象都是由web对象来实现 每一个对象都要进行三次握手机制来实现 如果子框架模块很小 或者数据量本身非常小这样大量的时间就消耗在了三次握手的机制上,这就叫做非持久连接
为了解决非持久的连接的问题开发了第二个版本V1.1
那该怎么解决呢? 在第一次传输的过程进行三次握手 其他的时候就都基于此前的三次握手为基础
不再进行三次握手 这样就只需要进行一次三次握手 我们称这个过程为 持续连接
这样可以大大的减少在TCP三次握手协议上所消耗的大量时间 进而提高网页的传输效率
但持久连接也有其缺陷 如果说你的web服务器最多只支持100个人同时连进来 多个用户并发连接 都在请求资源
同时HTTP 还是一种无状态协议(stateless),两个网页之间的关系为零,相互独立无法察觉彼此之间有什么联系
当第101个用户来的时候就需要等待 而前面的用户虽然请求的数据量小但是是按持久连接状态建立的 所以不会断开连接
就产生了拥塞
我们就要定义一定的特征
1 持久是有条件的 一次连接是有限定对象
2 超时时间间隔
用这两个指标来制定客户端的断开机制 以确保后来的用户继续使用资源
从上面我们可以看出:持久是好是坏以及持久多长时间处决于服务器的压力
HTTP本身是一种C/S架构 现在称之为B/S是因为其服务器建构在这之上的应用 其实浏览器本身就是一种客户端
这种协议意味着在真正传输数据之前双方得先建立连接关系 需要有一定的数据交换过程 这一过程一般是由客户端发起请求 服务器端端口监听某一个特定端口 处于监听状态 每一个用户发送一个请求 服务器端就发送一个状态码 回应 告诉你资源存在或不存在 亦或有错误
HTTP 状态码 有五大类
1 普通信息状态码
2 正确信息状态码 资源存在 正确响应
3 资源重定向状态码 请求的网页不在当前网页上 301永久重定向 302临时重定向
4 客户端错误状态码 404
5 服务器端错误 服务器资源不存在 无法响应
命令:curl用于访问URL资源连接的一个工具
【curl】 web服务器基于文本的工具 状态码的响应
请求URL 资源连接
-I 只显示首部信息
这就是基于状态码的响应
HTTP去请求一个资源的时候,资源的类型有多种多样的,当用户请求一个数据是,数据的流向是由服务器流向客户端
另外当我们去博客注册一个账号提交信息的时候 表格信息的数据流向 确是从客户端到服务器
我们将客户端和服务器端资源传递的数据类型不用分为以下8种动作(方法)来操作
定义数据传输方向 :
1 OPTONS 确认服务器端支持那些方法
2 HEAL 不响应体将不会返回
3 GET 向特定资源发出请求
4 POST 提交处理 基于请求处理 提交表格数据
5 PUT 上传整个文件,只针对特定客户端,是基于WEB DAv 的一种应用
6 DELETE 删除指定资源
7 TRACE 回显服务器收到的请求
8 CONNECT 代理服务器架构的一种
说明:webDAV 类似于客户端服务器FTP 允许客户端上传一个文件
Post 用于提交表单一般情况用的最多
不到万不得已的情况不会允许客户端上传文件PUT 这操作过于危险
好了,作为网络工程师的你对网络有什么独特见解呢?