http相关参考 :
http://www.cnblogs.com/xing901022/p/4309840.html
http://www.cnblogs.com/CareySon/archive/2012/04/27/HTTP-Protocol.html
http://www.cnblogs.com/simple-blog/p/4377647.html
一.http作用
在一个网络中,传输数据要回答三个问题:
1.客户端如何知道所请求内容的位置
URI
2.在知道所请求内容的位置后,如何得到所请求的内容
http
3.内容用什么方式组织以被客户端识别
html
二. http历史版本
1. http0.9
只有一行
GET www.cnblogs.com
没有post方法,没有http 头,客户端只能接收一种类型的数据:文本。也没有错误码。
2.http1.0
最大的变化中引入 post方法,使得客户端可以通过html表单向服务器发送数据,这也是web应用程序 的一个基础。
另一个大的变化是引入了http头,使http不仅能错误 代码 ,还可以传输图片动画等格式 。
3.http1.1
增加了host头。比如
GET /chuiyuan HTTP/1.1
HOST: www.cnblogs.com
GET后面只要有相对路径,使得在一个主机上面 可以存在多个域,否则多个域指向同一个IP会有混乱 。
三. http的网络层次
在internet中,所有的传输都是通过TCP/IP进行的。http是tcp/ip模型中的一个应用层协议也不例外。如下
-----------------
应用层(http)
-----------------
传输层(TCP)
------------------
网络层(IP)
------------------
链路层
------------------
可以看出,HTTP是基于传输层的TCP协议,而TCP是一个端到端的面向连接的协议。所谓的端到端可以理解为进程到进程之间的通信。
所以HTTP在开始传输之前,首先需要建立TCP连接,而TCP连接的过程需要所谓的“三次握手”。
在TCP三次握手之后,建立了TCP连接,此时HTTP就可以进行传输了。一个重要的概念是面向连接,既HTTP在传输完成之间并不断开
TCP连接。在HTTP1.1中(通过Connection头设置)这是默认行为。
四. http请求(http request)
也就是向服务器发送的信息,有以下 几个部分
1. 请求行, 2. http头 3.内容
请求行如:
GET www.cnblogs.com HTTP/1.1
它有三部分:
1.请求方式 2.请求网址 3.http版本。
http头可能 有三种:
2. 请求头(request header) 2. 普通头(gerneral header ) 3.实体头(entity header )
通常来鱼,get 请求没有内容实体,因此不会有实体头。
3.只在post中存在。
POST与GET最大的不同在于:
POST 里面有第三部分:内容 。而GET中没有。因此 就像两者名字那样,get用于从服务器上面取内容,虽然也可以用queryString向
服务器发信息,但是这样不合GET的配音,QueryString中的信息在HTTP看来只是获取所要内容的一个参数而已,而 POST是由客户端
向服务器端发送内容的方式。
下面给一个GET与POST的截图
五. http响应(reponse )
当服务器收到HTTP请求后,会有一个返回。也是由三部分构成:
1.状态行 2. HTTP头 3. 返回内容
先看状态行,常见的:
HTTP/1.1 200 OK
第一部分是HTTP版本,第二部分是响应状态码,第三部分中状态码的描述。可以将后面两个看成一个部分。
对每个具体的状态码都有一定的含义:
1. 信息类(100-199)
2.响应成功(200-299)
3.重写 向类(300-399)
4.客户端错误类(400-499)
5.服务端错误 类(500-599)
http响应中的头包括:
1. response header 2. gerneral header 3. entity header
第三部分响应内容就是http请求的信息,可以是一个html ,也可以是图片。
这里就有一个问题,如果 http响应的内容不仅仅是html,也可以是其它 的,那么 我们如何正确的处理信息呢。
这个 是通过媒体类型(MediaType)确定的 ,具体来鱼是Content-Type这个 http头。如text/html, 图片是image/jpeg.
格式 为大类/小类。
一共定义 了8大媒体类型,分别是
1. application (如 application.vnd.ms-excel.)
2. audio (audio/mpeg)
3. image(image/png.)
4.message(message/http)
5. modle (modle/vrml)
6. multipart (multipart/form-data)
7.text(text/html)
8. video (video /quicktime)
六. HTTP头
tcp/ip相关
http://www.cnblogs.com/mengwang024/p/4448395.html
tcp /socket相关
http://www.cnblogs.com/taoweiji/archive/2012/12/14/2818801.html
http://www.cnblogs.com/zc22/archive/2010/06/27/1766007.html
http://www.cnblogs.com/holyknight-zld/archive/2012/07/18/WebFormSocket.html
http://www.cnblogs.com/IPrograming/archive/2012/03/17/Java_Socket_3.html
http://www.cnblogs.com/xiaozhi_5638/p/4244797.html