【图解HTTP】笔记摘要
第1章 了解Web及网络基础
根据Web浏览器(Web客户端)地址栏中指定的URL,Web浏览器从Web服务器端获取文件资源(resource)等信息,从而显示出Web页面。
CERN(欧洲核子研究组织)的蒂姆.伯纳斯-李(Tim Berners-Lee)博士提出了一种能让远隔两地的研究者们共享知识的设想。
最初设想的基本理念:借助多文档之间相互关联形成的超文本(HyperText),连城可相互参阅的WWW(World Wide Web,万维网)。现在已经提出了3项WWW构建技术,分别是:
- 把SGML作为页面的文本标记语言的HTML;
- 作为文档传递协议的HTTP;
- 指定文档所在地址的URL.
当年HTTP协议的出现只要是为了解决文本传输的难题。由于协议本身非常简单,于是在此基础上设想了很多应用方法并投入了使用。现在HTTP协议已经超出了Web这个框架的局限,被运用到了各种场景里。
通常使用的网络(包括互联网)是在TCP/IP协议族的基础上运作的。而HTTP属于它内部的一个子集。像这样把与互联网相关联的协议集合起来总称为TCP/IP。TCP/IP协议族里重要的一点就是分层。TCP/IP协议族按层次分别为:应用层、传输层、网络层和数据链路层。
- 应用层:决定了向用户提供应用服务时通信的活动。包括FTP服务、DNS服务、HTTP协议等。
- 传输层:对上层应用层,提供处于网络连接中的两台计算机之间的数据传输。包含TCP协议、UDP协议。
- 网络层:用来处理在网络上流动的数据包。该层规定了通过怎样的路径(所谓的传输路线)到达对方计算机,并把数据包传送给对方。
- 链路层:用来处理网络的硬件部分。
以HTTP协议举例TCP/IP通信传输过程:
首先作为发送端的客户端在应用层(HTTP协议)发送一个想看某个Web页面的HTTP请求。接着,为了传输方便,在传输层(TCP协议)把从应用层处接收到的数据(HTTP请求报文)进行分割,并在各个报文上打上标记序号及端口号后转发给网络层。在网络层(IP协议),增加作为通信目的地的MAC地址后转发给链路层。接收端的服务器在链路层接收到数据,按序往上层发送,一直到应用层。当传输到应用层,才能算真正接收到由客户端发送过来的HTTP请求。
IP协议的作用是把各种数据包传送给对方。其中两个重要的条件是IP地址和MAC地址。
TCP协议为了更容易传送大数据才把数据分割,而且TCP协议能够确认数据最终是否送达到对方(三次握手)。
DNS服务提供域名到IP地址间的解析服务。
URI就是由某个协议方案表示的资源的定位标识符,用字符串标识某一互联网资源,而URL表示资源的地点(互联网上所处的位置)。可见URL是URI的子集。
第2章 简单的HTTP协议
HTTP是一种不保存状态,即无状态协议。HTTP协议自身不对请求和响应之间的通信进行保存。也就是说在HTTP这个级别,协议对于发送过的请求或响应都不做持久化处理。但为了实现期望的保存状态功能,于是映入了Cookie技术。有了Cookie再用HTTP协议通信,就可以管理状态了。
Cookie技术通过在请求和响应报文中写入Cookie信息来控制客户端的状态。Cookie会根据从服务器端发送的响应报文内一个叫做Set-Cookie的首部字段信息,通知客户端保存Cookie。当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入Cookie值后发送出去。服务器端发现客户端发送过来的Cookie后,会去检查究竟是从哪一个客户端发来的连接请求,然后对比服务器上的记录,最后得到之前的状态信息。
告知服务器意图的HTTP方法:
GET:获取资源。用来请求访问已被URI识别的资源,指定的资源经服务器端解析后返回响应内容。(我想访问你的某个资源)
POST:传输实体主体。GET也可以传输实体的主体,但一般用POST方法传输,POST的主要目的并不是获取响应的主体内容。(我把这条信息告诉你)
PUT:传输文件。要求在请求报文的主体中包含文件内容,然后保存到请求URI指定的位置。鉴于HTTP/1.1的PUT方法自身不带验证机制,任何人都可以上场文件,存在安全性问题,因此一般的Web网站不适用该方法。若配合Web应用程序的验证机制,或架构设计采用REST标准的同类Web网站,就可能会开放使用PUT方法。(我要把这份文件传给你)
HEAD:获取报文首部。与GET方法一样,只是不反悔报文主体部分。用于确认URI的有效性及资源跟新的日期时间等。(把那个相关信息告诉我)
DELETE:删除文件。与PUT相反的方法。与PUT方法一样不带验证机制,一般网站不适用这个方法。(快把那份文件删掉)
OPTIONS:查询支持的方法。(你支持哪些方法,我支持GET和HEAD方法)
TRACE:追踪路径。让Web服务器端将之前的请求通信环回给客户端的方法。可以查询发送出去的请求是怎样被加工修改/篡改的。容易请发XST攻击,通常不会用到。(之后将会发生些什么)
CONNECT:要求用隧道协议连接代理。要求在与代理服务器通信时建立隧道,实现用隧道协议进行TCP通信。(让我通过以下吧)
第3章 HTTP报文内的HTTP信息
请求报文结构如下: 响应报文结构如下:
   
                            
发送邮件时,我们可以在邮件里写入文字并添加多份附件。这是因为采用了MIME机制,它允许邮件处理文本、图片、视频等多个不同类型的数据。而在MIME扩展中会使用一种称为多部分对象集合的方法,来容纳不同类型的数据。相应地,HTTP协议中也采纳了多部分对象集合,发送一份报文主体内可含有多类型实体。通常是在图片和文本文件等上传时使用。多部分对象集合包含的对象如下:multipart/form-data、multipart/byterange。
第4章 返回结果的HTTP状态码
状态码的职责是当客户端向服务器端发送请求时,描述返回的请求结果。借助状态码,用户可以知道服务器端是正常处理了请求,还是出现了错误。
状态码如200 OK,以3位数字和原因短语组成。数字中的第一位指定了响应类别,后两位无分类。
  
