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中实现对UItextField,UITextView等输入框的字数限制

    本文转载至 http://blog.sina.com.cn/s/blog_9bf272cf01013lsd.html 2011-10-05 16:48 533人阅读 评论(0) 收藏 举报 1.    ...

  2. 2017-01-20_dp测试

    题目:http://files.cnblogs.com/files/shenben/2017-01-20problems.pdf 数据包(含解题报告):http://files.cnblogs.com ...

  3. Unix环境高级编程---信号

    参考博客:http://blog.csdn.net/alex_my/article/details/39494129 1. 信号概念 何为信号? 信号是一种软中断,可以由以下情形触发: -1: 用户按 ...

  4. lasso the moon

  5. lambda map filter 用法

    lambda 可以这样认为,lambda作为一个表达式 非常容易理解,在这里lambda简化了函数定义的书写形式.是代码更为简洁,但是使用函数的定义方式更为直观,易理解. #定义函数:普通方式 def ...

  6. 开启unity3D的学习之路

    2014年5月11号.我開始了我的Unity3D的学习之路.我将在此记录我学习过程中各个进程,这样在将来的某天,自己忘记了某部分内容时.也能够回过头来复习一下.

  7. nokogiri

    Nokogiri的用法我推荐三篇非常给力的文章:http://ruby.bastardsbook.com/chapters/html-parsing/http://ruby.bastardsbook. ...

  8. [Android] Gradle 安装

    Gradle安装非常简单,只要从官网下载压缩包,解压,修改一下环境变量即可. 笔者写本篇随笔时,版本是1.12. Windows下安装 1 到官网(http://www.gradle.org/down ...

  9. Algorithm: pattern searching

    kmp算法:用一个数组保存了上一个需要开始搜索的index,比如AAACAAA就是0, 1, 2, 0, 1, 2, 3, ABCABC就是0, 0, 0, 1, 2, 3,复杂度O(M+N) #in ...

  10. hashMap的线程不安全

    hashMap是非线程安全的,表现在两种情况下: 1 扩容: t1线程对map进行扩容,此时t2线程来读取数据,原本要读取位置为2的元素,扩容后此元素位置未必是2,则出现读取错误数据. 2 hash碰 ...