HTTP

#HTTP学习总结HTTP协议和TCP/IP协议作用相同,都是用于客户端和服务器之间的通信。在用于HTTP协议时,必然有一端担任客户端,另一端担任服务器端角色。而且两者的角色随时可能互换------从一条通信线路来说,服务端和客户端的角色是确定的。和HTTP关系密切的协议:[TCP/IP](http://baike.baidu.com/link?url=6XiP08Nh9e6aRtRbI6jPMvx1Vn1wy9jYB5th2qj0EcgugRwnrdZaFEqE_viarropjOzbZ_WOV7A6QQzW8sal6YsLFID7ScDtrmSGcRyUpijvsq7qihRy0iSq_NIEKdy-q1SZASIck6jgzB9e0Jsyy_)和DNS:见下图```sequence发送端->DNS端: 把它的IP地址告诉我吧 DNS端->发送端:它的地址是192.168.XXX.XXX发送端->服务器端:像192.168.XXX.XXX发送访问请求```1. 首先客户端想访问http://www.xxx.com。2. 客户端向NDS解析说:告诉我http://www.xxx.com的IP地址吧3. NDS告诉客户端:http://www.xxx.com的IP地址是192.168.xxx.xxx4. 客户端使用HTTP协议的职责,生成对服务器端的HTTP请求报文5. 客户端使用TCP协议,将HTTP请求报文分割成报文段,按序号分为多个报文段,并且把每个报文段传给对方6. 客户端利用IP协议,搜索到对方的地址,一遍中转,一边传送7. 服务器端使用TCP协议,将从对方那里接收到的报文段以原来的顺序重组请求报文8. 服务器端利用HTTP协议,对请求内容进行处理9. 然后处理的结果再用同样的过程进行回传##HTTP中可使用的几种方法:* **GET:获取资源*** **POST:传输实体主体**GET方法也可以传输实体,但是一般不用GET方法进行传输,而是用POST方法,虽然说POST与GET相似,但是POST主要目的不是为了获取响应的主体内容。* **PUT传输文件**PUT方法用来传输文件,就像FTP协议的文件上传一样,要求在请求保温的主体中包含文件内容,然后保存到请求URI指定的位置。* **HEAD:获取报文首部**HEAD方法和GET方法一样,只是不返回报文主体部分。用于确认URI的有效性及资源更新的日期时间。* **DELETE:删除文件**DELETE方法用来删除文件,是与PUT相反的方法。DELETE方法按请求URL删除指定的资源。* **OPTIONS:询问支持的方法**OPTIONS方法用来查询针对请求URI指定的资源支持的方法* **TRACE:追踪路径**TRACE方法是让服务器端将之前的请求通信环回给客户端的方法。* **CONNECT:要求用隧道协议连接代理**CONNECT方法要求在与代理服务器通信时建立隧道,实现用隧道协议进行TCP通信。主要使用SSL和TLS协议把通信内容加密后经网络隧道传输。| 方法    |    说明 || :------- | --------:|| GET      | 获取资源 || POST    | 传输实体主体 || PUT      | 传输文件 || HEAD    | 获得报文首部 || DELETE  | 删除文件 || OPTIONS  | 询问支持的方法 || TRACE  | 追踪路径 || CONNECT  | TRACE || LINK    | 建立和资源之间的连接|| UNLINK  | 断开连接关系 |###HTTP历程HTTP协议的初始版本中,每进行一次HTTP通信就要断开一次TCP连接。这样会造成无谓的TCP连接建立和断开,增加通信量的开销。后来为了解决上述问题,想出了持久连接------只要任意一端没有明确提出断开连接,则保持TCP连接状态------而且持久连接使得多数请求以管线化方法成为可能。###使用cookie的状态管理HTTP是无状态协议,它不对之前发生过的请求和响应的状态进行管理。也就是说,无法根据之前的状态进行本次的请求处理,而且让客户端管理全部客户端状态则会成为负担。保留无状态协议这个特征的同时又要解决类似的问题,于是引入了cookie技术------通过在请求和响应报文中写入cookie信息来控制客户端的状态。* 没有cookie信息状态下的请求```sequence客户端->服务端: 请求Note right of 服务端: 生成cookie,并记录信息 服务端->客户端: 在响应中添加cookie后返回```* 第二次有cookie后请求```sequence客户端->服务端: 请求中添加cookie方法Note right of 服务端: 检查cookie服务端->客户端: 响应```HTTP请求报文和响应报文的内容如下:1. 请求报文(没有cookie信息的状态)```GET /reader/ HTTP/1.1Host: hackr.jp```2. 响应报文(服务器生成cookie信息)```HTTP/1.1 200OKDate: Thu, 12 Jul 2012 07:12:20 GMTServer: Apache10-Oct-12 07:12:20 GMT>

