HTTP学习之HTTP基础
学习HTTP技术,首先要了解它的在web通信中有哪些特点,起到什么作用、有哪些规范、都有什么功能。

HTTP的特点
HTTP使用的是一种可靠的、快速响应的数据传输协议,用户一旦发起请求,Web服务器可以快速的做出响应,并将请求的资源内容完整的连同响应一起回送给客户端。由于其可靠性,数据在传输过程中不会被破坏、复制或者产生畸变。因此用户无需担心请求的数据是否完整。开发人员也能专注于应用程序的开发而不用担心因特网存在的缺陷。
资源类型
web服务器是web资源的宿主,web资源是web内容的源头。
静态资源
文本文件、HTML文件、word文件、图片、电影或其他
动态资源
根据需要生成内容的软件程序,这些程序可以根据访问者的身份,所请求的信息或者个根据需求而产生的内容
媒体类型
由于网络上需要传输的内容类型有上千万种。因此HTTP会在将要传输的内容上打上MIME数据格式标签。客户端向服务器发起请求时,服务端会将MIME数据格式标签连同响应内容一起回送给客户端,此时客户端会去读取MIME标签类型,判断自己是否能解析该种类型内容。多数游览器都可以处理上百种常见的标签类型。显示图片、解析并格式化HTML文件、调用计算机声卡播放音频文件或运用外部的插件软件来处理特殊的格式数据,比如播放安装Adobe的Flash插件来播放在线视频。
MIME是一种文本标记,表示一种主要的对象类型和一个特定的子类型,中间以斜杠分隔。
常用对象类型和特定子类型
| HTML文本文档 | text/html |
| 普通的ASCII文本文档 | text/plain |
| JPEG格式的图片 | image/jpeg |
| GIF格式的图片 | image/gif |
| Apple的QuickTime电影 | video/quicktime |
| 温软的ppt | application/vnd.ms-powerpoint |
找到资源位置
现在我们已经知道HTTP通信基本原理、特性、作用以及传输中标记的类型。现在我们需要知道如何通过web游览器找到这些资源。
URI:
资源被存储在一个个的web服务器上,这种服务器被称为统一资源标识符(Uniform Resource Indetifier 简称URI)。URI就像邮件地址似的,在全世界范围内有且只有一个。试想,你不想给朋友发送邮件的时候,发送给了除了朋友外的其他人吧?
URL:
URL(统一资源定位符)描述特定服务器上某资源的特定位置,解释并明确说明如何如何从一个精确、固定的位置获取资源。
大部分URL遵循以下格式
一:使用哪种协议
二:服务器的因特网地址
三:指定web服务器上的某个资源
URN:
URL的第二种形式,统一资源名
事务
客户端与web服务器通过HTTP的交互被称为HTTP的事务,HTTP事务由一条请求命令和响应结果组成,这种通信是通过HTTP报文的格式化数据块进行的。(后续会对报文做介绍)
HTTP版本
HTTP/0.9 :只支持老客户端的交互,HTTP/0.9只支持GET方法,不支持多媒体内容MIME类型、各种HTTP首部或者版本号,初衷是为了获取简单的HTML页面。
HTTP/1.0: 1.0添加了版本号、各种HTTP首部和一些额外的方法及对多媒体对象的处理。使得web页面更加丰富和可交互成为可能。
HTTP/1.0+P: 添加了很多新特性,比如持久化keep-alive连接,虚拟主机支持,以及代理连接支持都被加入到HTTP之中。
HTT/1.1: 校正HTTP设计中的结构性缺陷,明确语义,引入重要的性能优化措施,删除一些不好的特性还包含正在发展中的更复杂的web应用程序和部署方式的支持。1.1是目前 使用的HTTP版本
Web组件结构
代理:
代理是Web安全、应用集成及性能优化的重要组成模块。

代理作为客户端和服务器的中间件,起了关键性作用,在转发web流量的时候只转发被过滤的可信任节点,还可对web客户端和服务器双向过滤。比如企业服务器可以通过代理来检测访问者是否携带有病毒,屏蔽成年人才能观看的节目。
缓存:
web缓存或者代理缓存是特殊的HTTP代理服务器,可以将代理传送的常用文本复制保存起来,下次客户端再向服务器发起相同请求时,就可以使用代理缓存的私有副本,从而减少服务器的开销。

网关
一种特殊的服务器,作为其他服务器的中间实体使用,通常用于将HTTP流量转换成其他的协议。网关接受请求时,就好像自己是资源的源端服务器一样,而客户端并不知道自己正在跟一个网关进行通信。

隧道:
HTTP隧道的常见用途是通过HTTP连接承载加密的安全套接字层(SSL, Secure Sockets Layer)流量,这样SSL流量就可以穿过只允许Web流量通过的防火墙。

如图,HTTP/SSL隧道收到一条HTTP请求,要求建立一条到达目的地址和端口的输出连接,隧道建立起来后,会在隧道内传输加密过的SSL流量,即便是双方是盲转发通信业不用担心信息会被劫持。
Angent代理:
所有发布web请求的应用程序都是HTTP代理,现实生活中也有很多代理,比如邮递员就是一种代理。代替你将投递的物品完整的送到目的地,接收者或投递员将投递结果反馈给你从而释放自己,无需亲力亲为。常见的代理,比如网络爬虫、搜集信息以构建有效的web内容档案。

