HTTP协议简单介绍

了解 TCP/IP协议族

  • 计算机与网络设备之间相互通信的规则协议,这些协议集合总称为TCP/IP。例如包括(HTTP、TCP、FTP、IP、UDP、DNS、SNMP、FDDI等等)。

  • TCP/IP分层:

降低耦合,每层之间根据规定好的接口通讯,层次内部能够自由改动、结构清晰。

应用层:向用户提供应用服务,FTP、DNS、HTTP...

传输层:对上层应用层,提供处于网络连接中的两台计算机之间的数据传输。TCP、UDP

网络层:处理网络上流动的数据包(数据包是网络传输的最小数据单位),并选择一条将数据包传送到目标计算机的一条传输路径。

链路层:处理网络连接的硬件部分(操作系统、网卡、光线等)

  • 举例:

用HTTP举例来说,首先客户端再应用层(HTTP协议)发出一个想看某个web页面的HTTP请求。

接着,为了传输方便,在传输层(TCP协议)把从应用层收到的数据(HTTP请求报文)进行分割,并在各个报文上打上标记序号和端口号后转发给网络层。

在网络层(IP协议),增加通信目的地(Mac地址)后转发给链路层。这样一来,发往网络的通信请求就准备完毕了,进行网络请求。

服务器在链路层接收到数据,依次往上层发送,当传输到应用层,才能真正接收到从客户端发送的HTTP请求。

图解TCP/IP分层

发送端在层与层之间传输数据时,每层必定会打上一个该层所属的首部信息。反之,接收端没经过一层时会把对应的首部信息去除。

与HTTP关系密切的协议:IP、TCP和DNS

  • 负责传输的IP协议

IP协议的作用是把各种数据包传送给对方。需要满足各类条件,其中两个重要的条件是IP地址和MAC地址。

IP地址指明节点被分配的地址,MAC地址指网卡的固定地址。IP地址可以和MAC地址配对,IP可变换,MAC地址基本不会更改。

使用ARP协议(Address Resolution Protocol)凭借MAC地址进行通信,ARP是用以解析地址的协议,根据通信方的IP地址就可反查出对应的MAC地址。

在到达通信目标前的中转过程中,计算机和路由器等网络设备只能获取很错略的传输路线,这种机制称为路由选择。

  • 确保可靠性的TCP协议

TCP协议为了更容易传送大数据才把数据分割,且TCP协议能够确认数据最终是否送达到对方。

TCP协议采用三次握手策略,确保数据能准确无误送达目标。

握手过程(使用了TCP的标志-SYN和ACK):发送端首先发送一个带SYN标志的数据包给对方。接收端收到后,回传一个带有SYN/ACK标志的数据包确认信息。最后发送端再回传一个带ACK标志的数据包,代表“握手”结束。

除上述三次握手,TCP协议还有其他各种手段来保证通信的可靠性。

  • 负责域名解析的DNS

  • 图解IP协议、TCP协议和DNS服务在使用HTTP协议的通信过程中发挥的作用:

图解

HTTP协议结构

简介

1. 无状态协议
HTTP是不保存状态的协议,即无状态协议。也就是说在HTTP这个级别,协议对于发送过的请求或响应都不做持久化处理。

为了实现保持状态功能,引入了cookie技术。有了cookie再用HTTP协议通信,就可以管理状态了。

2. 持久连接节省通信量

在HTTP协议初始版本中,没进行一次HTTP通讯就要断开一次TCP连接。会造成无谓的TCP连接建立和断开,增加通信录的开销。

持久连接:只要任意一端没有明确提出断开连接,则保持TCP连接状态。减少开销,减轻服务器端的负载,web显示速度也相应提高。

3.管线化

从前发送请求后需等待并收到响应,才能发送下一个请求。

管线化后,可同时并行发送多个请求,请求数越多,时间差就越明显。

4.Cookie状态管理

Cookie技术通过在请求和响应报文中写入Cookie信息来控制客户端的状态。

从服务器端发送的响应报文内的叫做Set-Cookie的首部字段信息,通知客户端保存Cookie。下次客户端往该服务器发送请求时,客户端会自动在请求报文中加入Cookie值后发送出去。服务端发现客户端发送的报文有Cookie后,对比服务器上的记录,最后得到之前的状态信息。

例子:

1.请求报文(没有Cookie信息的状态)

GET /reader/  HTTP/1.1
HostL: hackr.jp

2.响应报文(服务器端生成Cookie)

HTTP/1.1 200 OK
Date: Thu, 12 Jul 2012 07:12:20 GMT
Server: Apache
<Set-Cookie: sid=1234455;path=/;expires=Wed,10-Oct-12 07:12:20 GMT>
Content-Type: text/plain;charset=UTF-8

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

GET  /image/  HTTP/1.1
Host: Hackr.jp
Cookie: sid= 1234455

请求报文

请求报文是由请求方法、请求URI、协议版本、可选请求首部字段和内容实体构成。

请求报文构成

响应报文

响应报文基本上由协议版本、状态码、解释状态码的原因短语、可选响应首部字段、响应主体构成。

响应报文构成

GET

GET方法用于请求访问已被URI识别的资源。指定的资源经服务器端解析后返回响应内容。

例子:

请求:GET /index.html HTTP/1.1
Host: www.xxx.jp
响应:返回index.html的页面资源

请求:GET /index.html HTTP/1.1
Host: www.xxx.jp
If-Modified-Since:Thu,12 Jul 2012 07:30:00 GMT
响应:仅返回2012年7月12日7点30分以后更新过的index.html页面资源。如果未有内容更新,则以状态码304 Not Modified 作为响应返回

POST

POST方法用来传输实体的主体。

例子:

请求:POST /submit.cgi HTTP/1.1
HOST: www.hackr.jp
Content_Length: 1560(1560字节的数据)

HEAD

HEAD方法和GET方法一样,只是不返回报文主体部分。用于确认URI的有效性及资源更新的日期时间等。

请求: HEAD /index.html HTTP/1.1
Host: www.hackr.jp
响应:返回index.html有关的响应首部

OPTIONS

OPTIONS方法用来查询针对请求URI指定的资源支持的方法。

请求:OPTIONS * HTTP/1.1
Host: www.hackr.jp
响应: HTTP/1.1 200 OK
Allow: GET,POST,HEAD,OPTIONS(返回服务器支持的方法)

PUT 、DELETE

PUT方法用来传输文件。鉴于HTTP/1.1的PUT方法自身不带验证机制,任何人都可以上传文件,存在安全性问题,因此一般的web网站不使用该方法。

DELETE 方法用来删除文件。不带验证机制,所以一般web网站不使用DELETE方法。

当配合Web应用程序的验证机制,或遵守REST标准时还是有可能开放使用PUT、DELETE的。

TRACE

追踪路径:TRACE是让Web服务器端将之前的请求通信环回给客户端的方法。

不怎么常用,容易引发XST-跨站追踪攻击,就更不会用到了。

CONNECT

CONNECT方法要求在与代理服务器通信时建立隧道,实现用隧道协议进行TCP通信。主要使用SSL和TLS协议把通信内容加密后经网络隧道传输。

格式 CONNECT 代理服务器名:端口号 HTTP版本

请求: CONNECT proxy.hackr.jp:8080 HTTP/1.1
Host:proxy.hackr.jp
响应:HTTP/1.1 200 OK (之后进入网络隧道)

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

推荐阅读更多精彩内容