《基础拾掇之——http基础》要点: 本文介绍了基础拾掇之——http基础,希望对您有用。如果有疑问,可以联系我们。
http协议介绍
http:Hyper Text Transfer Protocol 超文本传输协议,是互联网应用最为广泛的一种网络协议,主要用于Web服务.通过计算机处理文本信息,格式为HTML(Hyper Text Mark Language)超文本标记语言来实现.
http协议的版本
- http 0.9:仅于用户传输html文档
- http 1.0
- 引入了MIME(Multipurpose Internet Mail Extesions)机制:多用途互联网邮件扩展,引入这个技术之后,http可以发送多媒体(比如视频、音频等)信息.此机制让http不在单单只支持html格式,还可以支持其他格式来进行发送了.
- 引入了keep-alive机制,支持持久连接的功能(但这个keep-alive原理是在首部添加了某个字段而形成的,并非原生就支持此功能)
- 引入支持缓存功能
- http 1.1
支持更多的请求方法,更加精细的缓存控制,原生直接支持持久连接功能(presistent).
- http 2.0
提供了HTTP语义优化的传输
- spdy : google引入了的一个技术,能够加速http数据交互,尤其是使用ssl 加速机制,但是spdy现在用的还不多.
目前常用的版本就是http 1.0版本和http 1.1版本.
html文本介绍
html文本架构
<html>
? ?<head>
? ? ? ?<title>TITLE</title>
? ?</head>
? ?<body>
? ? ? ?<h1>H1</h1>
? ? ? ? ? ?<p></p>
? ?<h2>H2</h2>
? ? ? ?<p><a href="admin.html" rel="external nofollow" target="_blank">ToGoogle</a> </p>
? ?</body>
</html>
html文档的生成方式
- 静态
事先就编辑并定义完成的
- 动态
通过编译语言编写的程序后输出html格式的结果
动态语言有:php,jsp,asp,.net
备注:这些脚本都必须有相应的解释器,比如说 php需要有php解释器等等
静态和动态的方式
- 1、Web服务器向内核注册socket
2、客户端通过浏览器,向Web服务器发起request请求
3、Web服务器收到客户端的request信息
4、如果用户请求的资源在服务器本地的话,http服务会向系统内核申请调用
5、内核调用本地磁盘里的数据,并将数据发给http服务
6、http将用户请求的资源通过response报文,最终响应给客户端
- 动态
- 与静态不同的是,如果用户请求的是动态内容,那么此时http服务会调用后端的解析器,由动态语言去处理用户的请求,如果需要请求数据的时候,会向内核申请调用,从而向磁盘中获取用户指定的数据,通过解释器运行,运行的结果通常会生成html格式的文件.然后构建成响应报文,最终发回给客户端.
http协议
http协议的报文
HTTP报文中存在着很多行的内容,一般是由ASCII码串组成,各字段长度是不确定的.HTTP的报文可分为两种:请求报文与响应报文
- request Message(请求报文)
客户端 ?-→ ?服务器端
由客户端向服务器端发出请求,不同的网站用于请求不同的资源(html文档)
- response Message(响应报文)
服务器端 -→ 客户端
是服务器予以响应客户端的请求
请求报文格式介绍
请求行 + 请求首部 + 空白行 + 请求实体
<method> 这次请求的方式是什么,也就是请求方法
<request-URL> 请求的是哪个资源,哪个URL.可以是相对路径,如/images/log.jpg,也可以是绝对路径,如http://www.magedu.com/images.banner.jpg
<version> 请求的协议版本是什么,http协议版本,格式HTTP/<major>.<minor>,例如:HTTP/1.0,HTTP/1.1<HEADERS> 首部,首部可能不止一个.各种所可以使用的首部信息
<entity-body> 请求实体,你到底请求的内容是什么
<version> 响应时客户端请求的是什么版本,服务器端就需要响应什么版本
<status> 请求的状态码是什么 202,403等
<reason-phrase> 响应的状态码的信息是什么,原因短语,这个状态码所响应的意义,易读信息
<HEADERS> 一大堆的响应首部
<entity-body> 响应体
- 起始行
也称之为状态行,用于服务器端响应客户端请求的状态信息,由版本号<version> + 状态码<status> + 原因短语<reason-phrase> 组成,例如“ HTTP/1.1 200 OK”
- 响应首部
类似请求报文,起始行后面一般有若干个头部字段.每个头部字段都包含一个名字和一个值,两者之间用冒号分割.格式Name:Value.
例如:
Content-Type: test/html; charset=utf-8
Content-Length: 78
- 空白行
最后一个响应首部信息之后就是一个空行,通过发送回车符和换行符,通知客户端空行下无首部信息
- 响应实体
响应实体中装载了要返回给客户端的数据.这些数据可以是文本,也可以是二进制(例如图片,视频)
例如:
<version> <status> <reason-phrase>
<HEADERS> ? ? ? ? ? ? ? ? ? ? ? ?
# 这里一定要是一个空白行
<entity-body>
HTTP请求方法
在HTTP通信过程中,每个HTTP请求报文中都会包含一个HTTP请求方法,用于告知客户端向服务器端请求执行某些具体的操作,下面列举几项常用的HTTP请求方法.
常用的HTTP请求方式是GET,POST,HEAD
HTTP的状态码
(编辑:ASP站长网)
|