概述

最近对http很感兴趣,于是开始看《http权威指南》。别人都说这本书有点老了,而且内容太多。我个人觉得这本书写的太好了,非常长知识,让你知道关于http的很多概念,不仅告诉你怎么做,还告诉你为什么这么做。于是我把学到的知识点记录下来,供以后开发时参考,相信对其他人也有用。

http概述

1.Web服务器是Web资源的宿主,但是资源并不一定非得是静态文件,资源还可以是根据需要生成内容的软件程序。总之,所有类型的内容来源都是资源,电子表格文档是一种资源,Web网关是一种资源,搜索引擎也还是一种资源。

2.MIME type就是媒体类型,用来标记多媒体内容,比如:html格式的文本文档由text/html类型来标记;jpeg图片用image/jpeg来标记等等。

3.URI = URL + URN。url是用路径作为标识的统一资源标识符(URI)。URN是统一资源名,它与位置无关,所以如果url路径上的资源不存在了,url会失效,但是URN不会

4.一个Web页面通常并不是单个资源,而是一组资源的集合,它要为每个嵌入式资源使用一个单独的http事务。

5.http报文(message)包括这三个部分:

  1. 起始行,在请求报文里面用来说明要做些什么;在响应报文里面说明发生了什么。
  2. 首部字段;以键值对的形式,名字和值用冒号来分隔,互相之间以一个空行结束。
  3. 主体。

6.http报文是通过TCP协议从一个地方搬到另一个地方去的。TCP提供了:

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

7.从上往下依次是:应用层(http),传输层(TCP),网络层(IP),数据链路层(网络接口),物理层(物理硬件)。所以真正在网络中传输的其实就是http,TCP和IP

8.http的默认端口号是80;https的默认端口号是443

9.HTTP-NG又名HTTP/2.0。

10.Web的结构组件:

  • 代理。代理位于客户端和服务端之间,接受所有客户端的http请求,并将这些请求转发给服务器(可能会对请求进行修改之后转发)。
  • 缓存。Web缓存(web cache)或者代理缓存(proxy cache)是一种特殊的http代理服务器,可以将经过代理传送的常用文档复制保存起来,下一个请求同一个文档的客户端就可以享受缓存的私有副本所提供的服务了。
  • 网关。网关是一种特殊的服务器。它作为其他服务器的中间实体使用,通常用于将http流量转换成其他的协议,比如ftp协议。客户端可能并不知道自己正在与一个网关进行通信。
  • 隧道。隧道是建立起来后,就会在两条连接之间对原始数据进行盲转发的http应用程序,http隧道通常用来在一条或多条http连接上转发非http数据,转发时不会窥探数据。常见用途是利用隧道转发SSL流量,这样SSL流量就可以穿过只允许http流量通过的防火墙了。
  • Agent代理。用户Agent代理简称Agent代理,是代表用户发起http请求的客户端程序。所有发布web请求的应用程序都是http Agent代理。比如:web浏览器。

