Web服务及http协议
HTTP:HyperText Transfer Protocol--超文本传输协议
超链接:能够在文档之间跳转的文本
早起的Web:仅仅是能够实现在文档之间跳转的一种协议
http/0.9:仅支持纯文本(超链接) 由纯ASCII值组成的
HTML:HyperText Mark Language 超文本标记语言 用来编写超文本的语言
<h2>Title</h2>
<h2>...</h2>HTML的一组标签,用来定义里面的字符的显示属性,这组标签是HTML语言内置的,事先规定好了的,应该将这些字体解析成什么格式的内容
Browser:客户端 用户通过浏览器可以将web服务器提供的超文本进行显示,其中那些标签是不会显示出来的
但是如果有两台主机上提供的文本的名称是一样的,用户该如何区别这两个文件呢?
URI:Uniform Resource Indentifier 统一资源标识符 可以在全局范围内唯一引用某一个独立的资源的命名方式
URL:Uniform Resource Location 统一资源定位符 是统一资源标识符的一个子对象, 用于描述在互联网上互联网资源的统一表示格式
protocol://HOST:port/path/to/file
协议://主机:端口/路径/文件名
http://www.qq.com/download/linux.tar.gz
web资源:能够通过统一资源定位符唯一的标记,能够让客户端访问的文件
多个资源很可能被整合为一个html文档
web对象:跟web资源是同一个概念
HTTP方法(资源访问的方法):
GET:从服务器获取资源到本地并且通过浏览器进行显示(早起的HTTP版本例:http0.9只有这一种方法)
PUT:从远程服务器上直接获取一个文件到本地
POST:通过表单提交数据到服务器上去的
DELETE:在远程服务器上删除一个文件的
HEAD:只返回首部,不返回主体
TRACE
OPTIONS
CONNECTION
MIME:Multipurpose Internet Mail Extension 多用途互联网邮件扩展
SMTP:Simple Mail Transmission Protocol 只能传输纯文本的
MIME:可以将非文本数据在传输前能够重新编码为文本格式再进行传输,并且在接收方可以用相反的方式将其重新还原为原来的格式,还能够调用相应的程序来打开此文件
Base64:一种文本编码格式
动态效果
flash
Java,Applet,JRE
动态网页:在服务器端存储的文档非HTML格式,而是一种编程语言开发的脚本,脚本在接受来自客户端的参数之后在服务器执行一次,执行完成之后会生成HTML格式的文档,把生成的文档发送给客户端
注:web服务器不会帮你去执行这些脚本,而是通过调用其他工具来执行。web服务器并不负责处理动态内容
例:web:index.php
web --> procotol --> php(运行index.php)
静态页面响应流程:
用户发来的请求一定是通过网络协议发送到服务端的,而协议是工作在操作系统的内核中的。当请求到达内核,内核空间经过解析后,发现请求范文的是80端口的套接字,内核就会将这个用户请求通过套接字转给用户空间的web服务器。web服务器发现用户访问的是一个网页文件,服务器端就会陷入内核,重新转换成内核模式,到磁盘上将这个文件加载过来。当内核找到这个文件后,返回给用户空间,web服务器发现文件取出来了,就通过套接字再次回到内核空间,通过网络TCP/IP协议栈返回给客户端
动态页面响应流程:
用户发来的请求一定是通过网络协议发送到服务端的,而协议是工作在操作系统的内核中的。当请求到达内核,内核空间经过解析后,发现请求范文的是80端口的套接字,内核就会将这个用户请求通过套接字转给用户空间的web服务器。web服务器发现用户访问的是一个动态页面,web服务器就会通过其他协议启动一个解释器的进程,然后解释器陷入内核,重新转换成内核模式,到磁盘上去将这个文件加载到解释器中,然后执行一次,执行之后将执行结果返回给web服务器,然后web服务器将这个结果通过套接字再次回到内核空间,通过网络TCP/IP协议栈返回给客户端,并关闭刚才创建的解释器进程
一个动态网页包含了静态内容(不需要改变的,不需要执行的,例如:图片)和动态内容(需要执行再返回给用户)
用户具体要访问的哪个资源的信息记录在HTTP协议的首部中
HTTP报文:分为请求报文和响应报文
请求报文语法:
<method> <request-URL> <version>
资源获取方法 请求的资源是什么 对应请求资源协议的版本号
<headers>
http协议首部
<entity-body>
报文主体
响应报文语法:
<version> <status> <reason-phrase>
对应请求资源协议的版本号 状态码 具体说明status的意义
<headers>
响应报文首部
<entity-body>
报文主体
状态码有五类:
1xx:纯信息
2xx:“成功”类的信息(200-请求资源正常)
3xx:“重定向”类的信息,资源存在,但是资源已经被挪走了,需要重新发起请求,并给你请求的地址(301-永久重定向、302-临时重定向、304-没有发生任何改变,直接使用缓存内容)
4xx:客户端错误类的信息(404-请求了一个不存在的文件)
5xx:服务器端错误类的信息
例如:
请求报文
GET / HTTP/1.1
Host:www.qq.com
Connection:keep-alive
响应报文
HTTP/1.1 200 OK
X-Powered-By:PHP/5.2.17
Vary:Accept-Encoding,Cookie,User-Agent 额外标记的变化类的内容
Cache-Control:max-age=3,must-revalidate
Content-Encoding:gzip 内容编码机制
Content-Length:6931 内容长度
上面两个报文的第一行通常称为报文“起始行(start line)”,后面的标签格式的内容称作首部域(Header field),每个首部域都由名称(name)和值(value)组成,中间用逗号分隔,另外,响应报文通常还有一个称作Body的信息主体,即响应给用户端的内容
Web服务器的主要操作:
1、建立连接——接受或拒绝客户端连接请求
2、接收请求——通过网络读取HTTP请求报文
3、处理请求——解析请求报文并做出响应的动作
4、访问资源——访问请求报文中相关的资源
5、构建响应——使用正确的首部生成HTTP响应报文
6、发送相应——向客户端发送生成的响应报文
7、记录日志——将已经完成的HTTP事务记录进日志文件
用户请求的一个页面中可能存在着多个web资源,而这每个资源都是要单独的去请求的,并且HTTP协议是基于TCP协议工作的,每次建立连接都需要三次握手,断开连接时都需要四次断开,极其的浪费时间和带宽资源
因此,在HTTP/1.1中:
1、增强了缓存的功能
2、引入长连接——客户端和服务端在获取一个资源后不是直接断开,而是等待继续获取其他的资源
常见的客户端浏览器和服务器端web服务器
客户端浏览器:
1、IE
2、Firefox
3、Chrome
4、Opera
5、Safari
web服务器(www.netcraft.com):
1、Apache
2、IIS
3、nginx
4、lighttpd(德国)
5、thttpd(嵌入式平台)
应用程序服务器:不仅能够解析静态内容,还能够处理某种特定格式的动态内容
1、IIS
2、Tomcat(apache,Java的应用程序服务器,开源的)
3、Websphere(IBM,专门用来解析Java企业级应用程序的,商业产品)
4、Weblogic(Bea->Oracle,JSP的应用服务器,商业产品)
5、JBoss(RedHat)
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。