1.引言
HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTTP)的建议已经提出。

HTTP协议的主要特点可概括如下:
1.支持客户/服务器模式。
2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

2.HTTP协议介绍
1.HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准。
2.HTTP是基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)
3.HTTP协议通常承载于TCP协议之上,有时也承载于TLS或SSL协议层之上,这个时候,就成了我们常说的HTTPS。如下图http/https

4.HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。HTTP是一个无状态的协议。
5.HTTP默认的端口号为80,HTTPS默认的端口号为443。

3.HTTP协议工作流程
一次HTTP操作称为一个事务,其工作过程大概如下:
1.用户在浏览器中键入需要访问网页的URL或者点击某个网页中链接;
2.浏览器根据URL中的域名,通过DNS解析出目标网页的IP地址;

浏览器请求这个页面:http://hackr.ip/index.html。
在这一步,需要域名系统DNS解析域名hackr.ip,得主机的IP地址 20X.189.105.112。
然后将上面结合本机自己的信息,封装成一个http请求数据包。每个HTTP请求和响应都遵循相同的格式,一个HTTP包含Header和Body两部分,其中Body是可选的
HTTP协议是一种文本协议,所以,它的格式也非常简单。HTTP GET请求的格式:GET /path HTTP/1.1Header1: Value1Header2: Value2Header3: Value3
每个Header一行一个,换行符是\r\n。HTTP POST请求的格式:POST /path HTTP/1.1Header1: Value1Header2: Value2Header3: Value3body data goes here...
当遇到连续两个\r\n时,Header部分结束,后面的数据全部是Body。HTTP响应的格式:200 OKHeader1: Value1Header2: Value2Header3: Value3body data goes here...
HTTP响应如果包含body,也是通过\r\n\r\n来分隔的。请再次注意,Body的数据类型由Content-Type头来确定,如果是网页,Body就是文本,如果是图片,Body就是图片的二进制数据。

3.在HTTP开始工作前,客户端首先会通过TCP/IP协议来和服务端建立链接(TCP三次握手)
4.建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可内容。
5.服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。
6.一般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接,然后如果浏览器或者服务器在其头信息加入了这行代码:Connection:keep-alive,TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。

3.1短连接
短连接的操作步骤是:建立连接——数据传输——关闭连接…建立连接——数据传输——关闭连接
如果客户请求频繁,将在TCP的建立和关闭操作上浪费较多时间和带宽。

3.2 长链接
长链接,指在一个连接上可以连续发送多个数据包,在连接保持期间,如果没有数据包发送,需要双方发链路检测包。
长链接操作步骤:建立连接——数据传输…(保持连接)…数据传输——关闭连接
长连接可以省去较多的TCP建立和关闭的操作,减少浪费,节约时间。
长链接分为 without pipelining 和 with pipelining,下图中是without pipelining,客户端只在收到前一个请求的响应后,才发出新的请求。

下图是with pipelining,每次建立链接后无需等待请求回来就可以发送下一个请求。

4.HTTP请求报文
客户端发送一个HTTP请求到服务器的请求消息包括以下格式:
请求行(request line)、请求头部(header)、请求体组成,下图给出了请求报文的一般格式。

请求行:方法:GET 获取资源POST 向服务器端发送数据,传输实体主体PUT 传输文件HEAD 获取报文首部DELETE 删除文件OPTIONS 询问支持的方法TRACE 追踪路径协议/版本号URL请求头:通用首部(General Header)请求首部(Request Header)响应首部(Response Header)实体首部(Entity Header Fields)请求体

请求报文拆解:

4.1GET请求

4.2POST请求

5.HTTP响应报文
HTTP响应组成:响应行、响应头、响应体。

响应行(HTTP/1.1)表明HTTP版本为1.1版本,状态码为200,状态消息为(ok)
响应头Date:生成响应的日期和时间;Content-Type:指定了MIME类型的HTML(text/html),编码类型是ISO-8859-1
响应体


响应报文拆解:

6.HTTP状态码

