`
bukebuhao
  • 浏览: 88737 次
  • 性别: Icon_minigender_1
  • 来自: 绍兴
社区版块
存档分类
最新评论

HTTP认识-HTTP学习

阅读更多

【HTTP 官方定义】

超文本传输协议(HTTP)是一种为分布式,合作式,多媒体信息系统服务,面向应用层的 协议。

The Hypertext Transfer Protocol (HTTP) is an application-level protocol for distributed, collaborative, hypermedia information systems.

HTTP协议是一种请求/响应协议。 与服务器建立连接后,客户端以请求方法,URI和协议版本号,然后紧接着跟随一个类MIME(MIME-like)消息,这个类MIME消息包括请求修饰 符,客户信息和可能的消息主体。服务器以一个状态行并跟随一个类MIME(MIME-like)消息响应,状态行包含消息的协议版本和成功出错的状态码, 类MIME消息包含服务器信息,实体元信息,和可能的实体。

The HTTP protocol is a request/response protocol. A client sends a request to the server in the form of a request method, URI, and protocol version, followed by a MIME-like message containing request modifiers, client information, and possible body content over a connection with a server. The server responds with a status line, including the message's protocol version and a success or error code, followed by a MIME-like message containing server information, entity metainformation, and possible entity-body content.

【个人的理解】

实际上就是网络消息传递的规则,信息交换的规则。还是参照实际例子学习比较直接,深入。用firebug查看一下,请求头和响应头如下:

橘黄色就是请求方法,协议版本号,状态码,红色标记的就是MIME消息,具体的每个字段的含义下次再介绍啦!

【HTTP URL 格式】

The "http" scheme is used to locate network resources via the HTTP protocol. This section defines the scheme-specific syntax and semantics for http URLs.

http_URL = "http:" "//" host [ ":" port ] [ abs_path [ "?" query ]]

http 表示要通过HTTP协议来定位网络资源;host表示合法的Internet主机域名或者IP地址;port指定一个端口号,为空则使用缺省端口 80;abs_path指定请求资源的URI;query就是请求参数。

eg:

http://www.onccc.com/search/product/%E9%A5%B0%E5%93%81_1.html?goodsTypeId=&productProperty=&displayMode=default&supplyType=0&markeyId=&probativeFlag=1&idInfoFlag=1&orderInformation=0

分解如下:

scheme =http

host =www.onccc.com

port =80

abs_path =search/product/%E9%A5%B0%E5%93%81_1.html

query =goodsTypeId=&productProperty=&displayMode=default&supplyType=0&markeyId=&probativeFlag=1&idInfoFlag=1&orderInformation=0

其中要注意的点:

  1. url中的scheme和host大小写不区分;

  2. abs_path中是以"/"做为分割符号,而且必须是ASCII,对于非ASCII,可对其encode编码,例如上面的“%E9%A5%B0%E5%93%81”就是“饰品”的utf-8转码,以十六进制显示

  3. URL字符长度理论上是没限制,如果过长服务器会返回414状态码,URL长度主要影响浏览器和后台服务器,其中ie6最长2047,因此最好不要超过2047个字符

【URI URL URN区别】

   A URI can be further classified as a locator, a name, or both.  The
   term "Uniform Resource Locator" (URL) refers to the subset of URI
   that identify resources via a representation of their primary access
   mechanism (e.g., their network "location"), rather than identifying
   the resource by name or by some other attribute(s) of that resource.
   The term "Uniform Resource Name" (URN) refers to the subset of URI
   that are required to remain globally unique and persistent even when
   the resource ceases to exist or becomes unavailable.

   可以这样理解URI就是一个人的唯一标识,URL就是人的地址,URN是人的身份证
   至于网上所说得URL和URI的区别,目前意义不大的。现在只需要知道一下几点就可了

   1.URI的语法 [scheme:] scheme-specific-part
 
        eg:http://www.onccc.com/ 其中 scheme=http;scheme-specific-part=//www.onccc.com/
         kefu@onccc.com 其中scheme=null,scheme-specific-part=kefu@onccc.com
   2.URI又分不透明的(opaque)和分层(hierarchical)的两类。
     
      不透明的URI指scheme-specific-part不是以‘/’开头的绝对的URI; eg:kefu@onccc.com
      分层的URI是scheme-specific-part以‘/’开头的绝对的URI或相对的URL,eg:http://www.onccc.com/product/index.html, /product/index.html
      分层的URI的scheme-specific-part符合[//authority] [path] [?query] [#fragment] eg:http://www.onccc.com/product/index.html?v=t
      authority又分基于服务器和授权机构,授权机构就不论述了,基于服务器以‘//’开头的,格式<userinfo>@<host>:<port>
      其他的更详细的,可参看http://www.ietf.org/rfc/rfc2396.txt (3.2.2. Server-based Naming Authority)




  3. URI的标准化normalize和分解resolution,实际意思就是把相对路径转换成绝对简单路径以及反转

      假定目录product直接位于根目录之下,product有子目录list和detail,detail有文件title.html,list是当前目录。
      为了显示title.html中的内容,你可能输入type \product\.\detail\title.html。这种不是最简单的。
      实际上只要输入\product\detail\title.html,就是最简单标准的。反之就是反解。

 4. 其他更多的请参看http://eastsun.iteye.com/blog/37013


【参考学习】

在线了解http协议 http://www.w3.org/Protocols/rfc2616/rfc2616-sec1.html#sec1.4

【后续】

主要是介绍常见的消息头含义以及web开发中常见的问题

分享到:
评论

相关推荐

    财信实验作业-管理信息系统的初步认识-安装实验.docx

    财信实验作业-管理信息系统的初步认识-安装实验 一、实验目的 本实验的目的是了解一般管理信息系统的安装、使用方法,并...同时,我们也学习到了如何使用软件分析其基本功能,并对管理信息系统的认识有了一定的提高。

    Web安全学习笔记-Web-Sec Documentation

    文档还将网络攻防技术的演进作为另一条历史脉络,从简单的拒绝服务攻击(DoS)发展到如今的复杂的社会工程学攻击,让读者对网络安全的整体趋势有一个宏观的认识。 网络安全观的演变也是文档中浓墨重彩的一笔。随着...

    d2l-zh-1.1.zip

    - "chapter_introduction" 涵盖了深度学习的基本概念和历史背景,为读者提供了对这一领域的整体认识。 - "chapter_prerequisite" 部分则介绍了必要的数学基础知识,如线性代数、概率论和统计,以及编程语言(如...

    如何学习Object-C语言.docx

    通过上述介绍的学习路径和资源,相信你已经对如何学习Objective-C有了较为清晰的认识。记住,实践是检验真理的唯一标准,不断动手编码才是掌握Objective-C的关键。希望每位学习者都能在Objective-C的世界里找到乐趣...

    传智博客-学习iOS前言 PPT

    因此,学习iOS开发前,你需要对Swift语言有基本的认识,包括变量、常量、数据类型、控制流(如条件语句和循环)、函数和类等基础知识。 其次,了解Objective-C也是有益的,尽管Swift已成为首选语言,但许多现有的...

    从零开始学习z-stack(完整版)

    Zigbee技术是在认识到蓝牙技术在某些应用场景下存在的局限性之后产生的。蓝牙技术虽然具备许多优点,但其较高的功耗、较短的通信距离以及较小的组网规模限制了它在工业自动化和家庭自动化领域的应用。随着这些领域对...

    Qt入门学习实践-Practice

    Qt是一个跨平台的应用...通过这些知识点的学习和实践,初学者可以逐步建立起对Qt的全面认识,并有能力开发出自己的跨平台应用程序。在实际操作中,结合代码示例、调试工具和文档资料,能更有效地加深理解和提升技能。

    Struts1.0学习文档-初学者入门.doc

    ### Struts 1.0 学习文档:初学者入门详解 #### 一、Struts 概述 Struts 是一款基于 Java Servlet 和 XML 的开源框架,专为简化 Web 应用开发而设计。随着 Web 应用复杂度的增加,代码重用性、移植性和模块化成为...

    ftp&http-报文还原

    FTP(File Transfer Protocol)与HTTP(Hypertext Transfer Protocol)是互联网上两种常见的通信...总之,这个实验将提供一个实践性的平台,帮助你深入理解网络通信的细节,对FTP、HTTP以及TCP/IP协议有更直观的认识。

    学习node.js,搭建博客 共17章

    在开始搭建博客之前,我们需要对Node.js的基础有清晰的认识。这包括了解Node.js的安装、基本的模块系统(如`fs`用于文件操作,`http`用于创建服务器,`path`用于处理路径等)、npm(Node Package Manager)的使用...

    【认识微服务-2.服务拆分和远程调用】

    在本主题“认识微服务-2.服务拆分和远程调用”中,我们将深入探讨微服务的核心组成部分:服务拆分和服务之间的远程调用。 服务拆分是微服务架构的基础,它的目标是实现应用程序的模块化,将复杂的大规模系统分解为...

    01-认识oracle.pptx

    学生可以通过指定的网站HTTP://oracle.ysedusky.net获取更多学习资源。 课程的评价标准注重理论与实践相结合,总评成绩由期末考试(60%)、作业与实验成绩(40%)组成,同时考虑考勤情况和技术加分。迟到、早退或...

    简单HTTP代理服务器-源码c++

    为了深入学习,你可以解压并查看这些文件,分析代码结构,了解如何处理HTTP请求、响应以及如何实现HTTPS支持。 总的来说,构建一个简单的HTTP代理服务器涉及到对HTTP协议、TCP/IP通信、多线程编程和可能的加密技术...

    初学者HTML学习和认识

    ### 初学者HTML学习与认识 #### Internet与World Wide Web简介 互联网(Internet)与万维网(World Wide Web,简称WWW或Web)是当今社会不可或缺的信息交流平台。要了解HTML,首先需对这两个概念有所认识。 - **...

    电信软计网原理课程实验代码-UDP-HTTP等实验-内含源码和说明书(可自己修改).zip

    学生将学习如何创建一个简单的服务器来服务静态HTML页面,并可能涉及如何解析HTTP头部信息,从而对HTTP协议有更深入的认识。 最后,proxy-server项目涉及到了代理服务器的概念。代理服务器作为客户端和目标服务器...

    qt入门教程-学习之路

    QT是Qt Company开发的一款强大的跨平台应用程序开发框架,广泛用于创建桌面、移动和...通过这个教程,初学者可以逐步建立起对QT的全面认识,掌握基本的QT编程技能,为进一步深入学习和实际项目开发打下坚实的基础。

    QQ-Groups-Spider-master.zip

    通过学习和理解这个项目,你可以掌握网络爬虫的基本原理,提升Python编程能力,了解如何在实际项目中应用爬虫技术,同时也会对数据抓取、存储和分析有更深入的认识。如果你对此感兴趣,不妨下载并研究该项目的源代码...

    WebService CXF学习-入门篇.pdf

    **WebService CXF 学习——入门篇** **一、WebService CXF 由来与目标** Apache CXF 是一个流行的开源框架,它源自 ObjectWeb Celtix 和 CodeHaus XFire 的合并,这两个项目分别由 IONA 公司和业界知名SOAP堆栈...

Global site tag (gtag.js) - Google Analytics