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. WCP人员管理之添加人员

    1.用户管理页面 其中 : var url_formActionUser = "user/form.do";//增加.修改.查看URL 2. 通过 /form 路由, 转到 Use ...

  2. 软件测试人员需要精通的开发语言(4)--- Java

    接下来说下,当下最火的语言 - Java.Java是一种可以撰写跨平台应用程序的面向对象的程序设计语言.Java 技术具有卓越的通用性.高效性.平台移植性和安全性,广泛应用于PC.数据中心.游戏控制台 ...

  3. 2017-2018-1 20179209《Linux内核原理与分析》第七周作业

    一.实验 1.1task_struct数据结构 Linux内核通过一个被称为进程描述符的task_struct结构体来管理进程,这个结构体包含了一个进程所需的所有信息.它定义在linux-3.18.6 ...

  4. 洛谷3243 [HNOI2015]菜肴制作

    题目戳这里 Solution 错误的想法:正向建图,然后从入度为0的点选出最小u的开始输出,然后找出u连接的点v,并把v的度数减一,再次把入度为0的点加入小根堆,这样显然有错,因为只能局部保证最小,后 ...

  5. 取得微信用户OpenID

    公司需要微信这个平台和用户交流,于是开始研究微信公众平台.微信公众平台分为两种模式,其一是编辑模式,比如用户发什么内容,你可以响应什么内容.另外一种便是开发模式,这个模式功能丰富,不仅仅可以获取到用户 ...

  6. CUDA: 原子操作

    1.1以上计算功能集支持全局内存上的原子操作, 1.2以上支持共享内存上的原子操作. atomicAdd(add,y)将生成一个原子的操作序列,这个操作序列包括读取地址addr处的值,将y增加到这个值 ...

  7. [IR课程笔记]Hyperlink-Induced Topic Search(HITS)

    两个假设 1. 好的hub pages: 好的对某个主题的hub pages 链接许多好的这个主题的authoritative pages. 2. 好的authoritative pages: 好的对 ...

  8. Linux内核同步【转】

    本文转载自:http://blog.csdn.net/a775992553/article/details/8797710 Linux设备驱动中必须解决的一个问题是多个进程对共享资源的并发访问,并发访 ...

  9. 使用pip安装第三方库报错记录

    今天在使用pycharm导入第三方库的时候,报了好多超时错误,还有标题中的找不到版本,应该是网络的原因,记录下解决的办法: raise ReadTimeoutError(self._pool, Non ...

  10. CSS3实现自定义Checkbox动画

    CSS3实现自定义Checkbox动画是一款CSS3自定义checkbox,而且这款checkbox还带有动画效果,当你选中checkbox的时候,会以动画的方式打上一个大大的勾. 源码下载:http ...