2013的双12即将到来,网上购物是大家所熟悉的。看中小米电视时,可以先下订单然后再付款,电商根据订单将小米电视正确安全的送达给我们。包裹包含电视的基本信息及电视的使用说明书,使我们能够初步的了解它的基本情况及指导我们怎么去使用它。订单和使用说明书是客户与电商沟通的桥梁,指引他们在网上购物。当然基于Http协议的网络通信,客户端和服务器也需要一种东西作为两者沟通的桥梁---Http报文,客户端和服务器分别主要指浏览器和Web服务器。下面以Http报文存在的意义、类型及组成成分展开讲述。

Http报文存在的意义

  Http报文是客户端与服务器之间互相传送的数据块,这些数据块以一些文本形式的元信息开头,描述报文的内容及含义(订单及使用说明书),后面跟着可选的数据部分(电视)。客户端和服务器会解析报文的含义执行对应的操作。比如,jsp里response.sendRedirect(url),Web服务器就会发送一个300-399之间的状态码和Location首部告诉浏览器重新请求Location指定的URL。如果浏览器需要与Web服务器持久连接,那么前者就需要发送Connection:keep-alive报头告诉后者处理完请求后不要关闭连接,后者需要关闭连接就需发送Connetion:close告诉前者已关闭连接。在基于Http协议的网络通信过程中,客户端和服务器之间的通信只能依靠Http报头。换句话说,没有Http报文,客户端就不能与服务器通信。

Http报文的类型及组成成分

  Http报文主要包含请求报文和响应报文。报文包括以下格式

起始行:报文的第一行,在请求报文中说明要做些什么,在响应报文中说明发生了什么

首部字段:起始行后面有零个或多个首部字段,首部以一个空格结束。比如Content-Length:300,表示响应主体的长度

主体:请求主体包含要发送给服务器的数据,响应主体包含要返回给客户端的数据,如下图

起始行包括请求行和响应行,请求行的格式:

响应行的格式:

Http协议的报头是千变万化的,我们不可能记住所有报头代表的含义。所以需要了解报头每个部分代表的意义和进行归类。

<method>:客户端告知服务器对资源执行的动作。比如GET,POST,HEAD

<version>:之所以客户端和服务器都需要返回和发送http的版本,是因为每个版本的http的报头都有差异,比如http1.0有持久连接的特性,而http0.9没有,客户端和服务器会根据http的版本在解析报头的时候做出正确的判断后再执行相应的动作。

<status>:服务器告诉客户端这次请求事务的结果,是失败还是成功还是...

<headers>:首部主要包括通用首部、请求首部、响应首部及主体首部。

    通用首部:可以出现在请求报头和响应报文中。比如,Date,Connection

    请求首部:仅出现在请求报文,比如,referer,host

    响应首部:仅出现在响应报文,比如,Server

    主体首部:描述主体,比如contentType,contentLength

<entity>:真正数据存放的地方。

  

Http协议-报文的更多相关文章

  1. HTTP协议报文格式

    HTTP协议报文格式 接下来我们看看HTTP协议(Hypertext Transfer Protocol――超文本传输协议)浏览器端(客户端)向WEB服务器端访问页面的过程和HTTP协议报文的格式. ...

  2. HTTP协议报文、工作原理及Java中的HTTP通信技术详解

    一.web及网络基础       1.HTTP的历史            1.1.HTTP的概念:                 HTTP(Hyper Text Transfer Protocol ...

  3. HTTP协议报文、工作原理

    一.web及网络基础       1.HTTP的历史            1.1.HTTP的概念:                 HTTP(Hyper Text Transfer Protocol ...

  4. HTTP协议报文结构及示例

    HTTP基本架构 下面我们用一张简单的流程图来展示HTTP协议基本架构,以便大家先有个基本的了解. 9.png Web Client可以是浏览器.搜索引擎.机器人等等一切基于HTTP协议发起http请 ...

  5. HTTP 协议报文解析

    说明转载自https://blog.csdn.net/chf1142152101/article/details/74162755 本篇主要是为了记录HTTP中报文的格式,以便针对报文进行解析.首先会 ...

  6. 计算机网络 之 TCP协议报文结构

    前言:上学期实训课,由于要做一个网络通信的应用,期间遇到各种问题,让我深感计算机网络知识的薄弱.于是上网查找大量的资料,期间偶然发现了roc大神的博客,很喜欢他简明易懂的博文风格.本文受roc的< ...

  7. HTTP协议图--HTTP 协议报文结构

    1.HTTP 报文 用于 HTTP 协议交互的信息被称为 HTTP 报文.请求端(客户端)的 HTTP 报文叫做请求报文:响应端(服务器端)的叫做响应报文.HTTP 报文本身是由多行(用 CR[car ...

  8. 新版期货数据交换(FTD)协议报文分析

    因为需要开发模拟CTP后台服务,实现一键切换CTP,所以我们需要分析CTP报文.(基于FTD协议2004版改进)   网上公开的只能找到04年老版本,和现前报文格式出入较大.参考:http://www ...

  9. 实验六 TLS协议报文解析

    一.实验目的 1.访问一个https://....的网站,捕TLS包并分析报文序列. 2.分析连接建立的完整过程,如:TCP三次握手.SSL安全连接,使用TLS协议连接.协商过程,加密传送的状态.TC ...

随机推荐

  1. yum 安装apache php 使php支持memcached扩展

    在公司上新项目的时候,无论生产环境还是测试环境,都会让运维安装php 环境(lamp/lnmp),并让php支持memcached 的扩展.这里搭建php环境其实主要就是搭建apache 和php.m ...

  2. ifndef/define/endif 和 #ifdef 、#if 作用和用法

    为了能简单的看看某些linux内核源码,复习了一下c语音,今天汇总了一下关于宏定义的相关内容: 一.ifndef/define/endif用法: .h文件,如下: #ifndef XX_H #defi ...

  3. Easyui combobox 怎么加载数据

    说明:开发环境 vs2012 asp.net mvc4 c# 1.效果图 2.HTML代码 <%@ Page Language="C#" AutoEventWireup=&q ...

  4. 在linux通过源码编译安装redis详细步骤

    1.下载源码包 [root@localhost opt]# wget http://download.redis.io/releases/redis-4.0.10.tar.gz 2.解压缩redis ...

  5. windows 安装 Redis

    本文安装的是 免安装版本: 1: https://github.com/MicrosoftArchive/redis/releases 下载Redis-x64-3.2.100.zip 设置密码 red ...

  6. 在RedHat Linux系统中安装和配置snmp服务

    检查系统是否安装snmp服务 # rpm -qa|grep snmp net-snmp-5.3.2.2-17.el5 net-snmp-perl-5.3.2.2-17.el5 net-snmp-dev ...

  7. maven-appfuse配备步骤

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/qiaqia609/article/details/36231851 maven-appfuse配置步 ...

  8. Java for LeetCode 132 Palindrome Partitioning II

    Given a string s, partition s such that every substring of the partition is a palindrome. Return the ...

  9. mac下编译FFmpeg-Android

    参考: [史上最傻瓜的]mac下编译FFmpeg-Android http://blog.csdn.net/ashqal/article/details/9381037

  10. 更新TP-LINK路由器的外网IP到花生壳动态IP解析

    ------------------------------------------------------------------------------- 以下内容可能还是存在问题,等之后有时间再 ...