1、因特网上有数千种不同的数据类型,HTTP仔细地给每种要通过Web传输的对象都搭上了名为MIME类型的数据格式标签。WEB服务器会为所有HTTP对象数据附加一个MIME类型。当Web浏览器从服务器中取回一个对象时,会去查看相关的MIME类型,看看它是否知道应该如何处理这个对象。

2、MIME类型是一种文本标记,表示一种主要的对象类型和一个特定的子类型,中间由一条斜杠分隔/

    常用的MIME类型:

    •   text/html HTML格式的文本文档
    •   text/plain 普通的ASCII文本文档
    •   image/jpeg JPEG格式的图片  
    •   image/gif GIF格式的图片

    (MIME类型有很多种,详细Google或在附录找寻)

3、URI  URL URN

  URI:服务器资源名被统称为统一资源标识符,URI就像因特网上的邮政地址一样,在世界范围内唯一标识并定位信息资源;URI有两种形式,分别成为URL和URN。

  URL: 统一资源定位符,资源标识符最常见的形式,可以明确说明如何从一个精确、固定的位置获取资源。

    大部分URL都遵循一种标准格式,包含三个部分:

    1.  方案:说明了访问资源所使用的协议类型,如:http:// https:// 等
    2.  服务器的因特网地址,如:www.google.com
    3.  其余部分:指定Web服务器上的某个资源,如:/specials/saw-blade.gif

    现在,几乎所有的URI都是URL。

  URN:统一资源名,URN是作为特定内容的唯一名称使用,和资源所在地无关;URN目前尚处于试验阶段,还没有大范围使用。

4、一个HTTP事务由一条由客户端发往服务器的请求命令和一个从服务器发回客户端的响应结果组成。这种通讯通过名为HTTP报文的格式化数据块来进行。

5、HTTP方法:HTTP支持几种不同的请求命令,每个HTTP请求报文都包含一个方法。常见的HTTP方法:GET、POST、PUT、DELETE、HEAD等。

6、状态码:每条HTTP响应报文都会携带一个状态码,用于告知客户端该如何响应此报文,常用的如:200、302、404等。

7、报文:

    HTTP报文由一行一行的简单字符串组成,HTTP报文都是纯文本,其主要包括三部分:

      • 起始行:报文的第一行为起始行,在请求报文中用来说明需要做些什么;在响应报文中说明出现了什么情况。
      • 首部字段:起始行后有零个或多个首部字段。每个首部字段为一个key-value对,格式为key:value,首部以一个空行结束。
      • 主体:首部结束空行之后,就是可选的报文主体,其中包含了所有类型的数据。请求报文中包括要发送给Web服务器的数据;响应报文中则装载了需要返回给客户端的数据。与起始行和首部字段不同的是,起始行和首部字段都是文本格式和结构化的,而主体中则可以包括任意的二进制数据(如:图片,视频等)。

8、连接:

    HTTP是一个应用层协议,HTTP无需担心网络通信的具体细节,它把联网的细节都交给了通用可靠的TCP/IP传输协议。

    TCP/IP: TCP/IP是全世界的计算机和网络设备常用的层次化分组交换网络协议集。TCP/IP隐藏了各种网络和硬件的特点和弱点,使各种类型的计算机和网络都能进行可靠的通信。TCP提供了:

      • 无差错的数据传输;
      • 按序传输(数据总是会按照发送的顺序到达)
      • 未分段的数据流(可以在任意时间以任意尺寸将数据发送出去)

    HTTP连接流程:HTTP客户端向服务器发送报文之前,需要用IP地址和端口号在客户端和服务器端建立一条TCP/IP连接。通过URL和DNS(域名服务)可以获取到IP地址和端口号,如果没有端口号,默认的端口号为80。

    连接步骤:

    1. 浏览器从URL中解析出主机名;
    2. 浏览器将服务器主机名转换成IP地址;
    3. 浏览器将端口号从URL中解析出来;
    4. 浏览器建立一条与服务器的TCP连接;
    5. 浏览器向服务器发送一条HTTP请求报文;
    6. 服务器向浏览器发送一条HTTP响应报文;
    7. 关闭连接,浏览器显示文档;  

9、Web重要结构组件:

  1)代理:代理位于客户端和服务器之间,接收所有客户端的HTTP请求,并将这些请求转发给服务器(可能会对请求进行修改后转发),代表用户访问浏览器。通常会将代理作为转发所有Web流量的可信任中间节点使用,或者对请求和响应进行过滤。

  2)缓存:Web缓存或代理缓存是一种特殊的HTTP代理服务器,可以将经过代理传送的常用文档复制保存起来,下一请求同一个文档的客户端将得到缓存的副本;Http定义了很多功能,使得缓存更加高效,并规范了文档的新鲜度和缓存内容的隐私性。

  3)网关:网关是一种特殊的服务器,作为其他服务器的中间实体使用。通常用于将HTTP流量转换成其他的协议,网关接受请求时就好像自己时资源的源端服务器,客户端可能并不知道自己正在与一个网关通信。例如:一个HTTP/FTP网关会通过HTTP请求接受对FTP URI的请求,但会转换成FTP协议来获取文档,得到的文档被封装成一条HTTP报文,发送给客户端。

  4)隧道:隧道是建立之后,会在两条连接之间对原始数据进行盲转发的HTTP应用程序,通常用于在一条或多条HTTP连接上转发非HTTP数据,转发时不会窥探数据。常见用途是通过HTTP连接承载加密的安全套接字层(即SSL)流量。

  5)Agent代理,代表用户发起HTTP请求的客户端程序,所有可以发送Web请求的应用程序都是HTTP Agent代理,如:浏览器、爬虫等。

