http协议(超文本传输协议)是一套计算机通过网络进行通信的规则,使用http协议客户机能够从http服务器请求信息和服务。http协议采用请求/响应模型,在这一模型中总是客户端向服务器发送请求,服务器根据请求信息,请求实体的权限请求。客户端请求的方式主要有GET,POST,HEAD等。
GET 请求获取Request-URI所标识的资源
POST 在Request-URI所标识的资源后附加新的数据
HEAD 请求获取由Request-URI所标识的资源的响应消息报头
PUT 请求服务器存储一个资源,并用Request-URI作为其标识
DELETE 请求服务器删除Request-URI所标识的资源
TRACE 请求服务器回送收到的请求信息,主要用于测试或诊断
CONNECT 保留将来使用
OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求
一次完整的http通信过程中,web浏览器与web服务器之间将完成以下七个步骤:
1。 建立TCP连接。在http连接之前web浏览器首先要通过网络与服务器要建立连接,该连接是通过tcp协议来完成的。http协议是比TCP更高层次的协议,根据规则只有低层次的协议建立好之后才能建立更高层次的连接,所以首先建立tcp连接。
2。一旦建立了tcp连接,web浏览器就可以向http服务器发送请求命令。
例如:GET/sample/hello.jsp HTTP/1.1
GET 表示请求的方式为GET,/sample/hello.jsp 表示请求的资源的uri,HTTP/1.1表示http协议的版本。
3。web浏览器发送请求命令后还要以头信息的形式向向web服务器发送一些别的信息,之后浏览器发送一空白行来通知服务器头信息以发送完毕。
头信息主要包括:
Date头域
:Date头域表示消息发送的时间,时间的描述格式由rfc822定义。例如,
Date:Mon,31Dec200104:25:57GMT。Date描述的时间表示世界标准时,换算成本地时间,需要知
道用户所在的时区。
Host头域
:Host头域指定请求资源的Intenet主机和端口号,必须表示请求url的原始服务器或网关的位置。
HTTP/1.1请求必须包含主机头域,否则系统会以400状态码返回
Referer头域
:Referer 头域允许客户端指定请求uri的源资源地址,这可以允许服务器生成回退链表,可用来登陆、
优化cache等。他也允许废除的或错误的连接由于维护的目的被追踪。如果请求的uri没有自己的uri地
址,Referer不能被发送。如果指定的是部分uri地址,则此地址应该是一个相对地址。
pragma头域
:Pragma头域用来包含实现特定的指令,最常用的是Pragma:no-cache
Range头域
:Range头域可以请求实体的一个或者多个子范围。例如,
表示头500个字节:bytes=0-499
表示第二个500字节:bytes=500-999
表示最后500个字节:bytes=-500
表示500字节以后的范围:bytes=500-
第一个和最后一个字节:bytes=0-0,-1
同时指定几个范围:bytes=500-600,601-999
但是服务器可以忽略此请求头,如果无条件GET包含Range请求头,响应会以状态码206
(PartialContent)返回而不是以200 (OK)。
User-agent头域
:User-Agent头域的内容包含发出请求的用户信息。
Cache-Control头域
:Cache -Control指定请求和响应遵循的缓存机制。在请求消息或响应消
息中设置 Cache-Control并不会修改另一个消息处理过程中的缓存处理过程。请求时的缓存指令
包括no-cache、no-store、max-age、 max-stale、min-fresh、only-if-cached,响应消
息中的指令包括public、private、no-cache、no- store、no-transform、must-
revalidate、proxy-revalidate、max-age。各个消息中的指令含义如 下:
Public指示响应可被任何缓存区缓存。
Private指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的部分响应消
息,此响应消息对于其他用户的请求无效。
no-cache指示请求或响应消息不能缓存
no-store用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。
max-age指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。
min-fresh指示客户机可以接收响应时间小于当前时间加上指定时间的响应。
max-stale指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以接收超出
超时期指定值之内的响应消息。
…………等等。
消息头以空行表示结束,消息头后面可接消息体(可选的)如:name=xiaoming&sex=1
4。web 服务器应答。客户机发送请求后,服务器将向客户机回送应答。
例如:HTTP/1.1 200 OK
HTTP/1.1 表示http协议的版本,200表示响应状态码,ok为响应状态码的文字描述信息。
响应状态码的第一个数字可 能取5个不同的值:
1xx:信息响应类,表示接收到请求并且继续处理
2xx:处理成功响应类,表示动作被成功接收、理解和接受
3xx:重定向响应类,为了完成指定的动作,必须接受进一步处理
4xx:客户端错误,客户请求包含语法错误或者是不能正确执行
5xx:服务端错误,服务器不能正确执行一个正确的请求
5。web服务器发送应答头信息。
Location响应头
Location响应头用于重定向接收者到一个新URI地址。
Server响应头
Server响应头包含处理请求的原始服务器的软件信息。此域能包含多个产品标识和注释,产品标识一般按照重要性排
序。
实体
请求消息和响应消息都可以包含实体信息,实体信息一般由实体头域和实体组成。实体头域包含关于实体的原信息,实
体头包括Allow、Content- Base、Content-Encoding、Content-Language、 Content-Length、Content-
Location、Content-MD5、Content-Range、Content-Type、 Etag、Expires、Last-Modified、
extension-header。extension-header允许客户端定义新的实体头,但是这些域可能无法未接受方识别。实体可
以是一个经过编码的字节流,它的编码方式由Content-Encoding或Content-Type定义,它的长度由Content-
Length或Content-Range定义。
Content-Type实体头
Content-Type实体头用于向接收方指示实体的介质类型,指定HEAD方法送到接收方的实体介质类型,或GET方法发
送的请求介质类型 Content-Range实体头
Content-Range
实体头用于指定整个实体中的一部分的插入位置,他也指示了整个实体的长度。在服务器向客户返回
一个部分响应,它必须描述响应覆盖的范围和整个实体长度。一般格式:
Content-Range:bytes-unitSPfirst-byte-pos-last-byte-pos/entity-legth
例如,传送头500个字节次字段的形式:Content-Range:bytes0- 499/1234如果一个http消息包含此节(例如,
对范围请求的响应或对一系列范围的重叠请求),Content-Range表示传送的范围, Content-Length表示实际传
送的字节数。
6。web服务器向客户机发送数据。
7。web服务器关闭tcp连接。
HTTP协议的主要特点可概括如下:
1.支持客户/服务器模式。
2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
分享到:
相关推荐
### HTTP协议学习笔记之C++ #### 一、HTTP协议基础 HTTP(Hypertext Transfer Protocol)是一种应用层协议,主要用于客户端(例如Web浏览器)与服务器之间的数据交换。它基于TCP/IP协议栈,利用TCP来确保数据传输...
**HTTP协议概述** ...它是一个基于请求与响应模型的、无状态的、应用层协议...学习HTTP协议对于理解和优化Web应用至关重要。深入理解HTTP协议,可以帮助我们更好地利用Web资源,解决网络问题,以及开发更高效的Web服务。
HTTP学习笔记 HTTP协议是万维网的基础协议,主要规定了浏览器和万维网服务器之间的相互通信规则。下面是对HTTP协议的详细介绍: 一、HTTP协议的定义 HTTP协议(超文本协议)是一种详细规定了浏览器和万维网...
RTSP协议学习笔记 在深入理解RTSP协议之前,我们首先要明确它是什么。RTSP,全称Real Time Streaming Protocol(实时流传输协议),是一种应用层协议,主要用于控制媒体的实时播放。它允许用户通过网络对远程媒体源...
"CoAP 协议学习笔记" CoAP(Constrained Application Protocol)是一种基于 UDP 的轻量级协议,用于物联网(IoT)设备之间的通信。CoAP 协议的设计目标是满足物联网设备之间的通信需求,具有低延迟、低带宽和低功耗...
《网络协议分析笔记》 网络协议是互联网通信的基础,它定义了不同设备间如何交换信息。TCP/IP(传输控制协议/因特网协议)是网络通信中最广泛采用的一组协议,本笔记将深入探讨TCP/IP及其相关的网络协议。 首先,...
Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现为Oracle公司的一部分)于1995年发布。...Java学习笔记涵盖了这些核心知识点,通过深入学习和实践,你可以逐步掌握Java编程,并应用于实际项目开发中。
这篇笔记主要涵盖了RTSP协议的基础知识,包括其与HTTP协议的区别、重要术语、请求消息和回应消息格式,以及一些关键的操作方法。 一、RTSP协议概述 RTSP是一种应用层协议,设计用于控制多媒体数据的传输,它不负责...
TCP/IP详解学习笔记主要涵盖了网络通信的基础概念和TCP/IP协议族的核心内容。TCP/IP协议是为了克服计算机之间因操作系统和表达信息方式的差异而导致的沟通难题而诞生的,它是一个协议族,包含了众多协议,如IP、ICMP...
【Java学习笔记Markdown版】是针对Java初学者和进阶者的一份详尽教程,以Markdown格式编写,便于阅读和整理。Markdown是一种轻量级的标记语言,它允许用户使用易读易写的纯文本格式编写文档,然后转换成结构化的HTML...
思科CCNA学习笔记是网络工程师的必备知识,涵盖了计算机网络的基本概念、OSI与TCP/IP协议框架、IP报文传输过程、传输层功能、TCP与UDP对比等内容。以下是该笔记的详细知识点: 一、OSI与TCP/IP协议框架 OSI(Open ...
《网络知识学习笔记》 网络知识的学习,特别是传输层和应用层的协议,是理解现代网络通信基础的关键。数据通信协议定义了数据格式和传输的规则,使得不同设备之间能有效地进行信息交互。协议的分层设计是解决网络...
【httpservletRequest的学习笔记】 在Java Web开发中,HttpServletRequest接口是Servlet API的核心组成部分,它用于封装客户端发送到服务器的HTTP请求。理解HttpServletRequest的工作原理对于任何Servlet开发者来说...
TCP/IP协议是网络通信的基础,它是互联网的核心协议。TCP/IP协议栈按照功能划分为四层模型,分别是应用层、传输层、互联层和网络接口层。...通过学习TCP/IP协议基础,我们可以更好地理解和解决网络通信中的问题。
《mldn学习笔记——网络编程》这篇博客主要探讨了计算机网络编程的相关概念和技术,结合提供的文件《215_网络编程.pdf》,我们可以深入学习这一主题。网络编程是IT领域中的核心部分,它涉及到如何通过网络进行数据...
### SpringBoot学习笔记 #### 一、SpringBoot入门 ##### 1、SpringBoot简介 - **简化Spring应用开发**:SpringBoot是简化Spring应用开发的一个框架,它通过默认配置极大地减少了开发过程中的样板代码,使得开发者...
谭浩强C语言学习笔记 这是一本关于C语言的学习笔记,涵盖了从基本概念到高级应用的所有方面。下面是从中提取的重要知识点: 一、C语言概述 * C语言的历史和发展 * C语言的特点:结构化、模块化、可移植性、高效性...