HTTP学习之HTTP基础的更多相关文章
- 这几天开始,先学习一些 java 基础吧,学的有点累
这几天开始,先学习一些 java 基础吧,学的有点累
- Emacs学习心得之 基础配置
作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Emacs学习心得之 基础配置 1.前言2.基础配置 一.前言 本篇博文记录了Emacs的一 ...
- Emacs学习心得之 基础操作
作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Emacs学习心得之 基础操作 1.前言与学习计划2.Emacs基础操作 一. 前言与学习计 ...
- 如何学习FPGA?FPGA学习必备的基础知识
如何学习FPGA?FPGA学习必备的基础知识 时间:2013-08-12 来源:eepw 作者: 关键字:FPGA 基础知识 FPGA已成为现今的技术热点之一,无论学生还是工程师都希望 ...
- java与.net比较学习系列(2) 基础语言要素
这一篇从最基础的开始对比总结,说起基础语言要素,故名思义,就是学习语言的基础,主要内容包括标识符,关键字和注释.我想从以下几点进行总结,有区别的地方有都使用红色粗体字进行了总结. 1,标识符 2,关键 ...
- MyBatis:学习笔记(1)——基础知识
MyBatis:学习笔记(1)--基础知识 引入MyBatis JDBC编程的问题及解决设想 ☐ 数据库连接使用时创建,不使用时就释放,频繁开启和关闭,造成数据库资源浪费,影响数据库性能. ☐ 使用数 ...
- bootstrap学习笔记之基础导航条 http://www.imooc.com/code/3111
基础导航条 在Bootstrap框中,导航条和导航从外观上差别不是太多,但在实际使用中导航条要比导航复杂得多.我们先来看导航条中最基础的一个--基础导航条. 使用方法: 在制作一个基础导航条时,主要分 ...
- AJAX学习前奏----JS基础加强
AJAX学习前奏----JS基础加强 知识概要: 1.js类&属性&方法的定义 2.静态属性与方法 3.构造方法 4.原型的使用 5.Object对象直接加属性和方法 6.JSO ...
- 大数据学习之Linux基础01
大数据学习之Linux基础 01:Linux简介 linux是一种自由和开放源代码的类UNIX操作系统.该操作系统的内核由林纳斯·托瓦兹 在1991年10月5日首次发布.,在加上用户空间的应用程序之后 ...
- 第65节:Java后端的学习之Spring基础
Java后端的学习之Spring基础 如果要学习spring,那么什么是框架,spring又是什么呢?学习spring中的ioc和bean,以及aop,IOC,Bean,AOP,(配置,注解,api) ...
随机推荐
- 功能强大的系统配置工具-- Siebel Tools
Siebel Tools 是Siebel 为其CRM产品开发人员专门提供的系统配置工具,系统的客户化修改以及系统升级控制等都是通过该工具进行配置(Configuration) .该工具直接修改Sieb ...
- redis 笔记(二)
在上一篇中提到了数据类型 ,在本章中就具体说说这几种数据类型: sting :set /get / del / append /strlen 简单的对key-->value 写入读取删除增减 i ...
- MySQL 5.7 修改数据物理文件目录
修改MySQL数据库物理文件存放位置,需要在MySQL配置文件中修改相关参数.安装MySQL5.7后,在MySQL安装目录下没有找到数据库物理文件,最后经过查找发现其在“C:\ProgramData\ ...
- java之大文件断点续传
针对某些场景下,面对服务文件大,或者服务端服务器不稳定时使用该模块.功能代码如下: import java.io.File; import java.io.FileOutputStream; impo ...
- March 27 2017 Week 13 Monday
A book that remains shut is but a block. 有书闭卷不阅读,无异于一块木头. I had planned to buy a book and read it ev ...
- SQA1
客观地验证软件项目产品和工作是否遵循恰当的标准.步骤和需求. 2.将软件质量保证工作及结果通知给相关组别和个人.
- [转]JetBrains IntelliJ IDEA 13 Keygen (Java Source Code)
转载:http://www.rover12421.com/2013/12/09/jetbrains-intellij-idea-13-keygen-java-source-code.html JetB ...
- POJ-2886 Who Gets the Most Candies?---线段树+约瑟夫环
题目链接: https://cn.vjudge.net/problem/POJ-2886 题目大意: N个人围成一圈第一个人跳出圈后会告诉你下一个谁跳出来跳出来的人(如果他手上拿的数为正数,从他左边数 ...
- POJ 1470 Closest Common Ancestors 【LCA】
任意门:http://poj.org/problem?id=1470 Closest Common Ancestors Time Limit: 2000MS Memory Limit: 10000 ...
- 如何删除anaconda
因为实验室电脑之前装tensorflow是用的anaconda装的,导致现在用pip装tensorflow1.0装上了却还是用的annaconda下的tensorflow0.8,所以想删除anacon ...