概念

HTTP(Hypertext Transfer Protocol,超文本传输协议)是TCP/IP协议的应用(封装)。

HTTP协议是单向通讯,无状态,主要应用于B/S模型的网络软件,客户端一(多)个请求对应服务端一(多)个响应(客户端→服务端)。

HTTP协议传输的资源不仅仅是文本,还可以是图片,音视频等资源,并且通过URL(Uniform Resource Locators,统一资源定位器)来定位资源位置。

版本

HTTP 1.0: 短连接,一个请求响应后就断开连接。

HTTP 1.1 :长连接,多个请求响应后保持连接。

HTTP 2.0 :长连接,一个连接发起多个请求响应。特点是多路复用(压缩请求头,SPDY协议),传输二进制文件流,利于服务端推送消息。

工作原理

1. 用户打开Web浏览器,并访问Web站点。

2. Web浏览器(客户端)向Web服务端发出HTTP请求。

3. Web服务端根据收到HTTP请求后,返回对应的结果给Web浏览器。

请求方式

GET方式:在URL带参数请求,可缓存请求(适用于信息检索查询)

POST方式:在HTTP消息体带参数请求,可缓存请求,相同请求不会覆盖。(适用于表单提交)

PUT方式:在HTTP消息体带参数请求。不缓存请求,相同请求会以最后一次请求覆盖。(适用于表单修改提交)

DELETE方式:在URL带参数请求,不缓存请求。(适用于删除指定的资源)

PS:其他请求方式不常用,所以就不列举说明。

请求消息体

响应消息体

状态码

200:服务器成功处理了请求。(请求随之响应)

206:服务器成功处理部分请求。(针对下载软件断点续传功能)

301:被请求的资源已永久移动到新位置。(会传递传递页面权重到新的url上)

302:被请求的资源已临时移动到新位置。(不会传递传递页面权重到新的url上)

304:无修改,客户的缓存资源是最新的,要客户端使用缓存。(针对缓存服务器系统)

305:用户代理,需要代理才能访问。(针对vpn)

400:客户端请求错误。(提交的数据不正确,服务器无法理解)

403:服务器已经理解请求,但是拒绝执行它。(禁止某些地区用户访问)

404:服务器无法找到所请求的URL。(该文件找不到)

501:服务器遇到一个错误,使其无法对请求提供服务。(服务器出错)

503:服务器目前无法为请求服务服务。(服务器维护中)

504:服务器超时。(服务器没有及时响应)

505:服务器http与客户端http协议不一致。(针对http协议版本问题)

PS:其他状态码不常用,所以就不列举说明。

补充:关于web服务器的一些理解。http服务器=web服务器

Apache是一个http服务器,不是web应用服务器。所以Apache不能直接支持jsp、php、asp.net。需要额外使用web应用服务器支持,也就是通过CGI、FastCGI、ISAPI等其他接口进行处理。(比如:Tomcat)

Apache之所以能支持解析php,是因为Apcahe是一个模块化的服务器,可以安装支持php模块,所以Apache就充当php服务器。(大多数的人可能喜欢使用WAMP一件套来开发,误认为Apache就是php服务器)

