web服务(1)简介 1.HTTP协议 超文本传输协议(HyperText Transfer Protocol)是互联网上应用最广泛的一种网络协议。 所有的WWW文件都必须遵循这个标准。设计HTTP最初的目的就是为了提供一种发布
web服务(1)简介
1.HTTP协议
- 超文本传输协议(HyperText Transfer Protocol)是互联网上应用最广泛的一种网络协议。
所有的WWW文件都必须遵循这个标准。设计HTTP最初的目的就是为了提供一种发布和接收HTML页面的方法。1960年美国人Ted Nelson构思了一种通过计算机处理文本信息的方法,并称之为超文本,这成为了HTTP超文本传输协议标准架构的发展根基。
2.http版本
2.1版本
- HTTP/0.9
- 已过时。只接受 GET 一种请求方法,没有在通讯中指定版本号,且不支持请求头。由于该版本不支持 POST 方法,所以客户端无法向服务器传递太多信息。
- HTTP/1.0
- 这是第一个在通讯中指定版本号的HTTP协议版本,至今仍被广泛采用,特别是在代理服务器中。
- HTTP/1.1
- 当前主流版本。持久连接被默认采用,并能很好地配合代理服务器工作。还支持以管道方式同时发送多个请求,以便降低线路负载,提高传输速度。
2.2 HTTP/1.1比1.0主要优化
- 缓存处理
- 带宽优化及网络连接的使用
- 错误通知的管理
- 消息在网络中的发送
- 互联网地址的维护
- 安全性及完整性
3.http报文结构
3.1请求报文
3.1.1结构
3.1.2 抓包实例
3.1.3 常见的请求头部属性
- Accept
- 请求报文可通过一个Accept报文头属性告诉服务端,客户端接收什么类型的响应。
- Cookie
- 客户端的Cookie就是通过这个报文头属性传给服务端的(Cookie用于保存会话状态)
- Referer
- 表示这个请求是从哪个URL过来的鹅,加入你通过baidu搜索出一个商家的广告页面,你对这个广告页面感兴趣,鼠标一点就是发送一个请求页面到商家的网站,这个请求报文的Referer报文头属性值就是http://www.baidu.com
- Cache-Control
- 对缓存进行控制,如一个请求希望希望响应返回的内容在客户端要被缓存一年,或不希望被缓存就可以通过这个报文头达到目的。
- 其他属性参照下面链接
http://en.wikipedia.org/wiki/List_of_HTTP_header_fields
3.2响应报文
3.2.1 结构
3.2.2 抓包实例
media type表示相应体
3.2.3 响应头部书香
- Cache-Cntrol
- 响应输出到客户端后,服务器通过该报文头属性告诉客户端如何控制响应内容的缓存
- eg:Cache-Control:max-age=3600
- Set-Cookie
- 服务端可以设置客户端的Cookie,其原理就是通过这个响应报文头属性实现的
- 其他响应报文头部属性参考下面链接
http://en.wikipedia.org/wiki/List_of_HTTP_header_fields
4.请求方法
- GET
- 客户端请求指定资源,服务端返回指定资源
- PUT
- 通常用于向服务器发送请求,如果URI不存在,则要求服务器根据请求创建资源,如果存在,服务器就接收请求内容,并修改URI资源的原始版本。(上传文件时用到)
- POST
- 将客户端的数据提交到服务器(注册数据时会用到)
- OPTION
- 请求服务器支持的方法
- HEAD
- 只请求响应报文的头部信息
- DELETE
- 请求服务器删除指定资源
5.响应状态码
- 1XX类:信息响应类,表示接收到请求并且继续处理
- 2XX类:处理成功响应类,表示动作被成功接收/理解和接收(200)
- 3XX类:重定向响应类,为了完成指定的动作,必须接收进一步处理。(301)
- 4XX类:客户端错误,客户请求包含语法错误或者是不能正确执行(404)
- 5XX类:服务端错误,服务器不能正确执行一个正确的请求(503)
- 常见HTTP状态吗
https://en.wikipedia.org/wiki/List_of_HTTP_status_codes
6.MIME类型
- 服务端指定的文件传输类型,对各种文件进行分类,浏览器收到后再根据相应的工具打开。
7.URL统一资源定位符
(Uniform Resource Locator)URL是Internet上用来描述信息资源的字符串,主要用在各种WWW客户程序和服务器程序
7.1URL结构
- 协议://[用户名:密码@]主机名.域名.顶级域名[[:端口号]/目录/文件名.文件后缀?参数=值#标志]
http:http://www.xb.com/index.html | ftp:ftp://test:[email protected] 还有telnet、https等协议
8.http事务
9.静态页面与动态页面
9.1静态页面
- 纯粹的html网页,不包含后台数据库及动态程序(php,jsp,asp等),如:图片、视频、JS(JavaScript网页交互)、CSS(样式表)等
- 静态网页URL:如http://slide.news.sina.com.cn/w/slide_1_2841_183418.html(指向某个资源的路径)
- 优点:内容由客户端浏览器解析,服务端只需要将内容发送给客户端,同时不需要读写数据库,性能和效率很高
- 缺点:后端没有数据库支持,用户体验差,功能少
9.2动态页面
- 包含包含动态程序(php,jsp,asp等),一般需要与后台数据库交互,可以实现比静态更多的功能,如用户注册,用户登录,论坛,排行榜等
- 由服务端运行后再将结果返回给客户端
10.网站流量度量术语
- IP
- 指独立IP数。00:00-24:00内相同IP地址只被算做一次
- PV
- Page View,页面点击量/浏览量,用户每次刷新即被算作一次
- UV
- UniQue Page,访问网站的一台电脑客户端为一个方可00:00-24:00内相同的客户端只被算作一次
- 并发量
- 同一时间用户请求数
11.主流的web服务器
- apache
- nginx
- lighttpd
- 静态资源解析效率很高,不温不火的web服务器
- IIS
- 微软下的web服务器
- tomcat
轻量级web服务器,主要用于解析jsp和servlet(主要用于Java开发的)
apache和nginx的详细介绍将在接下来的文章中介绍
12.提供动态页面解析的服务
- php
- 在apache中以模块形式存在(mod_php5.so)被apache加载;而在nginx中以fastcgi守护进程来处理php解析工作。
- 相应概念理解可参考https://www.awaimai.com/371.html
- tomact
- 解析Jsp应用
- python
- 解析python应用