第5章 与HTTP协作的Web服务器
HTTP/1.1规范允许一台HTTP服务器搭建多个Web站点。
在互联网上,域名通过DNS服务映射到IP地址(域名解析) 之后访问目标网站。可见,当请求发送到服务器时,已经是以IP地址形式访问了。
HTTP通信时,除客户端和服务器以外,还有一些用于通信数据转发的应用程序,例如代理、 网关和隧道。它们可以配合服务器工作。
代理
代理是一种有转发功能的应用程序,它扮演了位于服务器和客户端“中间人”的角色,接收由客户端发送的请求并转发给服务器,同时也接收服务器返回的响应并转发给客户端。
网关
网关是转发其他服务器通信数据的服务器,接收从客户端发送来的请求时,它就像自己拥有资源的源服务器一样对请求进行处理。有时客户端可能都不会察觉,自己的通信目标是一个网关。
隧道
隧道是在相隔甚远的客户端和服务器两者之间进行中转,并保持双方通信连接的应用程序。
第6章 HTTP首部
请求被发送至服务器时,请求中的主机名会用IP地址直接替换解决。但如果这时,相同的IP地址下部署运行着多个域名,那么服务器就会无法理解究竟是哪个域名对应的请求。因此,就需要使用首部字段Host来明确指出请求的主机名。若服务器未设定主机名,那直接发送一个空值即可。
Cookie的工作机制是用户识别及状态管理。Web网站为了管理用户的状态会通过Web浏览器,把一些数据临时写入用户的计算机内。接着当用户访问该Web网站时,可通过通信方式取回之前发放的Cookie。调用Cookie时,由于可校验Cookie的有效期,以及发送方的域、路径、协议等信息,所以正规发布的Cookie内的数据不会因来自其他Web站点和攻击者的攻击而泄露。
第7章 确保Web安全的HTTPS
HTTP+加密+认证+完整性保护=HTTPS
所谓HTTPS,其实就是身披SSL协议这层外壳的HTTP。
【图解HTTP】笔记摘要的更多相关文章
- Android群英传笔记——摘要,概述,新的出发点,温故而知新,可以为师矣!
		Android群英传笔记--摘要,概述,新的出发点,温故而知新,可以为师矣! 当工作的越久,就越感到力不从心了,基础和理解才是最重要的,所以买了两本书,医生的<Android群英传>和主席 ... 
- 图解 HTTP 笔记(七)——HTTPS
		本章主要讲解 HTTPS 的基本原理,以及如何利用 HTTPS 防范 HTTP 通信过程中存在的伪装.窃听.篡改等问题 一.HTTP 的缺点 HTTP 在通信过程中会面临以下三种安全问题: 通信使用明 ... 
