HTTP协议(一) 概述

HTTP定义

HTTP????The Hypertext Transfer Protocol is an application protocol for distributed, collaborative, hypermedia information systems. HTTP is the foundation of data communication for the World Wide Web.

超文本传输协议(HTTP)是一种详细规定了浏览器和万维网服务器之间互相通信的规则。

HTTP是TCP/IP模型中应用层的协议????????

HTTP作为一种传输协议,也是像HTML一样随着时间不断演进的。目前流行的HTTP1.1是HTTP协议的第三个版本,默认是持久连接的。

HTTP是一个无状态的面向连接的协议,无状态不代表HTTP不能保持TCP连接,更不能代表HTTP使用的是UDP协议(无连接)

从HTTP/1.1起,默认都开启了Keep-Alive,保持连接特性,简单地说,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连。Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。

?

HTTP请求和响应

以浏览器访问百度首页为例,www.baidu.com

  1. 客户端(浏览器)发送一个请求(Request)去获取 http://www.baidu.com 的html;

    服务器把响应(Response)发送回浏览器

  2. 浏览器分析响应(Response)中HTML,其中引用了很多其他文件,如图片,CSS,JS等
  3. 浏览器会自动再次发送请求(Request)去获取图片,CSS,或JS
  4. 所有的文件都下载成功后,网页才算完整呈现

上面所有HTTP请求,仅靠一个TCP连接,这就是所谓的持久连接。

请求和响应详解:

所谓的HTTP请求,也就是Web客户端向Web服务器发送信息;

收到HTTP请求后,会根据请求的信息做某些处理,相应地返回一个HTTP响应

(这些处理可能仅仅是静态的返回页,或是包含Asp.net, PHP, Jsp 等语言进行处理后返回)


HTTP Request


HTTP Response


请求行

HTTP头

内容


状态行

HTTP头

返回内容

?


HTTP Request请求行


HTTP Response 状态行


GET


www.baidu.com


HTTP/1.1


HTTP/1.1


200


OK


请求方法


网址


版本


版本


状态码


状态描述

请求行

组成:????请求方法 + 网址 + 版本

请求方法:常见Get和Post,实际HTTP请求方法还有很多,如: PUT方法,DELETE方法,HEAD方法,CONNECT方法,TRACE方法等。具体自行Bing;

状态行

组成:????版本 + 状态码 + 状态描述

状态码: HTTP状态码所代表的含义都有解释,分类如下,具体查看 HTTP响应状态码

  • 信息类 (100-199)
  • 响应成功 (200-299)
  • 重定向类 (300-399)
  • 客户端错误类 (400-499)
  • 服务端错误类 (500-599)

HTTP头

HTTP请求:请求头(request header);普通头(general header);实体头(entity header)

HTTP响应:响应头(response header);普通头(general header);实体头(entity header)

通用头(General header)????????描述HTTP协议本身。 如描述HTTP是否持久连接的Connection头; 发送日期的Date头; TCP连接时间的Keep-Alive头; 缓存控制的Cache-Control头等

实体头(Entity header)????????描述HTTP信息的头。既可出现在HTTP POST方法的请求中,也可出现在HTTP响应中。如Content-Type和Content-length都是描述实体的类型和大小的头都属于实体头。其它还有用于描述实体的Content-Language,Content-MD5,Content-Encoding;以及控制实体缓存的Expires和Last-Modifies头等

请求头(HTTP Request Header)????是由客户端发往服务端,以便使服务端更好地满足客户端请求的头。请求头只能出现在HTTP请求中。如告诉服务器只接收某种响应内容的Accept头; 发送Cookies的Cookie头,显示请求主机域的HOST; 用于缓存的If-Match,If-Match-Since ,If-None-Match头,用于只取HTTP响应信息中部分信息的Range头,用于附属HTML相关请求引用的Referrer头等

