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. .NET Core和Swagger 生成 Api 文档转

    阅读目录 1.引用 2.打开startup.cs文件 3.设置XML注释 4.运行结果 5.主要问题的解决办法 6.可以自定义UI 前言 最近写了好多Web api, 老大说太乱了,要整理一下,使用S ...

  2. Angular2+实现右键菜单的重定义--contextmenu

    在做需求时用到video这个html5的新增标签,然后公司要求把video的右键屏蔽了去,我在网上找了很久没找到完整的方法来实现这个功能,只能自己摸索着来. 不说废话,先上干货 0.0 video.c ...

  3. MVP之高级MVP架构封装

    MVP之高级MVP架构封装 No MVP: 我们一般会这样写: public class MainActivity extends AppCompatActivity { private EditTe ...

  4. bzoj1668

    题解: 简单dp 注意最后往后面多取几个 求个最小值 代码: #include<bits/stdc++.h> using namespace std; ; int n,m,f[N],a[N ...

  5. 测试新手之linux问题整理

    测试职场的新人,难免都会涉及到一些linux系统的命令操作,搭建测试环境也好,查看日志也罢,以下给大家整理初学者可能会碰到的问题,希望对大家有所帮助. 1.Linux中输入基本操作命令例如ls,遇到报 ...

  6. Android Stdio 无法打开模拟器

    安装好了各种版本的AVD,有个版本4.1,API版本16,219MB的模拟器是可以打开的,但是基本不能用,只能看到首界面,跳转什么的完全不行. 除此之外其它高版本的模拟器都不能用(API版本>2 ...

  7. DDD 学习记录

    1.领域模型建立    set 最好是受保护 2.CQRS   建议   查询可以直接从数据层获取: 3.领域服务 包含 不合适放在其他实体里面的方法,包含比较多实体操作的方法: 4.实体 里面的方法 ...

  8. java项目 在 linux ubuntu 上的部署相关

    --------------------JDK在linux ubuntu上的安装------------------------------------------------------------ ...

  9. vue安装遇到vue不是内部变量

    配置path系统变量 打开我的电脑-->右键属性-->高级系统设置-->环境变量-->Path-->添加获得npm的位置(搜索vue.cmd 可以找到该位置) 全局安装位 ...

  10. 极速在mac中安装python开发环境

    mac开发环境的安装: brew: 包管理工具{ 安装:ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/in ...