Http协议(超文本传输协议)是位于TCP/IP结构中的应用层的一种传输协议,规定了万维网服务器之间相互通信的规则。比如比较常见的Web浏览器客户端与应用服务器的通信!万维网服务器之间互相通信的时候往往需要其它协议的配合才能完成整个通信的作业,比如应用层的DNS协议,网络层的IP协议等众多协议。然而,为什么网络通信需要规定那么多协议呢?原因终归于网络体系的分层,大家都知道标准的OSI有7层,而当下使用的是TCP/IP结构有4层,那么在各层的通信当中,就需要规定各自的规则,使通信成为可能!Http协议就是应用层其中的一种协议!那么在网络体系中到底什么是Http协议,Http协议规定了什么,怎么通过Http协议来进行网络通信的?下面我将会简要说明,具体详细在后续的文章会一一介绍!

一、什么是Http协议

在解释Http协议之前,大家首先必须了解实体与对等实体。实体指在网络体系中,每一层用于实现该层功能的活动元素称为实体(包括该层的硬软件);对等实体指不同机器上位于同一层次、完成相同功能的两个实体。那么Http协议就是两个对等实体之间在应用层有效地通信所遵守的规则集合。协议由语法、语义和语序三大要素构成。语法包括数据格式,信号电平等;语义指协议语法成分的含义,包括协议用的控制信息和差错管理;语序包括时序控制和速度匹配关系。在后续的介绍中,会不断的介绍这三大要素的内容!

二、Http协议规定了什么

Http协议在Http通信过程中,规定了如何进行网络连接、交换的信息格式、如何传输信息的规则!

三、如何通过Http协议来通信

在回答这个问题之前,大家首先得了解以下几个概念:

  • Web客户端和服务器:Web客户端可以发送Http请求,比如浏览器;服务器能够响应Http请求
  • Web资源:所有能够提供Web内容的东西都是Web资源

媒体格式:在因特网中有数千种不同的数据类型即MIME,用来描述并标记Web资源。比如text/html 为HTML格式的文本,image/gif为GIF格式的图片

URI(URL,URN):统一资源标识符,URI有URL,URN2种形式,其中URL描述资源的特定位置(已广泛使用),而URN描述资源的唯一名称(处于试验阶段)

  • 事务:Http事务由一条请求命令和一个响应结果组成

方法:描述请求的命令,通过这些命令来告诉服务器要执行什么动作,比如GET,PUT,DELETE,POST,HEAD

状态码:描述响应的状态,通过这些状态来告诉客户端请求的状态,比如200,302,404

  • 报文:描述传输的数据,包括请求报文和响应报文,报文包括以下格式

起始行:报文的第一行,在请求报文中说明要做些什么,在响应报文中说明请求的状态

首部字段:起始行后面有零个或多个首部字段,首部以一个空格结束。比如Content-Length:300,表示响应主体的长度

主体:请求主体包含要发送给服务器的数据,响应主体包含要返回给客户端的数据,如下图

  • 连接:创建客户端与服务器端的一个网络连接,Http协议建立的是TCP连接

通过了解这以上几个概念,相信大家已经大概知道HTTP协议是怎么进行通信的了。Http协议是通过创建TCP连接,通过URI来定位Web资源,Web客户端发起Http请求并携带请求,服务器将响应报文返回给Web客户端的一种请求/响应模式的一种通信。

四、Http的发展历史

HTTP/0.9:1991年的版本,仅支持GET请求方法,不支持多媒体内容的MIME类型,各种HTTP首部,版本号

HTTP/1.0:添加了版本号,各种HTTP首部

HTTP/1.0+:添加了持久的keep-alive连接,虚拟主机支持,以及代理连接

HTTP/1.1::主要引入重要的性能优化措施,这个版本也正是我们现在使用的HTTP版本

HTTP-NG/2.0::将来....

五、Http通信的支撑

Http通信的支撑主要包括代理、缓存、网关、隧道以及Agent代理,有了这些支撑,能使通信更加安全,性能更高,更智能。在后续会不断介绍。

六、总结

通过这篇Http协议概要,我们主要了解了什么是Http协议、Http协议的组成部分比如报文及一些辅助HTTP通信的协议比如DNS,简要的描述了Http协议在应用层是如何通信等内容。

