一、什么是HTTP协议

HTTP协议是HyperText Transfer Protocol的缩写,即超文本传输协议。是由w3c(万维网联盟)制定的一种应用层协议,用来定义浏览器与web服务器之间如何通信以及通信的数据格式。

因为BS架构中的通信模块就是以HTTP这个协议作为标准协议的,所以对该协议有所了解可以更好的编写程序。

二、HTTP协议是如何通信的

HTTP协议的通信过程可以分为以下四个步骤:

  1. 浏览器根据IP地址和端口号与服务器建立连接
  2. 向Web服务器发送请求数据包
  3. Web服务器接收请求数据包后,发送相应的响应数据包
  4. 浏览器接收响应数据后关闭连接

在这个过程中,一次请求对应一次连接,当浏览器再次发请求给服务器时,Web服务器并不知道这就是上次发请求的客户端,这也是HTTP协议的一个特点-无状态协议。这种需要时建立连接,使用结束后立即断开连接的方式使得Web服务器可以利用有限的连接为尽可能多的客户提供服务。也正是具备了这样的特点,才使得BS结构能够承载企业级应用的大量访问。

三、HTTP协议中的数据格式

在HTTP协议控制的数据走向中,既包括客户端发送给服务器端的请求数据也包括服务器端返回给客户端的响应信息,而具有一定规范的数据格式是保证通信标准的第一要素。借助于一些浏览器的插件或者浏览器本身内嵌的功能模块,可以实现对请求数据、响应数据的抓取,熟练掌握这些数据的主要部分,可以有利于理解BS模型中的一些处理问题的方式。通常情况下的请求数据包及响应数据包结构如图 – 14所示。

1. 请求数据包组成

请求数据包包含三个部分:

  1. 请求行,包括请求方式,请求资源路径,以及协议版本
  2. 消息头是由若干的键值对组成,主要用于传递给Web服务器一些信息。如,浏览器版本、接受资源的类型等
  3. 在消息头的下面会跟着一个空白行,这样就可以区分出消息头与实体内容这两个部分。而在请求数据包中,大部分情况实体内容为空,只有当请求方式为POST时,实体内容才有要提交的表单数据

2.响应数据包组成

响应数据包也包含三个部分:

  1. 状态行,包括协议类型、版本、状态码、状态描述
  2. 消息头(若干),也是多组键值对组成的信息说明。如返回的Content-Type消息头可以告诉浏览器返回的结果数据类型和字符集
  3. 实体内容,位于消息头下面的一个空白行之后。空白行意在通知浏览器消息头的结束以及结果内容的开始,浏览器就从这里开始数据的逐行解析。

最新文章

  1. 一篇笔记整理JVM工作原理
  2. jQuery点击图片弹出放大特效下载
  3. 基于Netty4的HttpServer和HttpClient的简单实现
  4. xml note
  5. [.NET领域驱动设计实战系列]专题十:DDD扩展内容:全面剖析CQRS模式实现
  6. Java数组,去掉重复值、增加、删除数组元素
  7. Ext.GridPanel 用法总结(一)—— Grid基本用法
  8. [Elixir007] on_definition规范函数定义时的各种潜规则
  9. 用php输入表格内容
  10. android 获取当前屏幕作为毛玻璃模糊背景Acitivity作为弹出框。
  11. MapReduce数据流向分析
  12. php 彩票类 lottery
  13. Android中用PULL解析XML
  14. 各种driver的继承关系
  15. HDU 5044 离线LCA算法
  16. SDN第五次上机作业
  17. 用命令直接在两台ubuntu之间传输数据
  18. 【.Net Core】ZipFile类--文件的压缩解压
  19. Android AIDL 实例
  20. disk2vhd-----将windows系统转换成虚拟镜像格式

热门文章

  1. ExtJS BorderLayout
  2. 【mysql】在mysql中更新字段的部分值,更新某个字符串字段的部分内容
  3. tomcat sso 配置
  4. post文件的html
  5. pandas过滤包含特定字符串的行
  6. select case when if 的一些用法
  7. 15、高可用 PXC(percona xtradb cluster) 搭建
  8. Java开发牛人十大必备网站
  9. C语言:字符串读取流读取文件中的数据
  10. Informatica 常用组件Source Qualifier之九 创建SQ转换