超文本传输协议(HTTP,HyperText Transfer Protocol)是用于从服务器传输超文本到本地浏览器的传输协议,是应用最为广泛的网络协议。B/S网络架构的核心是HTTP,掌握HTTP对一个从事互联网工作的程序员来说非常重要。要理解HTTP,还需要了解HTTP中的HTTP Header,HTTP Header控制着成千上万的用户的数据传输以及用户浏览器的渲染行为和服务器的执行逻辑。

常见的HTTP请求头:

  Accept-Charset:指定客户端可以接受的字符集编码

  Accept-Encoding:指定浏览器可以支持的Web服务器返回内容压缩编码类型

  Accept-Language:指定浏览器可以接受的语言

  Host:表示请求的服务器的域名和端口号

  User-Agent:客户端将它的操作系统、浏览器和其他属性告诉服务器

  Connection:表示是否需要持久连接

常见的HTTP响应头:

  Server:表示Web服务器软件名称

  Content-Type:表示返回内容的MIME类型

  Content-Encoding:表示Web服务器只是的返回内容压缩编码类型

  Content-Language:表示响应体的语言

  Content-Length:表示响应体的内容长度,这个长度是经过了压缩后的长度

  Keep-Alive:表示保持连接的时间

常见的HTTP状态码:

  200:表示客户端请求成功

  302:表示临时跳转

  400:表示客户端请求有语法错误,不能被服务器识别

  403:表示服务器收到请求,但是拒绝提供服务

  404:表示服务器找不到请求的资源

  500:表示服务器发生了不可预期的错误

HTTP工作流程:

  1、首先客户端与服务器需要建立连接,只需要单击某个超级链接,HTTP的工作开始。

  2、建立连接后,客户端发送一个请求给服务器(默认请求服务器的80端口),请求方式的格式为:统一资源标识符(URL)+协议版本号+MIME信息包括请求修饰符、客户端信息和可能的内容。

  3、服务器接收到请求后,给予响应的相应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后面是MIME信息包括服务器信息、实体信息和可能的内容。

  4、客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后克尔护短和服务器断开连接。

HTTP协议的主要特点:

  1、支持客户端/服务器模式

  2、简单快速,客户端向服务器发送请求服务时,只需要传送请求方法和路径。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度快

  3、灵活,HTTP允许传输任意类型的数据对象,正在传输的类型由Content-Type加以标记

  4、无连接,无连接的含义是限制每次连接只处理一个请求,服务器处理完成客户端的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间

  5、无状态,HTTP协议是无状态协议,无状态是指协议对于事物处理没有记忆能力,缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传输的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快

HTTP协议的简单解析的更多相关文章

  1. TCP协议疑难杂症全景解析

    说明: 1).本文以TCP的发展历程解析容易引起混淆,误会的方方面面2).本文不会贴大量的源码,大多数是以文字形式描述,我相信文字看起来是要比代码更轻松的3).针对对象:对TCP已经有了全面了解的人. ...

  2. 【转载】TCP协议疑难杂症全景解析

    说明: 1).本文以TCP的发展历程解析容易引起混淆,误会的方方面面2).本文不会贴大量的源码,大多数是以文字形式描述,我相信文字看起来是要比代码更轻松的3).针对对象:对TCP已经有了全面了解的人. ...

  3. UDP协议疑难杂症全景解析

    转载:http://blog.csdn.net/dog250/article/details/6896949 UDP协议疑难杂症全景解析 2011-10-22 19:26 2989人阅读 评论(4)  ...

  4. 参考MySQL Internals手册,使用Golang写一个简单解析binlog的程序

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. MySQL作为最流行的开源关系型数据库,有大量的拥趸.其生态已经相当完善,各项特性在圈内都有大量研究.每次新特性发布,都会 ...

  5. WIFI知识累计之802.11协议radiotap头解析方法

    radiotap官方网站:http://www.radiotap.net/Radiotap 该网站详细介绍了radiotap的各个字段的长度和介绍,并包含解析代码项目地址,该文就在此网站的基础编写一些 ...

  6. 对 cloudwu 简单的 cstring 进行简单解析

    题外话 以前也用C写过字符串,主要应用的领域是,大字符串,文件读取方面.写的很粗暴,用的凑合着.那时候看见云风前辈的一个开源的 cstring 串. 当时简单观摩了一下,觉得挺好的.也没细看.过了较长 ...

  7. 基于DOM的XSS注入漏洞简单解析

    基于DOM的XSS注入漏洞简单解析http://automationqa.com/forum.php?mod=viewthread&tid=2956&fromuid=21

  8. 依据 smtp协议的简单golang 的发邮件实现

    依据 smtp协议的简单golang 的发邮件实现 协议格式如下 From:sender_user@demo.net To:to_user@demo.net Subject:这是主题 Mime-Ver ...

  9. 15.5 自学Zabbix之路15.5 Zabbix数据库表结构简单解析-其他 表

    点击返回:自学Zabbix之路 自学Zabbix之路15.5 Zabbix数据库表结构简单解析-其他 表  1. Actions表 actions表记录了当触发器触发时,需要采用的动作. 2.Aler ...

随机推荐

  1. 使用kompose 快速转换dokcer-compose 文件为k8s deploy 文件

    kompose 是一个不错的快速转换docker-compose 文件为k8s 部署yaml文件的工具,使用次工具我们 可以将简单的docker-compose文件,转换为复杂的yaml文件,对于使用 ...

  2. 改变codeblocks里面各种注释的颜色。

    ->Setting->Editor->Syntax highlighting->“Comment(normal)” /* 改变块注释颜色 */"Comment lin ...

  3. 机器学习 - 开发环境安装pycharm + tensorflow集成篇

    继续上篇的pyspark集成后,我们再来看看当今热的不得了的tensorflow是如何继承进pycharm环境的 参考: http://blog.csdn.net/include1224/articl ...

  4. AIX系统日志

    1.系统错误日志 存放路径:/var/adm/ras/errlog 说明:该日志记录了系统所检测到的软硬件故障和错误,尤其对系统的硬件故障有很大的参考价值,是AIX提供的最有价值的日志之一, errl ...

  5. 关于 TypeReference 的解释

    首先 TypeReference  是描述 一个复杂 泛型的工具类. TypeReference 很多类库都有,用 fastjson 的 举例,大概就这个意思. 例子: Response<Fee ...

  6. $("#form1"). serialize()提交表单

    一.jQuery ajax()使用serialize()提交form数据 jQuery的serialize()方法通过序列化表单值,创建URL编码文本字符串,我们就可以选择一个或多个表单元素,也可以直 ...

  7. ML平台_Angel参考

    Angel 是腾讯开源基于参数服务器(Parameter Server)理念的机器学习框架(为支持超大维度机器学习模型运算而生).核心设计理念围绕模型,它将高维度的大模型切分到多个参数服务器节点,并通 ...

  8. Opencv 视频保存为图像

    // 视频存为图片.cpp : 定义控制台应用程序的入口点. // /*================================================================ ...

  9. Linux下python2.7安装pip

    首先下载并安装setuptools: wget --no-check-certificate https://bootstrap.pypa.io/ez_setup.py sudo python ez_ ...

  10. 【巷子】---redux---【react】

    一.flux的缺陷 因为dispatcher和Store可以有多个互相管理起来特别麻烦 二.什么是redux 其实redux就是Flux的一种进阶实现.它是一个应用数据流框架,主要作用应用状态的管理 ...