Http协议-概要的更多相关文章

  1. HTTP_2_HTTP协议概要

    http协议概要 HTTP 通信对象 通信方式 通信状态 定位资源 节省通信量 超文本传输协议 客户端与服务器端 请求和响应 不保存状态(借助cookie) 请求URI keep-alive/pipe ...

  2. TCP/IP协议概要--01

    学习一下tcp/ip协议,还是很枯燥,哎..... 图片的是从下到上对TCP/IP的协议进行描述的.主要是的描述每一层协议的特点 该层对应的是最底层的数据链路层,即图中的以太网驱动程序那一层. 该层是 ...

  3. 问题:OAuth1.0;结果:OAuth1.0协议

    OAuth1.0协议 概要 OAuth提供了一种client代表资源的拥有者访问server的方法,也就是在资源拥有者不向第三方提供证书(通常是指用户名和密码)的情况下,允许第三方使用用户代理重定向访 ...

  4. 第8章 应用协议 图解TCP/IP 详解

    第8章 应用协议 图解TCP/IP 详解 8.1 应用层协议概要 应用层协议的定义 TCP和IP等下层协议是不依赖上层应用类型.实用性非常广的协议.而应用协议则是为了实现某种应用而设计和创造的协议. ...

  5. 读书笔记——《图解TCP/IP》(4/4)

    经典摘抄 第八章 应用层协议概要 1.应用协议是为了实现某种应用而设计和创造的协议. 2.TCP/IP的应用层包含了管理通信连接的会话层功能.转换数据格式的表示层功能,还包括与对端主机交互的应用层功能 ...

  6. 推荐一本书:清华出版的《Modbus软件开发实战指南》

    前言: 最近在研究Modbus开发,如果只是简单的了解了一些modbus基础知识,但是不够系统和全面. 其实,modbus虽然比较简单,但是如果不注意有很多坑,特别是寄存器的位数,大小端处理,浮点数, ...

  7. [Note] 计算机网络的应用层

    应用层 原理 结构和模型 客户-服务器体系结构(client-server architecture ) 通信不是直接的,需要通过服务器转发 经常会在服务器积压大量的负载 服务器(server) 服务 ...

  8. 10.22 tcpdump:监听网络流量

    [功能说明] tcpdump命令是一个截获网络数据包的包分析工具.tcpdump可以将网络中传送的数据包的“头”完全截获下来以提供分析.它支持针对网络层.协议.主机.端口等的过滤,并支持与.或.非逻辑 ...

  9. Linux就业技术指导(五):Linux运维核心管理命令详解

    一,Linux核心进程管理命令 1.1 ps:查看进程 1.1.1 命令解释 功能说明 ps命令用于列出执行ps命令的那个时刻的进程快照,就像用手机给进程照了一张照片.如果想要动态地显示进程,就需要使 ...

随机推荐

  1. 解决:IOS viewDidAppear/viewWillAppear无法被调用

    本文转载至 http://my.oschina.net/lvlove/blog/82264   原因: 苹果的文档是这样描述的: If the view belonging to a view con ...

  2. gulp的使用方法

    ---恢复内容开始--- 什么是gulp? Gulp.js是一个自动化构建工具,开发者可以使用它在项目开发过程中自动执行常见任务. 使用步骤: 1.全局安装gulp:    npm install - ...

  3. 我的Android进阶之旅------>Android使用AlarmManager全局定时器实现定时更换壁纸

    该DEMO将会通过AlarmManager来周期的调用ChangeService,从而让系统实现定时更换壁纸的功能. 更换壁纸的API为android.app.WallpaperManager,它提供 ...

  4. 流畅python学习笔记:第十二章:子类化内置类型

    子类化内置类型 在python2.2之后,内置类型都可以子类化,但是有一个注意事项:内置类型不会调用用户定义的类覆盖的特殊方法.这个说起来比较绕口,什么意思呢.我们来看下下面的代码: class Do ...

  5. ceph pool 管理

    创建池 [root@node1 ~]# ceph osd pool create monitor pool 'monitor' created 查看池 [root@node1 ~]# ceph osd ...

  6. Intellij Idea生成JavaDoc

    JavaDoc是一种将注释生成HTML文档的技术,生成的HTML文档类似于Java的API,易读且清晰明了.在简略介绍JavaDoc写法之后,再看一下在Intellij Idea 中如何将代码中的注释 ...

  7. API的理解和使用——列表类型的命令

    列表类型的命令及对应的时间复杂度 操作 命令 功能 时间复杂度 添加 rpush key value [value ...] 向右插入 O(k),k是元素个数 lpush key value [val ...

  8. HDU - 1541 Stars 【树状数组】

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1541 题意 求每个等级的星星有多少个 当前这个星星的左下角 有多少个 星星 它的等级就是多少 和它同一 ...

  9. iOS中常见的设计模式(MVC/单例/委托/观察者)

    关于设计模式这个问题,在网上也找过一些资料,下面是我自己总结的,分享给大家 如果你刚接触设计模式,我们有好消息告诉你!首先,多亏了Cocoa的构建方式,你已经使用了许多的设计模式以及被鼓励的最佳实践. ...

  10. Linux之make的用法讲解

    在 Linux环境下使用 GNU 的 make工具能够比较容易的构建一个属于你自己的工程,整个工程的编译只需要一个命令就可以完成编译.连接以至于最后的执行.不过这需要我们投入一些时间去完成一个或者多个 ...