HTTP协议定义了客户端和服务器之间交互的消息内容和步骤,其基本思路非常简单。首先,客户端会向服务器发送请求消息(图1.4)。

请求消息中包含的内容是“对什么”和“进行怎样的操作”两个部分其中相当于“对什么”的部分称为URI。一般来说,URI的内容是一个存放网页数据的文件名或者是一个CGI程序的文件名,例如“/dir1/file1.html”“/dir1/program1.cgi”等。不过,URI不仅限于此,也可以直接使用“http:”开头的URL来作为URI。换句话说就是,这里可以写各种访问目标,而这些访问目标统称为URI。

相当于接下来“进行怎样的操作”的部分称为方法。方法表示需要让Web服务器完成怎样的工作,其中典型的例子包括读取URI表示的数据、将客户端输入的数据发送给URI表示的程序等。表1.1列举了主要的方法,通过这张表大家应该能够理解通过方法可以执行怎样的操作。

上述1.0版本和1.1版本的描述分别基于RFC1945和RFC2616。
除了图1.4中的内容之外,HTTP消息中还有一些用来表示附加信息的头字段。客户端向Web服务器发送数据时,会先发送头字段,然后再发送数据。不过,头字段属于可有可无的附加信息,因此我们留到后面再讲。

收到请求消息之后,Web服务器会对其中的内容进行解析,通过URI和方法来判断“对什么”“进行怎样的操作”,并根据这些要求来完成自己的工作,然后将结果存放在响应消息中。在响应消息的开头有一个状态码,它用来表示操作的执行结果是成功还是发生了错误。当我们访问Web服务器时,遇到找不到的文件就会显示出404 Not Found的错误信息,其实这就是状态码。状态码后面就是头字段和网页数据。响应消息会被发送回客户端,客户端收到之后,浏览器会从消息中读出所需的数据并显示在屏幕上。到这里,HTTP的整个工作就完成了

现在大家应该已经了解了HTTP的全貌,下面我们再补充一些关于HTTP方法的知识。表1.1列出的方法中,最常用的一个就是GET方法了。一般当我们访问Web服务器获取网页数据时,使用的就是GET方法。所谓一般的访问过程大概就是这样的:首先,在请求消息中写上GET方法,然后在URI中写上存放网页数据的文件名“/dir1/file1.html”,这就表示我们需要获取/dir1/file1.html文件中的数据。当Web服务器收到消息后,会打开/dir1/file1.html文件并读取出里面的数据,然后将读出的数据存放到响应消息中,并返回给客户端。最后,客户端浏览器会收到这些数据并显示在屏幕上。

还有一个经常使用的方法就是POST。我们在表单中填写数据并将其发送给Web服务器时就会使用这个方法。当我们在网上商城填写收货地址和姓名,或者是在网上填写问卷时,都会遇到带有输入框的网页,而这些可以输入信息的部分就是表单。使用POST方法时,URI会指向Web服务器中运行的一个应用程序的文件名,典型的例子包括“index.cgi”“index. php”等。然后,在请求消息中,除了方法和URI之外,还要加上传递给应用程序和脚本的数据。这里的数据也就是用户在输入框里填写的信息。当服务器收到消息后,Web服务器会将请求消息中的数据发送给URI指定的应用程序。最后,Web服务器从应用程序接收输出的结果,会将它存放到响应消息中并返回给客户端。

前面两个方法属于HTTP的典型用法,除此之外的其他方法在互联网上几乎见不到使用的例子。因此,只要理解了这两个方法,就能够应付大部分情况了,但如果可以,还是推荐大家看一看表1.1中所有方法的说明,思考一下它们的含义,以便理解HTTP协议具备的所有功能。如果只有GET和POST方法,我们就只能从Web服务器中获取网页数据,以及将网页输入框中的信息发送给Web服务器,而有了PUT和DELETE方法,就能够从客户端修改或者删除Web服务器上的文件。有了这些功能,我们甚至可以将Web服务器当成文件服务器来用。当然,出于安全上的原因,或者是支持GET和POST之外的方法的客户端没有广泛普及之类的原因,一般我们并不会碰到这样的用法,但大家应该能够看出,HTTP协议其实蕴藏着很多的可能性。

总结

  • HTTP协议定义了客户端和服务器之间交互的消息内容和步骤
  • 总结一下就是客户端发送请求,服务器响应请求

思考

  • http协议规定了什么?细节如何?