总结:

  通过对《HTTP权威指南》第一章的浏览学习,大致了解了一下HTTP的历史、报文格式、连接细节、连接流程和部分的网络术语,算是对HTTP的入门吧。

《HTTP权威指南》读书笔记(一)的更多相关文章

  1. 《html5 从入门到精通》读书笔记(一)

    今天看了<html5 从入门到精通>这本书,感觉阅读下来很舒心,不像阅读其他书籍很揪心.html增加的知识点,我觉得非常有价值,看完几章记录了一些内容,不但能巩固,也为下次遗忘知识点做好准 ...

  2. HTML5从入门到精通(明日科技) 中文pdf扫描版

    HTML5从入门到精通(明日科技) 中文pdf扫描版

  3. HTML5从入门到精通(千锋教育)免费电子版+PDF下载

    本书是HTML5初学者极好的入门教材之一,内容通俗易懂.由浅入深.循序渐进.本书内容覆盖全面.讲解详细,其中包括标签语义化.标签使用规范.选择器类型.盒模型.标签分类.样式重置.CSS优化.Photo ...

  4. Unity Shader入门精要读书笔记(一)序章

    本系列的博文是笔者读<Unity Shader入门精要>的读书笔记,这本书的章节框架是: 第一章:着手准备. 第二章:GPU流水线. 第三章:Shader基本语法. 第四章:Shader数 ...

  5. Oracle从入门到精通----学习笔记

    书名:<Oracle从入门到精通:视频实战版>秦靖.刘存勇等编著 第4章 SQL基础 1.SQL语言分类 数据定义语言 --- DDL,Data Definition Language 数 ...

  6. MySQL数据库应用 从入门到精通 学习笔记

    以下内容是学习<MySQL数据库应用 从入门到精通>过程中总结的一些内容提要,供以后自己复现使用. 一:数据库查看所有数据库: SHOW DATABASES创建数据库: CREATE DA ...

  7. Unity Shader入门精要读书笔记(二)UnityShader概述

    第三章<UnityShader概述>的读书笔记: 1.Unity Shader模板提供了几种选择: 标准光照模型(新添加的基于物理的渲染方法) 不含光照的基本的顶点.片元着色器 屏幕后处理 ...

  8. 《html5 从入门到精通》读书笔记(二)

    接着上面继续记录笔记,这次要记的知识点比较多...记录下我认为比较重要的东西. 一.表单属性 1.autocomplete属性 该属性规定form或input域应该拥有自动完成功能. <form ...

  9. 《html5 从入门到精通》读书笔记(三)

    二.标签详解 标签 描述 4 5 <form> 定义表单. 4 5 <h1> to <h6> 定义标题1到标题6. 4 5 <head> 定义关于文档的 ...

  10. 《HTML5 CANVAS基础教程》读书笔记

    一.HTML5简介 1.HTML5新特性 1)结构元素:section,header,hgroup,footer,nav,article,aside, 2)内容元素:figure,figcaption ...

随机推荐

  1. java FileUtil工具类

    网上的版本太多,整合了一下适合自己用的工具类,包括读取.保存.拷贝文件等. public class FileUtil { /** * 私有构造方法,防止类的实例化,因为工具类不需要实例化. */ p ...

  2. sql排列组合

    一个表中4条记录,如何查询所有可能组成的结果. 例如: 1  2  3  4 四条记录,最后组成(12),(13),(14),(23),(24),(34) 最后sql如下: SELECT a.name ...

  3. Django REST framework---请求和响应

    Django REST framework---请求和响应 [Request对象] 概念: 平时我们在写Django的视图函数的时候,都会带上一个request参数,这样就能处理平时搭建网站时,浏览器 ...

  4. 为django项目配置celery的后台启动

    为root用户启动celery创建的脚本,该脚本的拥有者与使用者都必须是root .使用方法为 /etc/init.d/celeryd [start]|[stop]|[kill] 需增加两个文件 /e ...

  5. centos 7添加硬盘及LVM扩容

    一堆概念 分区工具 fdisk:支持MBR,对GPT支持的不好 parted:支持GPT partprobe(centos 5/6).partx(centos 7)通知内核强制重读磁盘分区表 分区表 ...

  6. 关于react的分页

    基于antdesign分页:表格属性pagination <Table pagination={{ total: this.state.totalNum, showSizeChanger: tr ...

  7. 简述我理解的C#

    第一章:开发入门 一.基础知识    1.计算机语言发展进程:计算机语言大致经过了机器语言.汇编语言.高级语言三个阶段的发展历程. 汇编语言:使用助记符来替代机器指令机器语言这种反人类的设计,阻碍了软 ...

  8. 剖析一个用C++写的行情交易系统

    最近hen ci hen ci用C++写完了一整套证券行情系统,但是不是服务沪深交易所的,是给文交所用的.整个系统涵盖了从DBF文件解析开始到客户端展现这一整条逻辑.想来一年多没有更新博客了,所以趁这 ...

  9. web APIS

    WEB API系列:   很多人都很迷惑,既然有了WCF为什么还要有WEB API?WEB API会不会取代WCF? 就我的看法,WCF提供的是一种RPC实现的集合,WCF的设计更多地考虑了SOA的场 ...

  10. MSBuild 命令参数

    Build a Visual Studio project or solution using MSBuild Command Line Arguments  常用命令行参数 详解: MSBuild ...