本文转自  菜鸟教程


 一、HTTP协议(HyperText Transfer Protocol,超文本传输协议)

是因特网上应用最为广泛的一种网络传输协议,

是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。

所有的WWW文件都必须遵守这个标准。

HTTP 是一个基于TCP/IP通信协议来传递数据(HTML 文件图片文件查询结果等)。

二、HTTP工作原理

1. HTTP 协议工作于 客户端-服务端 架构上。浏览器作为 HTTP 客户端通过 URL 向 HTTP 服务端即 WEB 服务器发送所有请求。

2. Web 服务器根据接收到的请求后,向客户端发送响应信息。

HTTP 注意事项:

  • HTTP 是无连接:无连接的含义是 限制每次连接只处理一个请求

服务器处理完客户的请求,并收到客户的应答后,即断开连接。

采用这种方式可以节省传输时间

  • HTTP 是媒体独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过 HTTP 发送。

客户端以及服务器指定使用适合的 MIME-type 内容类型

  • HTTP 是无状态:HTTP 协议是无状态协议。无状态是指协议对于事务处理没有记忆能力

缺少状态 意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。

另一方面,在服务器不需要先前信息时它的应答就较快。

  • Web 服务器有:Apache 服务器,IIS 服务器(Internet Information Services)等。
  • HTTP 默认端口号为 80,但是你也可以改为 8080 或者其他端口。

三、HTTP协议通信流程

四、HTTP消息结构

  HTTP 是基于客户端/服务端(C/S)的架构模型,通过一个可靠的链接来交换信息,是一个无状态的请求/响应协议。

  一个 HTTP "客户端" 是一个应用程序(Web 浏览器或其他任何客户端)

通过连接到服务器达到向服务器发送一个或多个 HTTP 的请求的目的。

  一个 HTTP "服务器" 同样也是一个应用程序(通常是一个 Web 服务,如 Apache Web 服务器或 IIS 服务器等)

通过接收客户端的请求并向客户端发送 HTTP 响应数据。

  HTTP 使用统一资源标识符(Uniform Resource Identifiers, URI)来传输数据和建立连接。

  一旦建立连接后,数据消息就通过类似 Internet 邮件所使用的格式 [RFC5322] 和 多用途 Internet 邮件扩展(MIME)[RFC2045] 来传送。

  1. 客户端请求消息

    客户端发送一个 HTTP 请求到服务器的请求消息包括以下格式:请求行(request line)请求头部(header)空行请求数据四个部分组成,

    下图给出了请求报文的一般格式。

    

  2. 服务器响应消息

   HTTP响应也由四个部分组成,分别是:状态行消息报头空行响应正文

    下图给出了响应报文的一般格式。

    

  3. 实例

    典型的使用GET来传递数据的实例:

      客户端请求:

GET /hello.txt HTTP/1.1
User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3
Host: www.example.com
Accept-Language: en, mi

       服务端响应:

HTTP/1.1 200 OK
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
ETag: "34aa387-d-1568eb00"
Accept-Ranges: bytes
Content-Length: 51
Vary: Accept-Encoding
Content-Type: text/plain

      

        输出结果:

Hello World! My payload includes a trailing CRLF.