HTTP协议到底是怎么回事相关推荐

  1. flag push tcp 作用_TCP/IP协议到底在讲什么?

    题主,你之所以不知道那套书在讲什么,是因为你还没有认识到网络协议有什么用,怎么用,以什么形式在使用,网络协议的概念很简单,就几句话,你只知道网络协议的概念,只知道很多大神都推荐这套书,都强调网络协议的 ...

  2. tcp协议的主要功能是什么_前端要知道的网络知识一:TCP/IP 协议到底在讲什么...

    你之所以不知道那套书在讲什么,是因为你还没有认识到网络协议有什么用,怎么用,以什么形式在使用,网络协议的概念很简单,就几句话,你只知道网络协议的概念,只知道很多大神都推荐这套书,都强调网络协议的重要性 ...

  3. [知乎高赞回答]TCP/IP协议到底在讲什么?

    作者:师爷快上 链接:https://www.zhihu.com/question/51074319/answer/124733136 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业 ...

  4. CAS到底是怎么回事

    CAS到底是怎么回事 为什么需要CAS 如何实现CAS 关于CAS和ABA 关于应用层的锁和CPU的锁的关系 参考 为什么需要CAS CAS全称为Compare And Set(比较并交换) 对于现代 ...

  5. 设置文件权限位时我们一般忽略了suid/guid的存在,现在看看它们到底是怎么回事

    设置文件权限位时我们一般忽略了suid/guid的存在,现在看看它们到底是怎么回事. suid/guid是什么? suid意味着如果A用户对属于他自己的shell脚本文件设置了这种权限,那么其他用户在 ...

  6. c语言列车调度 栈,这个用栈调度火车的程序到底是怎么回事?

    这个用栈调度火车的程序到底是怎么回事? 下面是一个用栈来实现火车调度的程序,其中,in代表初始的车列顺序,transter代表用来调度的火车轨,out代表调度后的火车轨,程序功能如下,如果in中车列顺 ...

  7. dakai微信小程序 ios_【iOS】微信小程序打开APP到底是怎么回事?

    前言 从苹果官方来看,小程序新增了两个功能: 1. 支持打开移动应用 2. 标题栏区域开放自定义 针对第二个功能,就是开发者可以自定义小程序菜单栏的颜色风格,根据需求,对小程序菜单外的标题区域进行自定 ...

  8. 大学计算机怎么开机,电脑开机卡logo,大学生没电脑玩急坏了,这到底是怎么回事?...

    电脑常见的故障有蓝屏白字.黑屏白字.红屏白字.卡logo.打不开程序.自动关机重启,这些故障有的是硬件问题引起,有的是软件问题引起,对于硬件引起的故障,我们首先要判断是接触不良引起的故障,还是因为损坏 ...

  9. modbus rtu与计算机通讯,Modbus通讯协议原来是这么回事!看完秒懂了

    原标题:Modbus通讯协议原来是这么回事!看完秒懂了 [www.gkwo.net]工程师必备网站 导语:ModBus网络是一个工业通信系统,由带智能终端的可编程序控制器和计算机通过公用线路或局部专用 ...

最新文章

  1. PortableApps的使用方法
  2. 设计模式之观察者模式学习笔记
  3. spring第一个小例子(Spring_xjs1)
  4. 2019 年容器生态统计报告发布 | 云原生生态周报 Vol. 26
  5. 【Git1】指令,分支,ssh免密登录
  6. Vue.js安装使用教程
  7. 鸿蒙内核之内存调测:动态内存池信息统计
  8. Spark SQL join的三种实现方式
  9. 已知背景和物体的均值方差,求最佳分割阈值
  10. 嵌入式Linux移植lvgl,Linux 下使用fb 移植lvgl详细教程
  11. Linux-常用工具
  12. matlab运行出现:Optimization terminated.
  13. postman使用之Tests使用
  14. Excel 去除重复行
  15. Python 02 Selenium 账号密码登录CSDN
  16. 生成对抗网络(GAN)详细介绍及数字手写体生成应用仿真(附代码)
  17. linux关于日志文件介绍,Linux下重要日志文件介绍
  18. java jdbc 批量更新_java – JDBC PreparedStatement,批量更新和生成的密钥
  19. Ebc编码与asc编码转换
  20. 关于Ubuntu18.04 Cisco AnyConnect闪退的问题

热门文章

  1. VALSE学习(九):物体检测进展
  2. https和http有什么区别
  3. koa2 导出excel表格设置样式_一调整Excel表格的行列宽度,图片又得重新调整?点这个设置就行...
  4. elasticsearch_spring-data-elasticsearch 快速入门-Spring Boot+Elasticsearch
  5. 大厂退场方式-支付宝-相互宝
  6. Android导入第三方类库
  7. 编译原理---代码优化基础(自己看)
  8. 2013年国家计算机等级考试c语言考试真题,2013年3月计算机等级考试二级C语言真题及答案.doc...
  9. 沙洋有几个微服务群_QQ群控系统强力黑科技,助力你实现自动化获客
  10. python标准库time_python标准库介绍——12 time 模块详解