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. 【剑指Offer学习】【面试题58:二叉树的下一个结点】

    题目:给定一棵二叉树和当中的一个结点.怎样找出中序遍历顺序的下一个结点?树中的结点除了有两个分别指向左右子结点的指针以外,另一个指向父节点的指针. 解题思路 假设一个结点有右子树.那么它的下一个结点就 ...

  2. Windows上搭建Kafka

    搭建环境: 1,安装JDK JAVA_HOME: C:\Program Files (x86)\Java\jre1.8.0_60(这个是默认安装路径,如果安装过程中更改了安装目录,把更改后的路径填上就 ...

  3. 几句话搞懂URI、URL、URN之间的关系

    1.URI,是uniform resource identifier,统一资源标识符,用来唯一的标识一个资源. 2.RL是uniform resource locator,统一资源定位器,它是一种具体 ...

  4. 关于TransactionScope 使用

    在去年的项目中使用了TransactionScope,现在总结下TransactionScope的使用说明 一.TransactionScope是.Net Framework 2.0之后,新增了一个名 ...

  5. php xmlrpc使用示例

    xmlrpc 远程过程调用, 使用xml文本方式传输数据. soap协议比xmlrpc复杂并强大. 1.修改 php.ini,开启 xmlrpc 扩展 2.rpc_client.php <?ph ...

  6. 聚聚科技——php开发笔试题及答案

    聚聚科技是一个刚创立的公司,很小很小,人很少,老板感觉是个典型的北京小伙儿,戾气很重,很有个性.笔试题倒是简单: 1. echo(), print(), print_r()的区别? echo是PHP语 ...

  7. TensorFlow运行时出现warning如何设置禁止打印方法

    有时候运行TensorFlow时比较烦人,经常报一些warning或者版本更新了之类的一些警告,如下: 那么如何去掉或者说不显示这些东西呢,可以通过简单添加几行代码搞定,来看一下. 这样就不会报警告了 ...

  8. PAT 甲级 1007. Maximum Subsequence Sum (25) 【最大子串和】

    题目链接 https://www.patest.cn/contests/pat-a-practise/1007 思路 最大子列和 就是 一直往后加 如果 sum < 0 就重置为 0 然后每次 ...

  9. 《高性能Javascript》 Summary(三)

    第八章.编程实践 Programming Practices 经验: 避免使用 eval_r()和Function构造器避免二次评估.此外,给setTimeout()和setInterval()函数传 ...

  10. Machine Learning No.10: Anomaly detection

    1. Algorithm 2. evaluating an anomaly detection system 3. anomaly detection vs supervised learning 4 ...