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://blog.csdn.net/xuguoli_beyondboy/article/details/48038921

HTTP网络协议(二)的更多相关文章

  1. 基础笔记(三):网络协议之Tcp、Http

    目录 一.网络协议 二.TCP(Transmission Control Protocol,传输控制协议) TCP头格式 TCP协议中的三次握手和四次挥手 TCP报文抓取工具 三.HTTP(Hyper ...

  2. ****** 四十二 ******、软设笔记【网络基础】-IPv6协议、常用的网络协议

    一.IPv6协议 IPv6协议,全称"互联网协议第6版",即下一代的网际协议. 相对于IPv4来说,IPv6协议主要改进: *扩展的地址.IPv6地址长度为128位. *IPv6使 ...

  3. 网络基础二 tcp/ip协议簇 端口 三次握手 四次挥手 11种状态集

    第1章 概念介绍 1.1 VLAN 1.1.1 什么是VLAN VLAN(Virtual LAN),翻译成中文是“虚拟局域网”.LAN可以是由少数几台家用计算机构成的网络,也可以是数以百计的计算机构成 ...

  4. Wireshark使用介绍(二):应用Wireshark观察基本网络协议

    TCP: TCP/IP通过三次握手建立一个连接.这一过程中的三种报文是:SYN,SYN/ACK,ACK. 第一步是找到PC发送到网络服务器的第一个SYN报文,这标识了TCP三次握手的开始. 如果你找不 ...

  5. Linux 网络子系统之网络协议接口层(二)

    这一篇主要围绕网络协议接口层的发送函数的解析 int dev_queue_xmit(struct sk_buff *skb) 函数解析 声明: /* include/linux/netdevice.h ...

  6. PYTHON黑帽编程1.5 使用WIRESHARK练习网络协议分析

    Python黑帽编程1.5  使用Wireshark练习网络协议分析 1.5.0.1  本系列教程说明 本系列教程,采用的大纲母本为<Understanding Network Hacks At ...

  7. C#网络编程二:Socket编程

    一:什么是SOCKET socket的英文原义是"孔"或"插座".作为进程通信机制,取后一种意思.通常也称作"套接字",用于描述IP地址和端 ...

  8. linux网络协议

    网络协议 本章节主要介绍linxu网络模型.以及常用的网络协议分析以太网协议.IP协议.TCP协议.UDP协议 一.网络模型 TCP/IP分层模型的四个协议层分别完成以下的功能: 第一层 网络接口层 ...

  9. HTTP协议 (二) 基本认证

    HTTP协议 (二) 基本认证 http协议是无状态的, 浏览器和web服务器之间可以通过cookie来身份识别. 桌面应用程序(比如新浪桌面客户端, skydrive客户端)跟Web服务器之间是如何 ...

随机推荐

  1. ItelliJ IDEA开发工具使用—创建一个web项目(转)

    最近想用IDEA编辑器开发,但是平时都用MyEclipse和eclipse习惯了,突然间用IDEA到处碰壁的感觉.在不断的摸索之后终于苦尽甘来,学会了基本的web程序如何创建以及运行了.期间在网上找了 ...

  2. 洛谷 P2355 团体操队形

    P2355 团体操队形 题目背景 X中学要团体操比赛了哦.队形该怎样排呢? 题目描述 有n(n<=100000)个团体操队员编号分别为1~n,参加运动会开幕式的团体操表演.其基本队形(分连续队形 ...

  3. div设置了居中和宽度,但是显示时宽度占100%

    <div id="bigDiv" align="center"> <div id="bottom" style=" ...

  4. 从零使用qemu模拟器搭建arm执行环境

    为什么会有这篇文章 早在2011年的时候,跟当时同事一起讨论,做Linux系统开发正处于整个Linux开发中间层,没有上层的C/C++业务和数据库的开发经验.也没有底层的内核和驱动开发经验,究竟路该怎 ...

  5. tomcat 分别在window 和 Linux上配置SSL-安全问题

    公司项目收尾后.通过压力測试后的安全測试.安全測试后中,对于网络传输中数据加密问题存在安全隐患. 须要配置SSL. 简介下SSL协议:SSL或者Secure Socket Layer,是一种同意web ...

  6. tomcat指定配置文件路径方法

    1.在catalina.sh 中设置JAVA_OPTS,例如: JAVA_OPTS='-server -Xms1024m -Xmx1024m -XX:NewSize=128m -XX:MaxPermS ...

  7. 【IOS学习】1.第一个IOS程序

    1.执行原理 a.首先执行main函数 调用UIApplicationMain方法 return UIApplicationMain(argc, argv, nil, NSStringFromClas ...

  8. js10---call方法总结

    <html> <body> <script type="text/javascript"> function Obj(x, y){ this.x ...

  9. 洛谷P1852 奇怪的字符串

    题目描述 输入两个01串,输出它们的最长公共子序列的长度 输入输出格式 输入格式: 一行,两个01串 输出格式: 最长公共子序列的长度 输入输出样例 输入样例#1: 复制 01010101010 00 ...

  10. go 语言学习笔记 0001 --> iota

    go语言中预置了一个预定义常量 iota 这个东西有个很奇怪的特性,会根据 const 关键字改变值 默认的,iota在const出现的时候会初始化为0,而后不断递加1,直到出现第二个const关键字 ...