【图解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.问题:如何最 ...
随机推荐
- AngularJS1.X学习笔记6-控制器和作用域
经过一番艰苦卓绝的鏖战,我终于来到了控制器和作用域部分.控制器作为MVC的C,其重要性不可谓不重要:作用域决定了你可以拿到哪些东西,亦是分外重要.现在就来学习一下两个东西.去看看$apply,$wat ...
- 在hive中直接对timestamp类型取max报错
之前直接对timestamp类型做max操作, select id,max(updatetime) updatetime from his.tag group by id; 结果查询的结果有的显示为1 ...
- [转]使用sklearn进行集成学习——理论
转:http://www.cnblogs.com/jasonfreak/p/5657196.html 目录 1 前言2 集成学习是什么?3 偏差和方差 3.1 模型的偏差和方差是什么? 3.2 bag ...
- css3+js 实现砸金蛋效果
最近闲来无事,在网上看到有人写了个砸金蛋的效果,他是没有用到css3的,当时我就感觉没什么动态效果 感觉体验不是很好,所有我就想用css3来改下,于是也来试着写写. 本来想弄个视频给你们看看效果的,但 ...
- CF #405 (Div. 2) B. Bear ad Friendship Condition (dfs+完全图)
题意:如果1认识2,2认识3,必须要求有:1认识3.如果满足上述条件,输出YES,否则输出NO. 思路:显然如果是一个完全图就输出YES,否则就输出NO,如果是无向完全图则一定有我们可以用dfs来书边 ...
- cssreset
/** * http://cssreset.com */html, body, div, span, applet, object, iframe,h1, h2, h3, h4, h5, h6, p, ...
- mongo数据库基础
mongodb mongodb特性 分布式文件存储 介与关系数据库和非关系数据库之间 文件存储格式为BSON(一种JSON的扩展) BSON是对二进制格式的JSON的简称,BSON支持文档和数组的嵌套 ...
- css过渡模块和2d转换模块
今天,我们一起来研究一下css3中的过渡模块.2d转换模块和3d转换模块 一.过渡模块transition (一)过度模块的三要素: 1.必须要有属性发生变化 2.必须告诉系统哪个属性需要执行过渡效果 ...
- 0.0 ABP官方文档翻译目录
一直想学习ABP,但囿于工作比较忙,没有合适的契机,当然最重要的还是自己懒.不知不觉从毕业到参加工作七年了,没留下点儿什么,总感觉很遗憾,所以今天终于卯足劲鼓起勇气开始写博客.有些事能做的很好,但要跟 ...
- 保证Android后台不被杀死的几种方法
由于各种原因,在开发Android应用时会提出保证自己有一个后台一直运行的需求,如何保证后台始终运行,不被系统因为内存低杀死,不被任务管理器杀死,不被软件管家等软件杀死等等还是一个比较困难的问题.网上 ...