Contect-Type: text/plain: charset:UTF-8

```

3. 请求报文(自动发送保存着的cookie信息)

```

GET /image/ HTTP/1.1

Host:hackr.jp

Cookie:aid=1342077140226724

```

###返回结果的HTTP状态码

|  状态码  | 类别 |    原因短语 |

| :------- |      |--------:|

| 1XX      | Informational(信息性状态码) | 接收的请求正在处理|

| 2XX      | Success(成功状态码)| 请求正常处理完毕 |

| 3XX      | Redirection(重定向状态码) | 需要进行附加操作以完成请求 |

| 4XX      | Client Error(客户端错误状态码)| 服务器无法处理请求 |

| 5XX      | Server Error(服务器错误状态码)| 服务器处理请求出错 |

###HTTP首部

首部字段这里不做多描述,详见[链接](http://www.cnblogs.com/kissdodog/archive/2013/04/01/2993228.html)

###与HTTP协作的服务器

* 用单个虚拟主机实现多个域名

* 通信数据转发程序:代理、网关、隧道

* 代理

1. 代理服务器的功能是代理网络用户去取得网络信息。主要功能是利用缓存技术保存在代理服务器上,当代理再次接受到相同资源的请求时,就可以不从源服务器哪里获取资源,而是将之前缓存的资源作为响应返回。

2. 代理在转发请求或者响应时,不对报文做任何加工的称为透明代理。反之,对报文内容进行加工的代理被称为非透明代理。

* 网关

网关工作机制和代理相似。网关能使通信线路上的服务器提供非HTTP协议服务。

```sequence

客户端->网关: HTTP请求

网关->非HTTP服务器: 非HTTP协议通信

非HTTP服务器->网关:

网关->客户端:HTTP响应

```

* 隧道

隧道可按要求建立一条与其他服务器的通信线路,届时使用SSL等加密手段进行通信。隧道的目的是确保客户端能与服务器进行安全的通信。

###HTTP、Socket、TCP的区别转自[编程小翁](http://www.cocoachina.com/ios/20160325/15773.html)

1. TCP链接与HTTP的区别

HTTP基于TCP,客户端往服务器发送一个HTTP请求时第一步就是要建立与服务器的TCP链接,也就是先三次握手。一次TCP连接可以发送多次HTTP请求。

2. TCP连接与Socket连接的区别

socket层只是在TCP/UDP传输层上做的一个抽象接口层,因此一个socket连接可以基于TCP,也可能基于UDP。基于TCP协议的socket连接同样需要通过三次握手建立连接,是可靠的;基于UDP协议的socket连接不需要建立连接的过程,不过对方能不能收到都会发送过去,是不可靠的,大多数的即时通讯IM都是后者。

3. HTTP连接与socket连接的区别

* HTTP是短连接,socket(基于TCP)是长连接

* HTTP服务端无法主动发消息,socket连接双反随时可以向另一方喊话。

4. 什么时候该用HTTP,什么时候该用socket

* 用HTTP的情况:双方不需要时刻保持连接在线,比如客户端资源的获取、文件上传等。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,377评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,390评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,967评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,344评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,441评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,492评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,497评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,274评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,732评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,008评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,184评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,837评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,520评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,156评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,407评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,056评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,074评论 2 352

推荐阅读更多精彩内容