概述

最近对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. Shell脚本处理JSON数据工具jq

    shell脚本如何方便地处理JSON格式的数据呢,这里介绍一个工具:jq 使用参数介绍:https://stedolan.github.io/jq/manual/ 官方教程简单翻译如下. 1.获取JS ...

  2. linux中open函数使用

    open函数用来打开一个设备,他返回的是一个整型变量,如果这个值等于-1,说明打开文件出现错误,如果为大于0的值 参考格式 if(fd=open("/dev/ttys0",O_RD ...

  3. 如何切换pip的源

    参考别人的帖子https://blog.csdn.net/chenghuikai/article/details/55258957

  4. jQuery获取URL中的参数

    //获取URL地址栏中的参数 function getUrlParam(name) { var reg = new RegExp("(^|&)" + name + &quo ...

  5. eclipse git(版本回退)

    https://www.cnblogs.com/duex/p/6389999.html

  6. Teemo's tree problem

    题目链接 : https://nanti.jisuanke.com/t/29228 There is an apple tree in Teemo's yard. It contains n node ...

  7. Laravel5 (cli)命令行执行脚本及定时任务

    Artisan是Laravel自带的命令行接口名称,它提供了很多有用的命令想要查看所有可用的Artisan命令,可使用list命令查看: 1 php artisan list 每个命令都可以用help ...

  8. MySQL 5.7.9版本sql_mode=only_full_group_by

    这会导致select中只能出现group by后面出现的表的字段. 其实如果使用其他表的字段,聚合函数对无法对应其他表的字段. 建议放在子查询里. 如果想打破这个规则,可以设置sql_mode变量,将 ...

  9. [leetcode]150. Evaluate Reverse Polish Notation逆波兰表示法

    Evaluate the value of an arithmetic expression in Reverse Polish Notation. Valid operators are +, -, ...

  10. Python爬虫项目--爬取链家热门城市新房

    本次实战是利用爬虫爬取链家的新房(声明: 内容仅用于学习交流, 请勿用作商业用途) 环境 win8, python 3.7, pycharm 正文 1. 目标网站分析 通过分析, 找出相关url, 确 ...