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) ...
随机推荐
- PowerDesigner 连接数据库(以MySQL)为例
- 【SQL Server 2012】按倒序存储“分组统计”结果的临时表到新建表
程序预先说明: 本文访问的数据库是基于存有RDF三元组的开源数据库Localyago修改的库,其中只有一个表,表中有五个属性:主语subject.谓语predict.宾语object.主语的编号sub ...
- 如何在PB中调用 Microsoft WEB 浏览器 控件?
PB中使用Microsoft Web Browser控件步骤: 在pb的某窗口中加入OLE对象,选择Insert control(插入控件),然后选中"Microsoft WEB 浏览器&q ...
- monkey使用
一.Monkey测试原理:Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中.它向系统发送伪随机的用户事件流(如按键输入.触摸屏输入.手势输入等),实现对正在开发的应用程序 ...
- verilog 三段式状态机的技巧
三段式代码多,但是有时钟同步,延时少,组合逻辑跟时序逻辑分开并行出错少. (1)同步状态转移 (2)当前状态判断接下来的状态 (3)动作输出 如果程序复杂可以不止三个always .always ...
- 简单的PHP算法题
简单的PHP算法题 目录 1.只根据n值打印n个0 2.根据n值打印一行 0101010101010101010101…… 3.根据n值实现1 00 111 0000 11111…… 4.根据n值实现 ...
- AndroidStudio 添加 AndroidAnnotations
1.添加对apt的依赖 buildscript { repositories { mavenCentral() } dependencies { classpath 'com.neenbedankt. ...
- 【LOJ6041】「雅礼集训 2017 Day7」事情的相似度(用LCT维护SAM的parent树)
点此看题面 大致题意: 给你一个\(01\)串,每次询问前缀编号在一段区间内的两个前缀的最长公共后缀的长度. 离线存储询问 考虑将询问离线,按右端点大小用邻接表存下来(直接排序当然也可以啦). 这样的 ...
- 2018.11.29 Struts2中拦截器的学习&项目的实际运用
struts2官方架构 拦截器的创建 第一种方式 第二种方式 看源码AbstractInterceptor 底层已经帮我们写过这些方法了 第三种方式(推荐) 拦截器API学习 放行 前后处理 不放行, ...
- 【luogu P2731 骑马修栅栏】 题解
题目链接:https://www.luogu.org/problemnew/show/P2731 这个题是欧拉回路的模板题,那么在这里给出一个hierholzer的做法. 对于求欧拉回路的问题,有Fl ...