一、什么是HTTP协议 

       HTTP协议是一种应用层协议,HTTP是HyperText Transfer Protocol(超文本传输协议)的英文缩写。HTTP可以通过传输层的TCP协议在客户端和服务器之间传输数据。HTTP协议主要用于Web浏览器和Web服务器之间的数据交换。我们在使用IE或Firefox浏览网页或下载Web资源时,通过在地址栏中输入,开头的4个字母http就相当于通知浏览器使用HTTP协议来和host所确定的服务器进行通讯。

HTTP协议诞生于上世纪90年代初;第一个被广泛使用的版本是HTTP0.9。这个最初的版本非常简陋,它只向服务器发送一个非常简单的请求,而服务器也会返回一个很简单的响应以及相应的HTML文本。在随后的HTTP1.0中,增加了很多在HTTP0.9中没有的特性,如增加了资源重定位,大量的状态响应码等。在最新的HTTP1.1中,对HTTP1.0做了更进一步的改进,除了增加了一些请求方法外,最大的改进就是可以使HTTP保持连接状态。这对于一些频繁传输数据的应用是非常有益的。由于HTTP协议已经达到了它的目标,因此,负责制定规范的W3C已经停止了对HTTP的改进,所以,HTTP1.1将是HTTP协议的最后一个版本。

无论你是从事网络程序开发,还是Web开发,或是网站的维护人员;都必须对HTTP协议有一个比较深入的了解。因此,HTTP协议不仅是Internet上应用最为广泛的协议,也是应用协议家族中比较简单的一种入门级协议;而且所有的Web服务器无一例外地都支持HTTP协议。这也充分地说明,对于那些开发网络程序,尤其是开发各种类型的Web服务器的开发人员,透彻地掌握HTTP协议将对你所开发的基于HTTP协议的系统产生直接的影响。

二、HTTP的工作方式 

HTTP协议采用了请求/响应的工作方式。基于HTTP1.0协议的客户端在每次向服务器发出请求后,服务器就会向客户端返回响应消息(包括请求是否正确以及所请求的数据),在确认客户端已经收到响应消息后,服务端就会关闭网络连接(其实是关闭TCP连接)。在这个数据传输过程中,并不保存任何历史信息和状态信息,因此,HTTP协议也被认为是无状态的协议,图1描绘了HTTP1.0协议的通讯过程。

<ignore_js_op>

        在HTTP1.0协议中,当Web浏览器发出请求时,就意味着一个请求/响应会话已经开始。在请求、响应结束后,服务器就会立刻关闭这个连接。这种会话方式虽然简便,但它会带来另外一个问题。如果客户端浏览器访问的某个HTML或其他类型的Web页中包含有其他的Web资源,如JavaScript文件、图像文件、CSS文件等;当浏览器每遇到这样一个Web资源,就会建立一个HTTP会话。如果这样的资源很多的话,就会加重服务器的负担,同时也会影响客户端浏览器加载HTML等Web资源的效率。
在对上述的缺陷进行改进和完善后,HTTP1.1协议进入了我们的视线。HTTP1.1和HTTP1.0相比较而言,最大的区别就是增加了持久连接支持。当客户端使用HTTP1.1协议连接到服务器后,服务器就将关闭客户端连接的主动权交还给客户端;也就是说,在客户端向服务器发送一个请求并接收以一个响应后,只要不调用Socket类的close方法关闭网络连接,就可以继续向服务器发送HTTP请求。当HTML中含有其他的Web资源时,浏览器就可以使用同一个网络连接向下载这些资源,这样就可以大大减轻服务器的压力。图演示了这一过程。
<ignore_js_op>
HTTP1.1除了支持持久连接外,还将HTTP1.0的请求方法从原来的三个(GET、POST和HEAD)扩展到了八个(OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE和CONNECT)。而且还增加了很多请求和响应字段,如上述的持久连接的字段Connection。这个字段有两个值,Close和Keep-Alive。如果使用Connection:Close,则关闭HTTP1.1的持久连接的功能,要打开HTTP1.1的持久连接的功能,必须使用Connection:Keep-Alive,或者不加Connection字段(因为HTTP1.1在默认情况下就是持久连接的)。除了这些,还提供了身份认证、状态管理和缓存(Cache)等相关的请求头和响应头。
转自:http://www.eoeandroid.com/thread-83496-1-1.html

转载于:https://www.cnblogs.com/hnrainll/archive/2012/07/06/2580019.html

