本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处!
Http通信协议
http:超文本传输协议。通信有四步骤:建立连接、发送请求、发送响应、关闭连接,主要用来传输数据,只要你能想到的数据。
例Url链接:
http://www.wenku.baidu.com/view/a02d9786b9d528ea81c7796d.html
www:代表万维网的服务器
wenku.baidu.com/:代表站服务器地址
view/:代表服务器下的一个文件夹
a02d9786b9d528ea81c7796d.html:代表文件夹下的一个文件
如上所述,只要是文件,不论文本、图片、电影、音乐等,对于浏览器来说,只是从远程服务器拿来的一个文件,解析到浏览器上给用户查看。
一个万网,连接了无数个网站的无数台服务器,每个服务器上都有庞大的资料库,并给予用户链接以查看,所以我们今天看到的互联网是丰富多彩的。
顺便讲一个拓扑结构,研究路线等一些有趣的问题,比如哥尼斯堡七桥问题,可以让人不重复走一条路;也有美学定律如欧拉定理,确定多边形的个数;也有国界如四色猜想,用来标记国界区别领土;还有莫比乌丝带,可以让摩托车选手无限在的运行在曲面上(大学没学到这个,如果学到一定会爱上)。局域网通常使用总线拓扑的方式进行连接,每个主机都边到总线进行消息传递;而广域网即Internet,则通过网络拓扑来进行连接,让每个主机都成为一个总线,通过算法和流量控制,能达到信息流通的最高效率。
HTTP请求消息:
由三部分组成:请求行,消息报头和请求正文。
GET /somedir/page.html HTTP/1.1 :请求行。
注释:3个字段:方法字段、URL字段、HTTP版本字段。
方法字段主要有三个值可供选择,包括GET、POST和HEAD。
URL字段:浏览器在请求对象
HTTP版本字段:就是HTTP协议的版本
Host:www.yesky.com请求对象所在的主机
Connection:close :短连接 keep-alive:长连接
注:短连接,连接一次就断开;长连接,B/S通信一直存在
GET方法:提交的数据会跟在URL后面,理论最多提交1024bytes
POST方法:提交的数据存在HTTP包中,理论不要求提交数据大小,由服务器处理能力决定,适用于需由用户填写表单的场合,如登录,HEAD方法:基本与GET方法相同,区别只是服务器在处理响应消息时,去掉了所请求的对象。通常用于HTTP服务器软件开发人员进行调试。
HTTP响应消息
1个状态行,6个头部行、1个包含所请求对象本身的附属体。
状态行:协议版本字段、状态码字段、原因短语字段。
Connectlon:close:告知用户自己将在发送完本消息后关闭TCP连接。
(TCP是底层通讯协议,定义的是数据传输和连接方式的规范
Date:服务器创建并发送本响应消息的时间。
Server:本消息由Apache服务器产生,与HTTP请求消息中的User-agent类似。
Last—Nodified:对象本身最后修改时间。
Content—Length:发送对象的字节数。
Content—Type:附属体中的对象类型,不由件扩展名正式指定。
根据HTTP通信协议的规定,每个“HTTP回应”必须包含下列信息:
HTTP版本
HTTP状态代码(Status Code)
HTTP状态代码所对应的摘要文字(Reason-Phrase)
标头信息(Response Header)
状态码
200 :请求成功,所请求信息在响应消息中返回。
301 Moved Permanently:所请求的对象己永久性迁移;新的URL会在响应消息的Location:头部指出,会自动请求新URL。
400 Bad Request:表示服务器无法理解相应请求的普通错误的状态码
404 Not Found:服务器上不存在所请求的文档。
HTTP Version Not Support:服务器不支持所请求的HTTP协议版本
附Http请求常用的七种方式:
向服务端发送请求,
Get:获得多媒体信息,请求的用户信息会显示在地址栏中,信息长度有限制(不超过255),请求高效!
Head:判断资源是否存在!
Post: 提交数据,不显示资源具体地址;请求信息放在消息体中,请求安全但慢!
Put:提交数据,显示资源具体地址,博客常用!
Delete:删除资源!
Options:获得URL所支持的请求方式,Post或Get!
Trace:用于诊断发送的请求和到达服务端的请求,这中间Http请求报文是否发生改变。
其他:
Lock:允许“锁定”资源,如编辑时
Mkcol:允许用户创建资源
Copy:允许用户在服务器上复制资源
Move:允许用户在服务品上移动资源
上述请求,可以与数据库CRUD联系
Create:Put、Mkcol
Read:Get、 Head、Options、Trace
Update:Post、Lock、Copy、Move
Delete:Delete
参考:
http://www.eefocus.com/book/09-05/733511276058641.html
http://server.chinabyte.com/209/2151709_3.shtml
http://my.oschina.net/wangchen881202/blog/188773
其他通信协议介绍:如Json/Thrift/Avro/Soap/Protobuf
http://www.infoq.com/cn/articles/serialization-and-deserialization