HTTP权威指南:第一章

HTTP概述

HTTP是超文本传输协议,以此为基础进行Web流量传输。
其内容大致包括:

  • 资源

  • 事务

  • 报文

  • 连接

  • Web结构组件

由于只是对第一章的基础内容的记录,并不会过多的深入。同时也可能有错误,如果有错的话,请联系我,我会第一时间发个1元钱的红包(穷学生一个,再多就困难了)。

流量传输过程

一次Web流量传输,是在Web客户端和Web服务器之间完成的。客户端向服务器发送HTTP请求,服务器对此做出HTTP响应。响应如果成功,就会将对象、对象类型、对象长度以及其他信息放到HTTP响应中,发送给客户端。

资源与媒体类型

Web资源存放在Web服务器中,是Web内容的源头。其大致可以分为两种:

  • 静态文件:包含任意内容,比如文本文件、HTML文件等等

  • 动态内容:根据需要生成内容的软件程序,其可以是根据身份、所请求的信息产生的内容。

媒体类型则是通过Web传输的对象的数据格式标签,在请求头里面,以Content-type:image/jpeg的形式存储,名为MIME类型。每个HTTP对象数据都会附加一个对象数据类型,由Web客户端查看,并以此决定处理的方式。
MIME类型是一种文本标记,表示一种主要的对象类型和一个特定的子类型,由反斜杠分开。常见的有:

  • HTML格式的文档:text/html

  • ASCII格式的文档:text/plain

  • JPEG格式的图片:image/jpeg

  • GIF格式的图片:image/gif

  • QuickTime电影:video/quicktime

  • PPT演示文档:application/vnd.ms-powerpoint

Web服务器资源的名字为URI(Uniform Resource Idenfier),即统一资源标识符。URI又分为URL和URN两种类型。

  1. URL(Uniform Resource Location)统一资源定位符
    用来描述服务器上的特定子牙un的位置及其访问方式,如下网址:http://news.xinhuanet.com/photo/2016-01/20/128646070_14532435238961n.jpeg即可分为三部分:

    • http:/。称为方案,说明访问资源使用的协议类型。

    • news.xinhuanet.com。是服务器的因特网地址。

    • photo/2016-01/20/128646070_14532435238961n.jpeg。是服务器上某个资源存储的位置。

  2. URN(Uniform Resource Name)统一资源名
    用来指定特定内容的的唯一名称,与位置无关。该形式有两个好处:

    • 可以四处移动资源

    • 允许通过多种协议访问同一资源。

事务

HTTP事务是由一个请求命令响应结果构成的,通过格式化数据块HTTP报文(HTTP Message)进行。不同的请求命令,被称为方法,由HTTP请求报文所包含。常见的HTTP方法有:

HTTP方法描述
GET从服务器项客户端发送命名资源
PUT将来自客户端的数据存储到一个命名的服务器资源中
DELETE从服务器中删除命名资源
POST将客户端的数据发送到一个服务器网关应用程序
HEAD仅发送命名资源中的HTTP响应头

而HTTP响应报文则会返回一个状态码,由三位数字构成,告知客户端请求的响应状态。常见的有以下几种:

状态码描述
200OK。文档正确返回
302重定向,到其他地方获取资源
404没找到。无法找到资源

HTTP的状态码之外,还有一个原因短语文本,但是处理的时候使用的是数字码。
注意!!!Web页面中可以包含多个HTTP对象,所以实际上可以发布一系列HTTP事务来实现该要求。

报文

HTTP报文是纯文本,由起始行,头部和可选的主体构成。

  • 起始行
    报文的第一行。请求报文中说明命令,而响应报文包含状态码。

  • 头部字段
    零个或者多个头部字段包含其中,字段由一个名字和值组成,用冒号:隔开,以一个空行结束。

  • 主体
    包含所有类型的数据。请求主题中包含发送给服务器的数据;响应主体包含返回客户端的数据。其可以包含任意二进制数据

可以通过在浏览器中查看信息,来获取一个简单的报文,并对齐进行上述分析。

连接

生成报文以后,需要通过一个TCP(Transmission Control Protocol)传输控制协议,连接并发送到各个地方。其中,因特网传输协议是指TCP/IP,提供以下内容:

  • 无差错的数据传输

  • 按顺序传输

  • 未分段的数据流

要发送报文,这需要在收发两端使用IP(Internet Protocol)网际协议建立一条TCP/IP连接。可以通过URI来获得资源的地址,其中,域名,或者说主机名可以通过DNS(Domain Name Server)域名服务来进行转换,默认端口为80,可以指定端口。

Web结构组件

Web应用程序主要是Web浏览器和Web服务器,而其他重要的程序有:

  • 代理:位于客户端和服务器之间的中间实体

  • 缓存:在客户端附近保存常用的页面副本

  • 网关:连接其他应用程序的服务器

  • 隧道:对HTTP通信报文进行盲转发的特殊代理

  • Agent代理:发起自动HTTP请求的Web客户端

代理

对服务器和客户端之间的请求进行转发和访问。同行用于对请求和响应进行过滤,如绿坝。所以,可以通过换代理来科学上网

缓存

Web缓存或者代理缓存是一种特殊的HTTP代理服务器,可以存储常用文档,从而在下次请求同一个文档的时候享受私有副本提供的服务。

网关

网关是服务器之间的中间实体,用于将HTTP流量转换为其他协议。其从服务器中获取资源,而后于客户端进行通信。

隧道

是在两条连接之间对原始数据进行盲转发的应用程序,不会窥探数据。
常用于通过HTTP连接承载加密的安全套接字层(SSL, Secure Sockets Layer)流量,使得SSL流量穿过只允许Web流量通过的防火墙。

Agent代理

代表用户发起HTTP请求的应用程序,如浏览器、爬虫和网页机器人

协议版本

HTTP协议现在有以下几个版本:

  • HTTP/0.9
    是HTTP的1991原型版本,有很多严重的设计缺陷,只应用于老客户端的交互,只支持GET方法。初中是获取简单的HTTP对象,很快被HTTP/1.0取代。

  • HTTP/1.0
    第一个得到广泛使用的HTTP版本。添加了版本号、各种HTTP头和一些额外的方法还有多媒体处理。规范没有得到良好的说明,集合一系列最佳的实践。

  • HTTP/1.0+
    在90年代,各个浏览器为了适应需求而自定义添加的特性,比如keep-alive连接、虚拟主机支持和代理连接支持等,是非官方的事实标准。

  • HTTP/1.1
    校正HTTP设计中的结构性缺陷而引入的性能优化措施的集合,并对当时(90年代)正在发展的Web应用进行支持和部署方式进行支持。在当前被广泛使用。

  • HTTP-NG(已破产)
    HTTP/1.1后继结构的原型建议,但是终止于1998年,后来没有用此建议取代前者的的推广计划。不过后来推出了HTTP/2协议(草案),由于成书时间,没有录入。

HTTPS是HTTP协议加上SSL协议,属于加密文本传输协议,与本文关系不大(因为是初学),暂时略过不提。

HTTP权威指南至少第一章比较亲民,就是不知道后面如何,为了学习(zhuangbi)我也是拼了!

    原文作者:yibohu1899
    原文地址: https://segmentfault.com/a/1190000004341687
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