响应头(HTTP Response Header)????HTTP响应头是那些描述HTTP响应本身的头,这里面并不包含描述HTTP响应中第三部分也就是HTTP信息的头(这部分由实体头负责)。比如说定时刷新的Refresh头,当遇到503错误时自动重试的Retry-After头,显示服务器信息的Server头,设置COOKIE的Set- Cookie头,告诉客户端可以部分请求的Accept-Ranges头等(以上HTTP头 具体查看 HTTP头)

内容

HTTP请求的内容只在POST请求中存在,GET请求并不包含任何实体。这也就是POST及GET本质上的区别。

HTTP响应内容就是HTTP请求所请求的信息。这个信息可以是一个HTML,也可以是一个图片等等。

HTTP状态保持

HTTP协议是无状态的,即对于服务器来说,并不知道每一次请求是否来自同一个客户端,因此需要以下手段来保持状态。

通过Cookies保持状态

为了解决这个问题,HTTP协议可通过Cookies来保持状态

通过表单变量保持状态

除了Cookies之外,还可以使用表单变量来保持状态,比如Asp.net就通过一个叫ViewState的Input="hidden"的框来保持状态,比如:

 <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMjA0OTM4MTAwNGRkXUfhlDv1Cs7/qhBlyZROCzlvf5U=" />

??? 这个原理和Cookies大同小异,只是每次请求和响应所附带的信息变成了表单变量。

通过QueryString保持状态

这个原理和上述两种状态保持方法原理是一样的,QueryString通过将信息保存在所请求地址的末尾来向服务器传送信息,通常和表单结合使用,一个典型的QueryString比如:

????www.xxx.com/xxx.aspx?var1=value&var2=value2
				

?


?

时间: 2024-10-16 22:00:04

HTTP协议(一) 概述的相关文章

《网络协议》TCP 与 UDP 协议基本概述

基本概述 传输层主要功能为两台主机上的应用程序提供端到端的通信,通过端口号识别两台主机上相对应程序之间进行通信.传输层中最主要的两个协议就是 TCP 和 UDP,可以根据 IP 首部的协议字段来识别传输数据的协议类型. TCP 是面向连接的.可靠的流协议,流是指不间断的数据结构.它的任务是把来自应用程序的数据分成合适的小块交给下面的网络层,确认接收到数据的分组.为数据块设置超时时钟,一旦超过该时间就重新发送数据.TCP 为提供可靠性传输,实行"顺序控制"或"重发控制"

传输控制层协议TCP概述---抄书

1.TCP的主要特点 TCP是TCP/IP体系中非常复杂的一个协议.下面介绍TCP的最主要的特点. (1)TCP是面向连接的运输层协议.也就是说,应用程序在使用TCP协议之前,必须先建立TCP连接.在传输数据完毕后,必须释放已经建立的TCP连接.也就是说,应用进程之间的通信好像在"打电话":通话前要先拨号建立连接,通话结束后挂机释放连接. (2)每一条TCP连接只能有两个端点(endpoint),每一条TCP连接只能是点对点的(一对一). (3)TCP提供可靠交付的服务.通过TCP连接

tcp+ip+http+以太网协议+socket++(概述)

这几个东西一点都不会混乱,因为都不是一层面上的东东,现在想想早期我之所以觉着有些搞不懂是因为对协议所处的抽象层不清楚,可见知识应该是从底层扎实走的. 首先协议一点都不高大上,协议就是双方达成的必须共同遵守的规范,仅此而已. 互联网之间的数据传输都是在以太网上的,数据在放在以太网之前需要做一些加工,假设我们要发一个http请求头,http请求头是应用层面上的,我们自己根据http协议的规范拼写了一个http的request,我们拼写完毕之后需要把这个放在以太网上才能发送给另一台计算机,然而我们是不

UIScrollViewDelegate协议方法概述

