`
madbluesky
  • 浏览: 83004 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

http协议学习笔记

    博客分类:
  • java
阅读更多

      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协议学习笔记之C++ #### 一、HTTP协议基础 HTTP(Hypertext Transfer Protocol)是一种应用层协议,主要用于客户端(例如Web浏览器)与服务器之间的数据交换。它基于TCP/IP协议栈,利用TCP来确保数据传输...

    HTTP协议学习笔记

    **HTTP协议概述** ...它是一个基于请求与响应模型的、无状态的、应用层协议...学习HTTP协议对于理解和优化Web应用至关重要。深入理解HTTP协议,可以帮助我们更好地利用Web资源,解决网络问题,以及开发更高效的Web服务。

    HTTP学习笔记

    HTTP学习笔记 HTTP协议是万维网的基础协议,主要规定了浏览器和万维网服务器之间的相互通信规则。下面是对HTTP协议的详细介绍: 一、HTTP协议的定义 HTTP协议(超文本协议)是一种详细规定了浏览器和万维网...

    RTSP协议学习笔记

    RTSP协议学习笔记 在深入理解RTSP协议之前,我们首先要明确它是什么。RTSP,全称Real Time Streaming Protocol(实时流传输协议),是一种应用层协议,主要用于控制媒体的实时播放。它允许用户通过网络对远程媒体源...

    coap协议的学习笔记

    "CoAP 协议学习笔记" CoAP(Constrained Application Protocol)是一种基于 UDP 的轻量级协议,用于物联网(IoT)设备之间的通信。CoAP 协议的设计目标是满足物联网设备之间的通信需求,具有低延迟、低带宽和低功耗...

    网络协议分析笔记

    《网络协议分析笔记》 网络协议是互联网通信的基础,它定义了不同设备间如何交换信息。TCP/IP(传输控制协议/因特网协议)是网络通信中最广泛采用的一组协议,本笔记将深入探讨TCP/IP及其相关的网络协议。 首先,...

    Java 学习笔记Java学习笔记

    Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现为Oracle公司的一部分)于1995年发布。...Java学习笔记涵盖了这些核心知识点,通过深入学习和实践,你可以逐步掌握Java编程,并应用于实际项目开发中。

    流媒体相关资料\RTSP协议学习笔记

    这篇笔记主要涵盖了RTSP协议的基础知识,包括其与HTTP协议的区别、重要术语、请求消息和回应消息格式,以及一些关键的操作方法。 一、RTSP协议概述 RTSP是一种应用层协议,设计用于控制多媒体数据的传输,它不负责...

    java学习笔记markdown

    【Java学习笔记Markdown版】是针对Java初学者和进阶者的一份详尽教程,以Markdown格式编写,便于阅读和整理。Markdown是一种轻量级的标记语言,它允许用户使用易读易写的纯文本格式编写文档,然后转换成结构化的HTML...

    思科ccna学习笔记

    思科CCNA学习笔记是网络工程师的必备知识,涵盖了计算机网络的基本概念、OSI与TCP/IP协议框架、IP报文传输过程、传输层功能、TCP与UDP对比等内容。以下是该笔记的详细知识点: 一、OSI与TCP/IP协议框架 OSI(Open ...

    网络知识学习笔记

    《网络知识学习笔记》 网络知识的学习,特别是传输层和应用层的协议,是理解现代网络通信基础的关键。数据通信协议定义了数据格式和传输的规则,使得不同设备之间能有效地进行信息交互。协议的分层设计是解决网络...

    httpservletRequest的学习笔记

    【httpservletRequest的学习笔记】 在Java Web开发中,HttpServletRequest接口是Servlet API的核心组成部分,它用于封装客户端发送到服务器的HTTP请求。理解HttpServletRequest的工作原理对于任何Servlet开发者来说...

    TCPIP学习笔记---TCPIP协议基础.doc

    TCP/IP协议是网络通信的基础,它是互联网的核心协议。TCP/IP协议栈按照功能划分为四层模型,分别是应用层、传输层、互联层和网络接口层。...通过学习TCP/IP协议基础,我们可以更好地理解和解决网络通信中的问题。

    mldn学习笔记 — 网络编程

    《mldn学习笔记——网络编程》这篇博客主要探讨了计算机网络编程的相关概念和技术,结合提供的文件《215_网络编程.pdf》,我们可以深入学习这一主题。网络编程是IT领域中的核心部分,它涉及到如何通过网络进行数据...

    SpringBoot学习笔记

    ### SpringBoot学习笔记 #### 一、SpringBoot入门 ##### 1、SpringBoot简介 - **简化Spring应用开发**:SpringBoot是简化Spring应用开发的一个框架,它通过默认配置极大地减少了开发过程中的样板代码,使得开发者...

    谭浩强C语言学习笔记

    谭浩强C语言学习笔记 这是一本关于C语言的学习笔记,涵盖了从基本概念到高级应用的所有方面。下面是从中提取的重要知识点: 一、C语言概述 * C语言的历史和发展 * C语言的特点:结构化、模块化、可移植性、高效性...

Global site tag (gtag.js) - Google Analytics