一、什么是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. 实体内容,位于消息头下面的一个空白行之后。空白行意在通知浏览器消息头的结束以及结果内容的开始,浏览器就从这里开始数据的逐行解析。

HTTP协议是如何通信的的更多相关文章

  1. html5 postMessage解决iframe跨协议跨域通信问题

    a.html有个iframe载入b.com/login.html,当login完成时通知a.html页面登录完成并传递UserName 1.a.html 监听消息 window.addEventLis ...

  2. 深度剖析MQTT协议的整个通信流程

    http://www.elecfans.com/d/587483.html MQTT,目前物联网的最主要的协议,基本所有收费的云平台都是基于MQTT协议,比如机智云,和所有的开放云平台比如中国移动的o ...

  3. Python进阶----UDP协议使用socket通信,socketserver模块实现并发

    Python进阶----UDP协议使用socket通信,socketserver模块实现并发 一丶基于UDP协议的socket 实现UDP协议传输数据 代码如下:

  4. day31——recv工作原理、高大上版解决粘包方式、基于UDP协议的socket通信

    day31 recv工作原理 源码解释: Receive up to buffersize bytes from the socket. 接收来自socket缓冲区的字节数据, For the opt ...

  5. 基于TCP与UDP协议的socket通信

    基于TCP与UDP协议的socket通信 C/S架构与初识socket 在开始socket介绍之前,得先知道一个Client端/服务端架构,也就是 C/S 架构,互联网中处处充满了 C/S 架构(Cl ...

  6. JAVA基础知识之网络编程——-TCP/IP协议,socket通信,服务器客户端通信demo

    OSI模型分层 OSI模型是指国际标准化组织(ISO)提出的开放系统互连参考模型(Open System Interconnection Reference Model,OSI/RM),它将网络分为七 ...

  7. Day 网络协议介绍 简单通信的实现

    比如说实现两个手机之间的通信,需要做的几部: 服务端: 1,买手机 2,插卡 3,开机 4,等电话链接 5,基于建立的链接,收发协议 6,挂电话 7,关机 import socket #买手机 pho ...

  8. 关于HTTP协议及SOCKET通信

    一.HTTP 1.报文结构 HTTP:超文本传输协议,报文分为请求报文和响应报文. 2.端口(tomcat端口) http在熟知的80端口使用TCP的服务:tomcat的默认端口是8080 3.状态码 ...

  9. 协议森林08 不放弃 (TCP协议与流通信)

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! TCP(Transportation Control Protocol)协议与IP ...

随机推荐

  1. C#程序集系列13,如何让CLR选择不同版本的程序集

    本篇主要体验,在存在多个版本程序集的情况下,如何让CLR选择哪个版本程序集运行,以及程序集版本的切换. 分别生成非强名称程序集不同版本 □ 生成某个版本的程序集 →清理F盘as文件夹,剩下如下文件 → ...

  2. oracle extract函数

    oracle Extract 函数 //oracle中extract()函数从oracle 9i中引入,用于从一个date或者interval类型中截取到特定的部分   //语法如下:   EXTRA ...

  3. 【BZOJ】【1178】【APIO2009】convention会议中心

    贪心 如果不考虑字典序的话,直接按右端点排序,能选就选,就可以算出ans…… 但是要算一个字典序最小的解就比较蛋疼了= = Orz了zyf的题解 就是按字典序从小到大依次枚举,在不改变答案的情况下,能 ...

  4. 给开发者准备的 10 款最好的 jQuery 日历插件[转]

    这篇文章介绍的是 10 款最棒而且又很有用的 jQuery 日历插件,允许开发者们把这些漂亮的日历插件结合到自己的网站中.这些日历插件易用性都很强,轻轻松松的就可以把漂亮的日历插件装饰到你的网站了.希 ...

  5. c#写扩展方法

    学习MVC时,学会了写扩展方法,用起来很方便. 01 using System; 02 using System.Collections.Generic; 03 using System.Linq; ...

  6. UML解惑:图说UML中的六大关系

    UML定义的关系主要有六种:依赖.类属.关联.实现.聚合和组合.这些类间关系的理解和使用是掌握和应用UML的关键,而也就是这几种关系,往往会让初学者迷惑.这里给出这六种主要UML关系的说明和类图描述, ...

  7. Android应用开发学习笔记之Fragment

    作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz Fragment翻译成中文就是“碎片”.“片断”的意思,Fragment通常用来作为一个Activity用户界面的一 ...

  8. IE8中伪元素动态作用样式不重绘bug记录

    前阵子对公司框架的前端优化中,使用了字体图标(iconfont)来做模块的图标集,供用户进行配置选择. 字体图标的有非常好的灵活性和复用性,可以像处理文字一样通过font-size进行大小设置.通过c ...

  9. 如何监控执行的SQL语句?

    环境: SQL Server 2012. 打开SQL Server Profiler. 在菜单中选择New Trace, 连接上SQL Server. 在弹出的窗口中选择Event selection ...

  10. [Backbone]8. Level 7: Router and history

    1. Ceate a route Class var AppRouter = Backbone.Router.extend({ }); 2. Add a route name it "sho ...