()contentSize:可以滑动区域的大小 contentOffset:滑动视图里面的内容的相对位置 contentInset:滑动视图在外面的相对位置 1.只要view有滚动(不管是拖.拉.放大.缩小等导致)都会执行此函数 -(void)scrollViewDidScroll:(UIScrollView *)scrollView; 2.将要开始拖拽,手指已经放在view上并准备拖动的那一刻 -(void)scrollViewWillBeginDragging:(UIScrollView *

爬虫协议robots

前面的话 Robots协议(也称为爬虫协议.机器人协议等)全称是“网络爬虫排除标准”(Robots Exclusion Protocol),网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取.本文将详细介绍爬虫协议robots 概述 robots.txt文件是一个文本文件,是搜索引擎中访问网站的时候要查看的第一个文件.robots.txt文件告诉蜘蛛程序在服务器上什么文件是可以被查看的 当一个搜索蜘蛛访问一个站点时,它会首先检查该站点根目录下是否存在robots.txt,如果

TCP模型及其重点协议总结

概述 TCP/IP协议族,作为最早的协议模型(后来OSI七层也是在该基础上细分而来),每层都有一些重点的协议,面试时也会被询问,快要找工作,得做一些总结了 [1]TCP4层协议模型概述 [2]各层重点协议介绍 1.TCP4层协议模型概述 TCP与OSI对比图 其中Tcp各层重点协议如下图所示 网络层协议包括: [1]IP(Internet Protocol)协议 IP是网络层的核心,通过路由选择将下一条IP封装后交给接口层.IP数据报是无连接服务. [2]ICMP(Internet Contro

《网络协议》UDP 协议

概述 UDP 是无连接.不可靠的数据报传输层协议,为应用程序发送和接收数据报,只是将数据报的分组从一台主机发送到另一台主机,但并不保证数据报能够到达另一端,任何必须的可靠性都由应用程序提供.在 UDP 情况下,虽然可以确保发送消息的大小,却不能保证消息一定会达到目的端.没有超时和重传功能,当 UDP 数据封装到 IP 数据报传输时,如果丢失,会发送一个 ICMP 差错报文给源主机. 即使出现网络阻塞情况,UDP 也无法进行流量控制.此外,传输途中即使出现丢包,UDP 也不负责重发,甚至当出现包的

各种工业以太网概述

工业以太网 工业以太网是基于IEEE 802.3 (Ethernet)的强大的区域和单元网络.利用工业以太网,SIMATIC NET 提供了一个无缝集成到新的多媒体世界的途径.企业内部互联网(Intranet),外部互联网(Extranet),以及国际互联网(Internet) 提供的广泛应用不但已经进入今天的办公室领域,而且还可以应用于生产和过程自动化.继10M波特率以太网成功运行之后,具有交换功能,全双工和自适应的100M波特率快速以太网(Fast Ethernet,符合IEEE 802.3

II协议

IIC协议学习笔记 预备知识: 处理器和芯片间的通信可以形象的比喻成两个人讲话:1.你说的别人得能听懂:双方约定信号的协议.2.你的语速别人得能接受:双方满足时序要求. 因此我们主要学的是: (1):该协议的概述与术语的定义: (2):该协议所支持的总线接口: (3):该协议的特征和原理: (4):信号的类型和对应的信号帧格式以及传输的时序要求: (5):支持的一些速率和基于该协议的相关设备,要记住. (6):软件模拟举例. 一.IIC协议的概述与术语的定义: I2C(Inter-Integra

RTMP协议研究

RTMP协议研究 1协议研究概述 协议设计和分析一直都是在工作遇到,正好在这里总结一下,说到协议,在这个网络的时代,没有人可以离开它了.他存在我们生活中的任何角落,只不过我们平时,并没有注意到它的存在,可以这么说如果没有协议,我们生活和日常的工作生产都不能进行.如果仔细想想你生活中用到的所有东西,协议已经包含其中.那到底什么是协议呢?说的简单一点就是双方达成的共识,以便更好的交流,理论上协议是什么呢?如果学过<信号与系统>的人都知道有个简单的道理,就是信息在经过一个管道的符号集,到另一个符号集