2XX 成功:200(OK 客户端发过来的数据被正常处理204(Not Content 正常响应,没有实体206(Partial Content 范围请求,返回部分数据,响应报文中由Content-Range指定实体内容3XX 重定向:301(Moved Permanently) 永久重定向302(Found) 临时重定向,规范要求,方法名不变,但是都会改变303(See Other) 和302类似,但必须用GET方法304(Not Modified) 状态未改变, 配合(If-Match、If-Modified-Since、If-None_Match、If-Range、If-Unmodified-Since)307(Temporary Redirect) 临时重定向,不该改变请求方法4XX 客户端错误:400(Bad Request) 请求报文语法错误401 (unauthorized) 需要认证403(Forbidden) 服务器拒绝访问对应的资源404(Not Found) 服务器上无法找到资源5XX 服务器端错误:500(Internal Server Error)服务器故障503(Service Unavailable) 服务器处于超负载或正在停机维护

7.首部字段
7.1通用首部字段

7.2请求首部字段

7.3响应首部字段

7.4实体首部字段

HTTP超文本传输协议详解相关推荐

  1. HTTP传输协议详解(传输过程及数据格式详细)

    一. 知其意: 1. HTTP协议的概念:Hyper Text Transfer Protocol 超文本传输协议,定义了客户端与服务器端通信时,发送数据的格式. 2.HTTP协议的特点 1.基于TC ...

  2. Http-超文本传输协议-详解

    一.HTTP基本概念 1.1.Http是什么? HTTP是 超文本传输协议 分为三个部分 超文本 它就是超越了普通文本的文本,它是文字.图片.视频等的混合体,最关键有超链接,能从一个超文本跳转到另外一 ...

  3. Dubbo远程传输协议详解

    前言 上次小编为大家带来了Dubbo调用及容错机制详解,不知道大家有没有去看小编最后留下的问题,欢迎对文章进行评论也希望大家和小编多多交流.今天接着为大家带来Dubbo的内容,传输协议,上次调用机制中 ...

  4. A2DP-Link传输协议详解以及实例龙讯LT947LMT/LT948D简介

    要了解A2DP-lINK传输协议,首先得了解有哪几部分组成,这里简单将协议分为两大类!主要讲四个点. 一:A2DPD整体性协议结构: A2DP-LINK全称:(Automotive Dualstrea ...

  5. FTP文件传输协议详解

    简介:FTP是基于TCP协议之上的具有C/S架构的文件服务器. 需要通过控制连接20端口来控制双方的通信 需要通过数据连接21端口来进行双方的通信 主动模式:最大的特点是数据连接由服务器的20端口主动 ...

  6. 流媒体传输协议详解之---RTSP认证

    from:http://blog.csdn.net/machh/article/details/52121648 Rtsp认证主要分为两种: 基本认证(basic authentication)和摘要 ...

  7. 超文本传输协议http详解

    HTTP特点 HTTP(HyperText Transfer Protocol,超文本传输协议),是一个应用层协议,虽然在2015年已推出HTTP/2版本,并被主要的web浏览器和web服务器支持.但 ...

  8. 最详细的流媒体传输协议-rtsp协议详解

    流媒体传输协议-rtsp协议详解 参阅:RTSP协议详解和分析从零开始写一个RTSP服务器(一)RTSP协议讲解关于RTSP_RTP_RTCP协议的深刻初步介绍 rtsp RTSP出现以前,最热的大概 ...

  9. SOME/IP协议详解「2.2.1·SOME/IP的传输方式」

    SOME/IP协议详解「2.2.1·SOME/IP的传输方式」 点击返回雪云飞星的SOME/IP协议详解「总目录」 SOME/IP协议详解「2.2.1·SOME/IP的传输方式」 1 基础传输 2 N ...

最新文章

  1. Linux下C++开发工具介绍
  2. 突破性进展!上海光机所成果登上《Nature》封面!
  3. xp下msn8.5无法安装的解决办法
  4. 守得云开见月明:一次ASM存储高可用故障解决过程分析
  5. mysql 多源复制 过滤_MYSQL 多源复制,过滤复制与应用场景
  6. 怎么使用 soapui 做接口测试?
  7. 有没有哪里有python电子书_为初学者准备的15本免费Python电子书
  8. 荣耀路由2 虚拟服务器,荣耀路由器2恢复出厂设置的两种方法
  9. 信创办公--基于WPS的Word最佳实践系列(修改标题样式快速实现章前分页效果)
  10. html透明度从零到1,CSS过渡不透明度仅从0到1,或其他过渡效果
  11. 地铁与日本移动互联网
  12. 适合程序员学习的国外网站推荐
  13. Data()笔记之getDate()的基本用法
  14. C++四书五经_完整版(侯捷)
  15. springboot+Rabit实战二:(Rabbit MQ web 界面管理)
  16. 几款好用的UML建模工具
  17. 【c51单片机】交通红绿灯设计
  18. Nginx白名单设置
  19. Gene Ontology 的GO注释的可视化
  20. 数组的归一化c语言,如何归一化频率数组

热门文章

  1. 如何在自己行业内放大和增加收入
  2. 给windows7系统盘瘦身
  3. Win7安装win10,无需全盘重新分区,原MBR格式转GPT格式,创建EFI和MSR分区,安装win10
  4. Android光线传感器
  5. 在C#中使用钩子实现Alt+F4健窗口最小化功能
  6. Mac 中composer的安装
  7. 谈谈企业的数据工作!——企业的数据分析能力金字塔
  8. 国内镜像加速器registry的制作
  9. IDA反汇编/反编译静态分析iOS模拟器程序(六)交叉引用
  10. 兔子繁殖问题Java实现