揭开HTTP网络协议神秘面纱系列(二)
HTTP报文内的HTTP信息
HTTP协议交互的信息被称为HTTP报文,请求端的HTTP报文叫做请求报文,响应端的叫做响应报文。
HTTP为了提升传输速率,其在传输数据时,按照数据原样进行压缩传输,相应地客户端会接受并解析内容编码后的实体。
在HTTP通信过程中,可以让大容量的数据进行分块分割传输,这方式能够让浏览器逐步显示页面。
HTTP采纳了多部分对象集合,故发送的一份报文主体内可含有多类型实体,不过需要在首部字段里加Content-type,并使用boundary字符串来划分多部分对象集合指明的各类实体,boundary字符串指定的各个实体的起始之前插入”–”标记,而在多部分对象集合对应的字符串的最后插入”–”标记作为结束,示例:
HTTP可以在请求首部那里指定范围来获取指定的内容。
Range:byte=5001-10000,获取从5001到10000这段字节。
Range:byte=5001,获取从5001之后全部的字节。
Range:byte=-3000,5000-7000,获取从0到3000这段字节,获取从5000到7000这段字节
返回结果的HTTP状态码
以下会列出常见的几个HTTP状态码:
200表示正常处理请求,并成功返回正常的数据。
204表示正常处理请求,但没有资源可返回。
206表示正常处理请求,并返回请求那部分的资源数据。
301永久性的给请求资源分配了新的URI,故以后使用该资源需要现在所指的新URI。
302临时性的给请求资源分配了新的URI,这只是通知这次请求使用该新URI。
303明确通知请求采用GET方法且用该资源另一个URI发送。
304表示客户端发送附带条件的请求时(附带条件指的是If-Match,If-Modified-Since等),服务器允许请求访问资源,但未满足条件的请况。
307与302类似,是临时重定向。
400表示请求报文中存在语法错误。
401表示发送的请求需要有通过HTTP认证的认证信息,如果之前已进行过一次请求,则表示用户认证失败。
403表示请求资源的访问被服务器拒绝了(一般都是权限问题)。
404表示服务器上无法找到请求的资源。
500表示服务器端在执行请求时发生了错误。
503表示服务器暂时处于超负荷或正在进行停机维护,现在无法处理请求。
与HTTP协作的Web服务器
HTTP允许一台HTTP服务器搭建多个Web站点,例如在相同的IP地址下,可以用虚拟主机寄存多个不同主机名和域名的Web网站,这样一台服务器可以托管www.tricorder.jp和www.hackrj.jp两个域名。
代理:代理是一种具有转发功能的应用程序,它能接受客户端的请求后转发给服务器,同样能接受服务器返回的响应转发给客户端,代理可以分为下面两类:
缓存代理:代理转发响应时,会预先将资源的副本保存在代理服务器上。
透明代理:转发请求或响应时,不对报文做任何加工。
网关:是转发其他服务器通信数据的服务器,接受从客户端发送来的请求时,它就像自己拥有资源的源服务器一样对请求进行处理,网关能是通信线路上的服务器提供非HTTP协议服务。
隧道:是在相隔甚远的客户端和服务器两者之间进行中转,并保持双方通信连接的应用程序,这过程可以使用SSL等手段进行加密。
缓存一般有两种方式:客户端缓存和代理服务器缓存,客户端一般缓存在本地磁盘中,代理服务器一般缓存在本地服务器存储空间中,不过这两种缓存会根据有效期限,请求要求,服务器该资源更新等情况来判断缓存是否失效,一旦缓存失效,再次请求则会重新拉取源服务器的该资源并对其缓存。
揭开HTTP网络协议神秘面纱系列(二)的更多相关文章
- 揭开HTTP网络协议神秘面纱系列(一)
1.了解Web及网络基础 TCP/IP协议族按层次可以分为下面四层: 应用层:决定了向用户提供应用服务时通信的活动,TCP/IP协议族内预存了各类通用的应用服务,比如:FTP(文件传输协议)和DNS( ...
- 揭开HTTP网络协议神秘面纱系列(三)
HTTP首部字段有四种类型:通用首部字段,请求首部字段,响应首部字段,实体首部字段. 通用首部字段: 首部字段 说明 Cache-Control 控制缓存的行为 Connection 逐跳首部.连接的 ...
- 揭开webRTC媒体服务器的神秘面纱——WebRTC媒体服务器&开源项目介绍
揭开webRTC媒体服务器的神秘面纱--WebRTC媒体服务器&开源项目介绍 WebRTC生态系统是非常庞大的.当我第一次尝试理解WebRTC时,网络资源之多让人难以置信.本文针对webRTC ...
- 揭开A*算法的神秘面纱
揭开A*算法的神秘面纱 一.总结 一句话总结:f(n)=g(n)+h(n) 这个算法有点像BFS的优化算法. g(n)为起点到当前方格的距离,这个是已知的. h(n)为当前方格到终点的距离,这个简单点 ...
- 【转】再讲IQueryable<T>,揭开表达式树的神秘面纱
[转]再讲IQueryable<T>,揭开表达式树的神秘面纱 接上篇<先说IEnumerable,我们每天用的foreach你真的懂它吗?> 最近园子里定制自己的orm那是一个 ...
- Linux 网络子系统之网络协议接口层(二)
这一篇主要围绕网络协议接口层的发送函数的解析 int dev_queue_xmit(struct sk_buff *skb) 函数解析 声明: /* include/linux/netdevice.h ...
- 【NLP】揭秘马尔可夫模型神秘面纱系列文章(二)
马尔可夫模型与隐马尔可夫模型 作者:白宁超 2016年7月11日15:31:11 摘要:最早接触马尔可夫模型的定义源于吴军先生<数学之美>一书,起初觉得深奥难懂且无什么用场.直到学习自然语 ...
- 1.揭开消息中间件RabbitMQ的神秘面纱
当你看到这篇博文的时候,相信你至少已经知道RabbitMQ 是一个非常优秀的消息中间件,它使用专门处理高并发的Erlang 语言编写而成的消息中间件产品. 当然如果你不知道也没关系,读完本篇你将Get ...
- 【NLP】揭秘马尔可夫模型神秘面纱系列文章(一)
初识马尔可夫和马尔可夫链 作者:白宁超 2016年7月10日20:34:20 摘要:最早接触马尔可夫模型的定义源于吴军先生<数学之美>一书,起初觉得深奥难懂且无什么用场.直到学习自然语言处 ...
随机推荐
- Centos 7 通过挂载系统光盘搭建本地yum仓库的方法
实验环境:CentOS 7 1:在media文件下创建一个目录 #创建一个www文件 cd /media/www 2: 挂载光盘,将光盘挂载在刚才创建的www文件下 mount /dev/cdrom ...
- [Tex学习笔记]开方
$$\sqrt[n]{\frac{a}{b}}$$ $$\sqrt[\uproot{7}n]{\frac{a}{b}}$$
- Sonar升级遇到的那些事儿
目录 背景 如何升级 如何回滚 问题解决 参考 背景 目前我们用SonarQube版本是4.0,这次准备升级到最新版本5.1, 以便支持以后的JavaScript的项目. 如何升级 我们可以直接跨越版 ...
- [DFNews] What's coming in EnCase 7.08?
论版本变化速度,AD绝对首屈一指,从FTK 4到现在的FTK 5也不过两年多时间,EnCase近期(初步预计8月初)将推出V7的新版本7.08,下面是一些新功能: Evidence Processor ...
- c/c++运算顺序问题
发现没弄清楚这个问题的人很多,连我们c++老师都没弄清楚,转载一篇文章,以及C++ Primer原文. 裘宗燕:C/C++ 语言中的表达式求值 经常可以在一些讨论组里看到下面的提问:“谁知道下面C语句 ...
- selenium2 WebDriver 在asp.net项目中的应用
selenium2 WebDriver是一款跨平台的 自动化测试工具,它可以操纵浏览器,模拟用户行为,非常方便用户进行自动化测试. .net项目使用它,首先要通过 Visual Studio 的 nu ...
- python __init__.py用途
转自http://www.cnpythoner.com/post/2.html Python中的Module是比较重要的概念.常见的情况是,事先写好一个.py文 件,在另一个文件中需要import时, ...
- (译)详解javascript立即执行函数表达式(IIFE)
写在前面 这是一篇译文,原文:Immediately-Invoked Function Expression (IIFE) 原文是一篇很经典的讲解IIFE的文章,很适合收藏.本文虽然是译文,但是直译的 ...
- 关于对 maximio平台的五个常用类的初步理解及总结
AppBean:绑定应用的默认Bean类,控制主对象集/单个对象,和ui关联的类 继承:DataBean DataBean:任何对象集/单个对象,在ui端处理类. 1.在对象层:写一个Fld类,调用构 ...
- C#winform如何最小化主窗口
1.如果不想让程序在任务栏中显示,请把窗体的属性ShowInTaskbar设置为false;2.如果想让程序启动时就最小化,请设置窗体的属性WindowState设置为Minimized.(Minim ...