网络开发必备的HTTP协议知识相关推荐

  1. c++网络开发必备dll---ssleay32.dll和libeay32.dll

    适合WINDOWS下的纯C++客户端开发,网络功能必备的2个DLL. http://traffic189.com/f-4329.html http://traffic189.com/f-4333.ht ...

  2. 移动端H5网页开发必备知识

    简介 工欲善其事必先利其器,今天这篇文章主要讲解移动端H5开发必备的一些基础知识以及移动端适配和布局方案.如果已经看过这篇文章了或者已经掌握了移动端基础的话可以看笔者写的 移动端H5网页开发常见问题汇 ...

  3. 开发必备的网络知识极简版 (用于快速梳理)

    目录 基础知识 TCP/IP四层模型 UDP协议特点 TCP协议特点 TCP的三次握手 TCP的四次挥手 网络套接字 HTTP协议特点 HTTPS安全措施 典型面试题 请简述TCP三次握手的过程 为什 ...

  4. arm linux udp 自发自收_嵌入式linux编程开发必备知识

    嵌入式linux是嵌入式开发必不可少的一份子,在科技高速发展的今天,嵌入式已然已经成为了最热门的技术之一了.对于想要学习好嵌入式的学员来说,现在学习好linux是很有必要的,因为这个是嵌入式的核心.那 ...

  5. linux QT 结束当前进程_嵌入式linux编程开发必备知识

    嵌入式linux是嵌入式开发必不可少的一份子,在科技高速发展的今天,嵌入式已然已经成为了最热门的技术之一了.对于想要学习好嵌入式的学员来说,现在学习好linux是很有必要的,因为这个是嵌入式的核心.那 ...

  6. WCF分布式开发必备知识(4):Web Service(转)

    今天继续我们的WCF分布式开发必备知识系列文章的第4节:Web Service.前3节我们分别介绍了MSMQ消息队列/.Net Remoting/Enterprise Services三个相关的技术. ...

  7. 嵌入式linux编程开发必备知识

    嵌入式linux是嵌入式开发必不可少的一份子,在科技高速发展的今天,嵌入式已然已经成为了最热门的技术之一了.对于想要学习好嵌入式的学员来说,现在学习好linux是很有必要的,因为这个是嵌入式的核心.那 ...

  8. 视频教程-游戏网络编程必备知识-Unity3D

    游戏网络编程必备知识 网名:海洋,CSDN社区讲师,3D游戏引擎开发者,IT讲师,计算机图形学方向研究生,曾在浙江大学CAD&CG;国家重点实验室学习.从事IT行业15年,主导或参与了18款大 ...

  9. 【网络通信】【电信运营商实战工程师】思科设备篇-网络工程师必备基础知识

    电信运营商实战工程师系列文章. 思科设备篇-网络工程师必备基础知识. 文章目录 1. 电信运营商网络设备机房 2. 认识并管理运营商网络设备 3. GNS3 安装与配置 4. IPv4地址及子网划分 ...

最新文章

  1. Logstic与Softmax比较
  2. 优化 bulk insert
  3. 跨语言平台的RSA加密、解密、签名、验证算法的实现
  4. 广东2021高考成绩位次查询,广东一分一段表查询2021-广东省2021年一分一段统计表...
  5. MCU VR班會(07)記錄
  6. python 一个简单的天气预报程序
  7. 三、java IO--使用字节流写入文件
  8. 51单片机mysql_[学习笔记]15个QA让你快速入门51单片机开发
  9. Spring使用过程中遇到的一些问题
  10. 用python建云盘_超简单!基于Python搭建个人“云盘”
  11. Java 基本数据类型存储位置
  12. 【并发编程】Once 基本用法和如何实现以及常见错误
  13. 2020秋招阿里测试开发一面
  14. 基于拉格朗日差值算法的BMP图像缩放
  15. 关于idea中springboot主启动类没有绿色启动的问题
  16. 远程桌面访问之VNC使用指南
  17. python网络爬虫从入门到实践 第5章 (一)
  18. 小程序 朋友圈,点赞 ,评论,发布动态,功能,上传图片 -----发布动态
  19. 连接mysql数据库失败问题
  20. 思考力,决定你的产品力

热门文章

  1. 怎么看我装的sql能不能用_深入浅出sql优化(三)之单表索引优化
  2. Spring Cloud —— Gateway 服务网关
  3. oracle用户密码复杂度查询,11gR2 Database用户密码复杂度验证
  4. 流浪的python博客园_python学习心得第一章
  5. JAVA中自己写的util中的chop,Java StringUtils.chop方法代碼示例
  6. 计算机图形设计论文 真实图形生成技术的发展,绘制技术论文,关于计算机图形图像绘制技术的现状应用相关参考文献资料-免费论文范文...
  7. (连续子序列)唯一的雪花
  8. PHP苹果不给上架,苹果商城上架拒绝
  9. 21天学MySQL_SQL21天自学通.pdf
  10. dom4j实现为list添加父节点_Heap 堆的实现