- 图解 HTTP 笔记(六)——HTTP 首部
		本章主要讲解了 HTTP 首部的结构,已经首部中各字段的用法. 一.HTTP 报文首部 上图是 HTTP 请求报文的结构. HTTP 请求报文由方法.URI.HTTP 版本.HTTP 首部字段等组成. ... 
- <算法图解>读书笔记:第1章 算法简介
		阅读书籍:[美]Aditya Bhargava◎著 袁国忠◎译.人民邮电出版社.<算法图解> 第1章 算法简介 1.2 二分查找 一般而言,对于包含n个元素的列表,用二分查找最多需要\(l ... 
- 「图解HTTP 笔记」Web 基础
		Web 基础 三项构建技术: HTML:页面的文本标记语言 HTTP:文档传输协议 URL:指定文档所在地址 一些概念 HTTP(HyperText Transfer Protocol):通常被译为& ... 
- 《图解 HTTP》 摘要一
		学习过程对书本的内容的摘要以及总结,逐步完善,带有个人理解成分. Web 及网络基础 使用 HTTP 协议访问 Web 客户端:通过获取请求获取服务资源的 Web 浏览器等 HTTP 全称:Htype ... 
- 【5】图解HTTP 笔记
		坚持.聪明.不畏困难,我将取得最后的胜利. 第一章 了解 Web 以网络基础 1. HTTP ( HyperText Transfer Protocol ): 超文本传输协议. 2. 通讯方式: 3. ... 
- 【CSS Cookbook】笔记摘要(二)
		页面元素 使用text-align性质可以居中显示块级元素中的文字.把margin-left和margin-right设为auto时,该元素则会相对于父元素居中显示.但是现在流行的一些较低版本的浏览 ... 
- 【CSS Cookbook】笔记摘要(一)
		概要 CSS的优点:将表现和内容相分离:更好地控制页面布局:大大减少了文件尺寸:缩短了改版时间:提高了易用性. CSS全称层叠式样表(Cascading Style Sheets). 1.问题:如何最 ... 
随机推荐
- RabbitMQ入门教程
			1.下载安装RabbitMQ windows下 先 下载Erlang 64位 其它去这里下载 http://www.erlang.org/downloads 然后 下载RabbitMQ 官网 htt ... 
- 《Java Performance》笔记1——性能分析基础 2
			4.内存使用率: 内存使用率的相关属性包括页面调度或页面交换.加锁.线程迁移中的让步式和抢占式上下文切换. 当应用运行所需的内存超过可用物理内存时,就会发生内存页面交换,系统在进行页面交换或使用虚拟内 ... 
- WSDL/WebService/SOAP/REST/AXIS/CXF 开放式服务
			WebService是一种数据交换标准.通过WebService标准,你可以把项目中的方法作为接口提供给其他项目使用. 有时候我们习惯性地将具体提供服务的某个方法称为WebService.比如图书系统 ... 
- 原生js轮播图
			//用原生js实现了一个简单的轮播图效果 <!DOCTYPE html><html> <head> <meta charset="UTF-8&quo ... 
- Java中ArrayList,Vector,LinkedList,HashMap,HashTable,HashSet对比及总结
			1.所有的集合的父类都是Collection的接口 2.Set List Map 区别 A 在Set里面:无法添加元素的顺序,所以Set里面的元素不能重复 B 在List中:有索引号,类似于数组, ... 
- memcached+tomcat转发forward时 sessionid一直变化的问题
			今天遇到了一个很奇怪的问题, 我在tomcat过滤器 中, 对请求过来的静态资源及html页面做了forword转发操作,核心代码如下: private void redirectMobile(Htt ... 
- 【Linux配置】vim配置文件内容
			vim的配置 文件:~/.vimrc 在自己的家目录中的.vimrc文件进行编辑配置 设置如下: set nu "序号 set tabstop= "tab键的大小 set show ... 
- cookie,session,token的定义及区别
			参考了很多文章总结的. 1.cookie(储存在用户本地终端上的数据) 服务器生成,发送给浏览器,浏览器保存,下次请求同一网站再发送给服务器. 2.session(会话) a.代表服务器与浏览器的一次 ... 
- jvm的搭建
			首先先 说明一下接下来要用到的,环境变量中的path和classpath的区别 1.path路径用来告诉计算机.exe文件的路径,classpath路径是用来告诉计算机.class文件的路径 2.系统 ... 
- [Git]08 如何自动补全命令
			 [Git]08如何自动补全命令 如果你用的是 Bash shell,可以试试看 Git 提供的自动完成脚本.下载 Git 的源代码,进入 contrib/completion 目录,会看到一个g ... 
