注:以物流做形象类比以便更好理解HTTP协议

一、HTTP是什么?

HTTP的定义

HTTP( Hypertext Transfer Protocol, 超文本传输协议) 是在万维网上进行通信时
所使用 的协议方案。
HTTP协议组成

报文

定义

HTTP报文就是数据交换标准和文本数据的集合。好比物流里的包裹。

组成

start line(起始行)

Request-URL(请求URL):所请求资源,或者URL路径组件的完整URL。

Method(请求方法):客户端希望服务器对请求资源执行的动作

Status Code(状态码):这三位数字描述了请求过程中所发生的情况。

Reson-phrase(原因短语):跟在状态码后面,为人提供对状态的解释

version(版本):报文所使用的HTTP版本

header(首部)

Accept首部

顾名思义,Accept为客户端提供了将其自己喜好方式和能力传递给服务器端。服务器根据Accept返回对应的信息,避免了服务器传输一些多余的信息。

Accept:告诉服务器能够发送哪些媒体类型

Accept-charset:告诉服务器能够发送哪些字符集

Accept-Encoding:告诉服务器能够发送哪些编码方式

Accept-Language:告诉服务器可以发送那些语言

TE:告诉服务器可以使用哪些扩展的传输编码

通用缓存首部

Cache-Control:用于随报文传送缓存指示

pragma:另一种随报文传送指示的方式

通用首部

Connetion:允许客户端和服务器端指定与请求

body(主体)

HTTP通信
Connect
(a)用户URL拨号:输入页面地址,点击超链接,点击提交按钮
(b) 浏览器从 URL 中解析出服务器的主机名;
(c) 浏览器通过DNS将服务器的主机名转换成服务器的 IP 地址;
(d) 浏览器将端口 号(如果有的话) 从 URL 中解析出来;

(e)浏览器发起到这个IP地址端口 80的连接

(f)服务器监视端口监听客户端电脑的请求,建立握手
Request

客户端建立TCP管道浏览器向服务器发送一条HTTP GET报文

Response
浏览器从服务器读取HTTP响应报文
Close
浏览器关闭连接

认识客户端和服务器端

客户端

发送 HTTP 请求

请求操作

把服务器返回的HTTML内容显示在客户端上

服务器端

Web 服务器 是 Web 资 源( Web resource) 的宿主

Web资源包括静态文件和动态数据

静态文件:

文 本文 件、 HTML 文 件、 微软的 Word 文 件、 Adobe 的 Acrobat 文 件、
JPEG 图片文件、 AVI 电影文件, 或所有其他你能够想到的格式。

动态数据:软件程序,数据库动态数据
Web资源对应的媒体类型(MIME 类 型)

常见的MIME类型(通用型):
超文本标记语言文本 .html text/html
xml文档 .xml text/xml
XHTML文档 .xhtml application/xhtml+xml
普通文本 .txt text/plain
RTF文本 .rtf application/rtf
PDF文档 .pdf application/pdf
Microsoft Word文件 .word application/msword
PNG图像 .png image/png
GIF图形 .gif image/gif
JPEG图形 .jpeg,.jpg image/jpeg
au声音文件 .au audio/basic
MIDI音乐文件 mid,.midi audio/midi,audio/x-midi
RealAudio音乐文件 .ra, .ram audio/x-pn-realaudio
MPEG文件 .mpg,.mpeg video/mpeg
AVI文件 .avi video/x-msvideo
GZIP文件 .gz application/x-gzip
TAR文件 .tar application/x-tar
任意的二进制数据 application/octet-stream
用于WAP服务器的MIME类型有:
MRP文件(国内普遍的手机)
.mrp application/octet-stream
IPA文件(IPHONE)
.ipa application/iphone-package-archive
  
.deb application/x-debian-package-archive
APK文件(安卓系统)
.apk application/vnd.android.package-archive
CAB文件(Windows Mobile)
.cab application/vnd.cab-com-archive
XAP文件(Windows Phone 7)
.xap application/x-silverlight-app
SIS文件(symbian平台/S60V1)
.sis application/vnd.symbian.install-archive *(下有)
SISX文件(symbian平台/S60V3/V5)
.sisx application/vnd.symbian.epoc/x-sisx-app
JAR、JAD文件(JAVA平台手机通用格式)
.jar .jad下面有

完整的MIME类型参考:http://www.w3school.com.cn/media/media_mimeref.asp

URI两种形式:URL和URN

URI:服务器资源名被称为统一资源 标识符( Uniform Resource Identifier, URI),每个资源都对应唯一的标识(URI);
URL:统一资源 定位符( URL) 是资源标识符最常见的形式。
URL三个部分
Scheme:访问资源所使用的协议类型。通常是HTTP协议。
服务器地址:一般指的是服务器的域名或者是IP地址
资源地址:资源路径+资源名
URN:URI 的第二种形式就是统一资源 名 ( URN)
HTTP 方法(HTTP method)
HTTP方法 描述
GET: 从服务器向客户端发送命名资源
PUT: 将来自 客户端的数据存储到一个命名的服务器资源中去
DELETE: 从服务器中删除命名资源
POST: 将客户端数据发送到一个服务器网关应用程序
HEAD: 仅发送命名资源响应中的 HTTP 首部
返回状态码
HTTP状态码 描述
200 OK。 文档正确返回
302 Redirect(重定向)。 到其他地方去获取资源
404 Not Found(没找到)。 无法找到这个资源

请求报文
HTTP 报文包括以下三个部分。