十分钟了解HTTP协议的更多相关文章

  1. 十分钟了解HTTPS协议

    概念 HTTP协议上添加一层SSL/TLS协议进行加密,保证用户与web站点之间的数据传输时密文,而不是明文. PS:HTTPS协议 = HTTP协议 + SSL(Secure Sockets Lay ...

  2. 十分钟看懂AES加密

    十分钟看懂AES加密算法 今天看了Moserware的<A Stick Figure Guide to the Advanced Encryption Standard(AES)>收获了不 ...

  3. 如何消灭飞机的“黑色十分钟”,AI来帮忙

    近年来,“AI的应用和落地”逐渐成了具化的关键词,它和很多事物很多行业结合在一起,形成了奇妙的“化学反应”.例如,在日常生活中,AI可以推送我们喜欢的新闻或视频,可以在拍照的时候识别场景提升照片的美感 ...

  4. 【NLP】十分钟快览自然语言处理学习总结

    十分钟学习自然语言处理概述 作者:白宁超 2016年9月23日00:24:12 摘要:近来自然语言处理行业发展朝气蓬勃,市场应用广泛.笔者学习以来写了不少文章,文章深度层次不一,今天因为某种需要,将文 ...

  5. 十分钟轻松让你认识ASP.NET MVC6

    这篇文章说明下如何在普通编辑器下面开发mvc6应用程序. 上篇文章: 十分钟轻松让你认识ASP.NET 5(MVC6) 首先安装mvc6的nuget包: 可以看到在project.json文件中添加了 ...

  6. 十分钟轻松让你认识ASP.NET 5(MVC6)

    ASP.NET 5差不多快发布了.自己也学习了有两个月了.今天给没有接触asp.net 5的同学写一个简单地十分钟教程,教你认识一下asp.net 5. 1.安装kvm 首先,你需要以管理员权限打开c ...

  7. 十分钟了解分布式计算:Google Dataflow

    介绍 Google Cloud Dataflow是一种构建.管理和优化复杂数据处理流水线的方法,集成了许多内部技术,如用于数据高效并行化处理的Flume和具有良好容错机制流处理的MillWheel.D ...

  8. 十分钟了解分布式计算:GraphX

    GraphX原型论文 GraphX是Spark中用于图(e.g., Web-Graphs and Social Networks)和图并行计算(e.g., PageRank and Collabora ...

  9. 快速入门:十分钟学会Python

    初试牛刀 假设你希望学习Python这门语言,却苦于找不到一个简短而全面的入门教程.那么本教程将花费十分钟的时间带你走入Python的大门.本文的内容介于教程(Toturial)和速查手册(Cheat ...

随机推荐

  1. jQuery动态追加移除CSS样式

    jQuery基础知识,动态添加删除CSS样式 <!DOCTYPE html> <html lang="en"> <head> <meta ...

  2. LeetCode:103Binary Tree Zigzag Level Order Traversal

    真是不容易啊,做这道题的时候脑子一团乱,感觉还是得劳逸结合啊.这道题的思想不难,就是宽搜BFS.通过设置一个flag来判断是否需要逆序输出. 我的做法虽然AC,但是觉得代码还是不好,空间占用较多. / ...

  3. Python一个有意思的地方:reduce、map、filter

    今天阅读了关于Python函数式编程的系列文章,地址在这里: http://www.cnblogs.com/huxi/archive/2011/06/24/2089358.html 里面提到了四个内建 ...

  4. java面试题(杨晓峰)---第六讲谈谈动态代理是基于什么原理?

    我在编译时不知道,而在运行时知道,那么肯定在运行时给了提示,这个提示就是额外功.好处是可以重复利用相同代码. 代理模式:通过代理静默的解决一些与业务无关的问题,例如远程,安全,事物,日志,资源关闭,. ...

  5. 如何用JavaScript实现2+2=5?

    我大学毕业找工作时,经常做一些稀奇古怪的面试题.这不,给大家分享一道整蛊的面试题,它其实不能算一道正式的面试题,大家可以用它来捉弄你们那些程序员朋友. 题目:如何用JavaScript实现2+2=5? ...

  6. 【UML】用例图Use Case diagram(转)

    http://blog.csdn.net/sds15732622190/article/details/48858219 前言 总结完UML概述,就该说道UML中的九种图了,这九种图中,最先要说的,就 ...

  7. 通过存储过程批量生成spool语句

    过存储过程批量生成spool语句 CREATE OR REPLACE PROCEDURE pro_yx_full_txt IS export_handle UTL_FILE.file_type; v_ ...

  8. Java字符串池(String Pool)深度解析(转)

    出自  http://www.cnblogs.com/fangfuhai/p/5500065.html 在工作中,String类是我们使用频率非常高的一种对象类型.JVM为了提升性能和减少内存开销,避 ...

  9. 基于GPS\北斗、GIS、GPRS技术构建智能巡检系统

    巡线工负责输油管网设施的日常巡查,可以及时发现管网设施是否完好.但巡检工作辛苦,加之管线在大部分情况下又处于良好状态,使得巡检人员麻痹大意,往往不能按规定程序进行巡检,造成巡检不到位,这样就不能从根本 ...

  10. JVM内存模型与GC算法(简介)

    JVM内存模型如上图,需要声明一点,这是<Java虚拟机规范(Java SE 7版)>规定的内容,实际区域由各JVM自己实现,所以可能略有不同.以下对各区域进行简短说明. 1.1程序计数器 ...