《http权威指南》读书笔记1的更多相关文章

  1. 《Linux/Unix系统编程手册》读书笔记 目录

    <Linux/Unix系统编程手册>读书笔记1  (创建于4月3日,最后更新4月7日) <Linux/Unix系统编程手册>读书笔记2  (创建于4月9日,最后更新4月10日) ...

  2. 《Linux/Unix系统编程手册》读书笔记9(文件属性)

    <Linux/Unix系统编程手册>读书笔记 目录 在Linux里,万物皆文件.所以文件系统在Linux系统占有重要的地位.本文主要介绍的是文件的属性,只是稍微提及一下文件系统,日后如果有 ...

  3. 《Linux/Unix系统编程手册》读书笔记8 (文件I/O缓冲)

    <Linux/Unix系统编程手册>读书笔记 目录 第13章 这章主要将了关于文件I/O的缓冲. 系统I/O调用(即内核)和C语言标准库I/O函数(即stdio函数)在对磁盘进行操作的时候 ...

  4. 《Linux/Unix系统编程手册》读书笔记7 (/proc文件的简介和运用)

    <Linux/Unix系统编程手册>读书笔记 目录 第11章 这章主要讲了关于Linux和UNIX的系统资源的限制. 关于限制都存在一个最小值,这些最小值为<limits.h> ...

  5. 《Linux/Unix系统编程手册》读书笔记6

    <Linux/Unix系统编程手册>读书笔记 目录 第9章 这章主要讲了一堆关于进程的ID.实际用户(组)ID.有效用户(组)ID.保存设置用户(组)ID.文件系统用户(组)ID.和辅助组 ...

  6. 《Linux/Unix系统编程手册》读书笔记5

    <Linux/Unix系统编程手册>读书笔记 目录 第8章 本章讲了用户和组,还有记录用户的密码文件/etc/passwd,shadow密码文件/etc/shadow还有组文件/etc/g ...

  7. 《Linux/Unix系统编程手册》读书笔记4

    <Linux/Unix系统编程手册>读书笔记 目录 第7章: 内存分配 通过增加堆的大小分配内存,通过提升program break位置的高度来分配内存. 基本学过C语言的都用过mallo ...

  8. 《Linux/Unix系统编程手册》读书笔记3

    <Linux/Unix系统编程手册>读书笔记 目录 第6章 这章讲进程.虚拟内存和环境变量等. 进程是一个可执行程序的实例.一个程序可以创建很多进程. 进程是由内核定义的抽象实体,内核为此 ...

  9. 《Linux/Unix系统编程手册》读书笔记1

    <Linux/Unix系统编程手册>读书笔记 目录 最近这一个月在看<Linux/Unix系统编程手册>,在学习关于Linux的系统编程.之前学习Linux的时候就打算写关于L ...

  10. 《Linux/Unix系统编程手册》读书笔记2

    <Linux/Unix系统编程手册>读书笔记 目录 第5章: 主要介绍了文件I/O更深入的一些内容. 原子操作,将一个系统调用所要完成的所有动作作为一个不可中断的操作,一次性执行:这样可以 ...

随机推荐

  1. 【原】The Linux Command Line - Processes

    ps - report a snapshot of current processes top - display tasks job - list active jobs bg - place a ...

  2. 吴裕雄 python深度学习与实践(11)

    import numpy as np from matplotlib import pyplot as plt A = np.array([[5],[4]]) C = np.array([[4],[6 ...

  3. C语言递归函数讲解

    递归函数是什么? 是函数.................... 你可以把它理解成是for循环与死循环的结合的函数.简单的说:递归函数是有条件终止的死循环函数: 死循环函数这里是指在函数体中调用自身: ...

  4. Mysql 单表查询 子查询 关联查询

    数据准备: ## 学院表create table department( d_id int primary key auto_increment, d_name varchar(20) not nul ...

  5. Less入门及知识点整理

    LESS « 一种动态样式语言 文档链接:http://www.bootcss.com/p/lesscss/ 百科 Less 是一门 CSS 预处理语言,它扩充了 CSS 语言,增加了诸如变量.混合( ...

  6. 《Java程序设计》第二周学习总结(一)

    教材学习内容总结 标识符.关键字 基本数据类型 类型转换运算 输入.输出数据 数组 教材学习中的问题和解决过程 问题1:在创建vim并编写完成后出现以下情况 问题1解决方案:打开虚拟机的文件目录,发现 ...

  7. service redis start

    注意:需在redis-server所在目录执行

  8. 必须知道的Spring Boot中的一些Controller注解

    这篇文章是抄其他人的,原址:https://cloud.tencent.com/developer/article/1082720 本文旨在向你介绍在Spring Boot中controller中最基 ...

  9. Powerdesigner数据库建模的浅谈

    1.建立新模型 2.创建物理数据模型(可以选择数据库类型及版本) 3.建立表 左键点击Table这个图标,鼠标移动到空白工作区,再左键,一个表的视图就出来了,(连续左键,会出现多个表的视图),右键退出 ...

  10. IPv6下网络编程socket, TCP和UDP例子,以及兼容IPV4和IPV6的类

    一.TCP socket ipv6与ipv4的区别 服务器端源代码如下: #include <stdio.h> #include <stdlib.h> #include < ...