• 主体
GET /tools.html HTTP/1.0-------------------------• 起始行(请求方法/请求资源/使用的协议/协议版本)

• 首部字段
User-agent: Mozilla/4.75 [en] (Win98; U)
Host: www.joes-hardware.com
Accept: text/html, image/gif, image/jpeg
Accept-language: en


HTTP协议(待完善)的更多相关文章

  1. DHCP协议格式、DHCP服务搭建、DHCP协商交互过程入门学习

    相关学习资料 http://www.rfc-editor.org/rfc/rfc2131.txt http://baike.baidu.com/view/7992.htm?fromtitle=DHCP ...

  2. TCP协议学习总结(中)

    很多人都说TCP协议是一个十分复杂的协议,在学习当中,我对协议每一个问题都分解学习后,每一个分解我都能体会和理解它的要点,并不难理解.但我把这些拆分的细节合并后,确认感觉这样一个协议相对“臃肿”但又好 ...

  3. TCP/IP 协议、地址

    (一)TCP/IP 协议是端与端之间通信的基础,计算机网络,分组报文,协议是将信息正确传递的组成. 计算机网络: 由多个客户端,中间路由组成的网络体系,每个节点都一个ip进行唯一识别.路由是作为一个转 ...

  4. 【阿里云IoT+YF3300】2.阿里云IoT云端通信Alink协议介绍

    如果单单只有MQTT协议,也许很难支撑起阿里这个IoT大厦.Alink协议的出现,不仅仅是数据从传感端搬到云端,它就如基因图谱,它勾画了一个大厦的骨架,有了它,才有了IoT Studio,才有了大数据 ...

  5. PKI系统深入介绍

    公钥基础设施(Public Key Infrastructure,简称PKI)是目前网络安全建设的基础与核心,是电子商务安全实施的基本保障,因 此,对PKI技术的研究和开发成为目前信息安全领域的热点. ...

  6. Linux内核 TCP/IP、Socket参数调优

    Linux内核 TCP/IP.Socket参数调优 2014-06-06  Harrison....   阅 9611  转 165 转藏到我的图书馆   微信分享:   Doc1: /proc/sy ...

  7. [认证授权] 3.基于OAuth2的认证(译)

    OAuth 2.0 规范定义了一个授权(delegation)协议,对于使用Web的应用程序和API在网络上传递授权决策非常有用.OAuth被用在各钟各样的应用程序中,包括提供用户认证的机制.这导致许 ...

  8. Webservice优缺点总结

    优点: 1 .采用xml支持跨平台远程调用. 2.基于http的soap协议,可跨越防火墙. (因为SOAP一般使用HTTP协议,而服务器的这个协议一般都是开放的,而且是可以穿过防火墙的) 3.支持面 ...

  9. Linux内核Socket参数调优

    可调优的内核变量存在两种主要接口:sysctl命令和/proc文件系统,proc中与进程无关的所有信息都被移植到sysfs中.IPV4协议栈的sysctl参数主要是sysctl.net.core.sy ...

  10. WebService远程调用技术

    1.---------------------------------介绍-------------------------------------------------- (1)远程调用:一个系统 ...

随机推荐

  1. linux下vim命令详解

    高级一些的编辑器,都会包含宏功能,vim当然不能缺少了,在vim中使用宏是非常方便的::qx     开始记录宏,并将结果存入寄存器xq     退出记录模式@x     播放记录在x寄存器中的宏命令 ...

  2. Photoshop CS6 快捷键

    1.工具箱   移动工具 [V]矩形.椭圆选框工具 [M]套索.多边形套索.磁性套索 [L]快速选择工具.魔棒工具 [W] 裁剪.透视裁剪.切片.切片选择工具 [C]吸管.颜色取样器.标尺.注释.12 ...

  3. [转]十款提高开发效率的PHP编码工具

    1 . PHPUnit 测试在软件开发中是相当重要的一环,但很多开发者都只是给予很少的时间去测试,因为这工作的确相当耗时,枯燥并且容易出错.为了解决以上问题,自动化测试工具能让开发者编写一系列测试脚本 ...

  4. Linux_服务

    1.服务启动顺序 http://bbs.chinaunix.net/thread-1970916-1-1.html http://bbs.csdn.net/topics/240060477 2.Lin ...

  5. Python学习(19)正则表达式

    目录 Python 正则表达式 re.match 函数 re.search 方法 re.match 函数与 re.search 方法区别 检索和替换 正则表达式修饰符 - 可选标志 正则表达式模式 正 ...

  6. go切片

    本文实例讲述了GO语言数组和切片的用法.分享给大家供大家参考.具体分析如下: 一.数组 与其他大多数语言类似,Go语言的数组也是一个元素类型相同的定长的序列. (1)数组的创建. 数组有3种创建方式: ...

  7. Android开发面试经——2.常见Android基础笔试题

     标签: androidAndroid基础Android面试题Android笔试题 2015-03-12 15:04 3361人阅读 评论(3) 收藏 举报  分类: Android开发(29)  版 ...

  8. C++时间函数模板

    //测时间 class Timer { private: clock_t _start; clock_t _end; public: Timer() { start(); } void start() ...

  9. python网络编程socket之多线程

    #coding:utf-8 __author__ = 'similarface' import os,socket,threading,SocketServer SERVER_HOST='localh ...

  10. VC++多工程项目

    目录 第1章 VC++6.0    1 1.1 设置依赖关系    1 1.2 编译顺序    2 1.3 自动连接    3 1.4 静态库    3 1.4.1 嵌入    3 1.4.2 替换  ...