__http原理__01__通信流程_消息格式的更多相关文章

  1. 详解FIX协议的原理、消息格式及配置开发

    一.定义 FIX协议是由国际FIX协会组织提供的一个开放式协议,目的是推动国际贸易电子化的进程,在各类参与者之间,包括投资经理.经纪人,买方.卖方建立起实时的电子化通讯协议.FIX协议的目标是把各类证 ...

  2. https 通信流程和Charles 抓包原理

    1. https 通信流程 ①客户端的浏览器向服务器传送客户端SSL 协议的版本号,加密算法的种类,产生的随机数,以及其他服务器和客户端之间通讯所需要的各种信息.②服务器向客户端传送SSL 协议的版本 ...

  3. CORBA GIOP消息格式学习

    想要深入理解ORB的工作过程与原理,学习与了解GIOP消息格式必不可少.我们知道GIOP是独立于具体通信的更高级别的抽象,因此这里针对GIOP在TCP/IP上的实现IIOP协议进行学习与分析(IIOP ...

  4. 第2章 rsync算法原理和工作流程分析

    本文通过示例详细分析rsync算法原理和rsync的工作流程,是对rsync官方技术报告和官方推荐文章的解释. 以下是本文的姊妹篇: 1.rsync(一):基本命令和用法 2.rsync(二):ino ...

  5. rsync算法原理和工作流程分析

    本文通过示例详细分析rsync算法原理和rsync的工作流程,是对rsync官方技术报告和官方推荐文章的解释.本文不会介绍如何使用rsync命令(见rsync基本用法),而是详细解释它如何实现高效的增 ...

  6. 第二十六天- C/S架构 通信流程 socket

    1.C/S架构 C/S架构:Client与Server ,中文意思:客户端与服务器端架构,这种架构也是从用户层面(也可是物理层面)来划分的.这里客户端一般指需先安装再执行的应用程序,对操作系统依赖性较 ...

  7. rsync(三)算法原理和工作流程分析

    在开始分析算法原理之前,简单说明下rsync的增量传输功能. 假设待传输文件为A,如果目标路径下没有文件A,则rsync会直接传输文件A,如果目标路径下已存在文件A,则发送端视情况决定是否要传输文件A ...

  8. Django---Http协议简述和原理,HTTP请求码,HTTP请求格式和响应格式(重点),Django的安装与使用,Django项目的创建和运行(cmd和pycharm两种模式),Django的基础文件配置,Web框架的本质,服务器程序和应用程序(wsgiref服务端模块,jinja2模板渲染模块)的使用

    Django---Http协议简述和原理,HTTP请求码,HTTP请求格式和响应格式(重点),Django的安装与使用,Django项目的创建和运行(cmd和pycharm两种模式),Django的基 ...

  9. Kafka网络模型和通信流程剖析

    1.概述 最近有同学在学习Kafka的网络通信这块内容时遇到一些疑问,关于网络模型和通信流程的相关内容,这里笔者将通过这篇博客为大家来剖析一下这部分内容. 2.内容 Kafka系统作为一个Messag ...

随机推荐

  1. [Android] 免费天气预报接口

    [Android] 免费天气预报接口 这是 国家气象局提供的天气预报接口 [免费] 当然,网上有很多的收费API或者每天定次数的接口 使用 国家气象局 的步骤如下: 1.首先获取城市ID号 北京:10 ...

  2. [物理学与PDEs]第4章第3节 一维反应流体力学方程组 3.1 一维反应流体力学方程组

    1. 一维粘性热传导反应流体力学方程组 $$\beex \bea \cfrac{\p\rho}{\p t}&+\cfrac{\p}{\p x}(\rho u)=0,\\ \cfrac{\p}{ ...

  3. SQL Server 数据库编程技巧

    Ø  简介 本文主要介绍 SQL Server 数据库在平常的开发中,可能会涉及到的编程技巧,主要包含以下内容: 1.   解决 SQL Server 不支持 127.0.0.1 登录 2.   查询 ...

  4. Silverlight Visifire控件应用去除图标的水印

    首先,新建一个类,继承自Chart,重写LoadWatermark方法. 再创建图表实例的时候就不能new Chart实例了,直接使用MyCharts. 使用去除水印之前的图片: 使用去除水印之后的图 ...

  5. 【转载】Jenkins安装以及邮件配置

    转载:http://www.nnzhp.cn/archives/590 Jenkins介绍 Jenkins是一个java开发的.开源的.非常好用持续集成的工具,它能帮我们实现自动化部署环境.测试.打包 ...

  6. Ubuntu18.04更换官方默认更新源sources.list

    ⒈备份官方默认更新源文件 cp /etc/apt/sources.list /etc/apt/sources.list.bak 备份官方更新源文件 ⒉编辑 1.打开 vi /etc/apt/sourc ...

  7. Spring Cloud Context模块

    SpringCloud这个框架本身是建立在SpringBoot基础之上的,所以使用SpringCloud的方式与SpringBoot相仿.也是通过类似如下代码进行启动. SpringApplicati ...

  8. Eclipse 搭建 Strust2开发环境

    一.创建一个动态Web项目 ♦  注意 :一定要勾选Generate Web.xml deployment descriptor 选项,这个将在Eclipse为你创建一个动态web项目. 二.导入相关 ...

  9. sublime自动保存设置

    首选项——用户设置 (Preferences:Settings - User) 行末添加"save_on_focus_lost": true 注意用逗号分隔 保存即可 save_o ...

  10. wx获取地理位置

    1.公众号配置. 2.引入js 一个放在根目录下的txt文件. 3.1)第一个ajax为获取后台传给的wx.config需要的参数:wx.ready().通过ready接口处理成功验证.然后才是wx. ...