《图解HTTP》阅读总结
前言:《图解HTTP》是一本图文并茂的好书,讲解地很详尽。目前我只完整地读了一遍,很多地方知其然不知其所以然,接下来打算抽空再读一次。这篇博文只是做个粗略记录,第二遍读完会再来编辑细化。
1.HTTP协议的发展
·基本概念提出于1989.3,借助HyperText连接成可相互参阅的万维网。(至今已经提出3项技术HTTP、HTML、URL)
|
·1993.1 浏览器鼻祖Mosaic问世,HTTP 0.9出现。
|
·1994.12 Netscape 发布 Netscape Navigator 1.0, 1995 微软发布 Internet Explorer1.0、2.0, Appach 0.2出现, HTML 2.0发布
|
·1995 浏览器大战开始
|
·1996.5 HTTP 正式作为标准被发布,命名为 HTTP/1.0
|
·1997.1 HTTP /1.1公布,也是目前应用最为广泛的版本
|
· 近20年后, HTTP /2.0 还在定制中·······
2.HTTP协议原理
TCP/IP 是互联网相关的各类协议总称,HTTP协议便是其中一种。 TCP/IP 协议族按照层次分为:应用层、传输层、网络层、数据链路层。
其中应用层决定了向用户提供应用服务时的通信服务(DNS、FTP、HTTP..),传输层提供两台计算机之间的数据传输(TCP、UDP),网络层处理网络上流动的数据包,并规定传输路线,链路层处理网络链接的硬件部分。这之中,与HTTP协议密切相关的协议有三,IP、TCP、DNS。
【客户端输入地址 ->DNS域名解析 -> HTTP协议生成请求报文 ->TCP协议 报文分段、可靠性保障 ->IP协议 搜索对方、中转、传输 -> TCP接收到数据、重组分段的报文数据 ->HTTP 处理报文、之后按照同样的路线返回服务器的处理结果】
URI:Uniform Resource Identifier 统一资源标识符,绝对URL的格式:协议名+登陆信息+服务器地址+端口号+文件路径+查询字符+片段标识符
3.HTTP报文结构以及常见字段
·HTTP协议的【请求报文】是由【请求方法、请求URI、协议版本、可选首部字段、内容实体】构成。 如下:
POST /form/entry HTTP/1.1
Host: hackr.jp
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 16 name-ueno&age-37
·HTTP协议的【响应报文】由【协议版本、状态码、原因短语、可选的首部字段、内容实体】构成。 如下:
HTTP/1.1 200 OK
Date: Tue, 10 Jul 2016 06:50:15 GMT
Content-Length: 362
Content-Type: text/html
<html>
.....
·HTTP/1.1中可使用的方法有:
GET:获取资源 POST:传输实体的主体 PUT:传输文件 HEAD: 获得报文首部 DELETE: 删除文件 OPTION:询问支持方法 TRACE: 追踪路径(容易引发XST,不常用) CONNECT:要求使用隧道协议链接代理
·HTTP /1.1中【请求报文】常见字段:
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate, sdch
Accept-Language: zh-CN,zh;q=0.8,en;q=0.6
·HTTP /1.1中【响应报文】常见字段:
Date: Fri, 09 Dec 2016 03:17:01 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Last-Modified: Fri, 18 Apr 2014 08:36:11 GMT
Access-Control-Allow-Origin: *
Expires: Fri, 09 Dec 2016 03:27:01 GMT
Cache-Control: max-age=600
Content-Encoding: gzip
X-GitHub-Request-Id: 73C26B2C:0861:1C65A928:584A222D
·HTTP/1.1 首部字段一览表:
| Cache-Control | 控制缓存行为 |
| Connection | 逐跳首部、连接的管理 |
| Date | 创建报文的日期时间 |
| pragma | 报文指令 |
| Trailer | 报文末端首部一览 |
| Transfer-Encoding | 指定传输编码方式 |
| Upgrade | 升级协议 |
| via | 代理服务器相关信息 |
| Warning | 错误通知 |
| Accept | 用户代理可处理的媒体类型 |
| Accept-Charset | 优先的字符集 |
| Accept-Encoding | 优先的内容编码 |
| Accept-Language | 优先的自然语言 |
| Authorization | web认证信息 |
| Expect | 期待服务器的特定行为 |
| Form | 用户电子邮箱 |
| Host | 请求资源所在服务器 |
| If-Match | 比较实体标记(E-tag) |
| If-Modified-Since | 比较资源更新时间 |
| If-None-Match | 比较实体标记 |
| If-Range | 发送资源未更新时的实体byte请求 |
| Max-forwards | 最大传输逐跳数 |
| Proxy-Authorization | 代理服务器要求客户端的认证信息 |
| Range | 实体字节范围请求 |
| Referer | 请求中URI的原始获取方 |
| TE | 传输编码优先级 |
| User-Agent | HTTP客户端程序信息 |
| Accept-Range | 是否解散范围请求 |
| Age | 推算资源创建时间 |
| E-Tag | 资源的匹配信息 |
| Location | 使客户端重新定向指定URI |
| Proxy-Authenticate | 服务器对客户端的认证信息 |
| Retry-After | 再次发起请求的时机要求 |
| Server | HTTP服务器的安装信息 |
| Vary | 代理服务器缓存的管理信息 |
| www-Authenticate | 服务器对客户端的认证信息 |
| Allow | 可支持的HTTP方法 |
| Content-Language | 实体主体的自然语言 |
| Content-Length | 实体主体大小 |
| Content-Location | 替代对应资源的URI |
| Content-MD5 | 实体报文摘要 |
| Content-Type | 实体主体的媒体类型 |
| Content-Range | 实体主体的位置范围 |
| Expires | 实体主体过期的日期时间 |
| Last-Modified | 资源最后修改日期时间 |
4.代理、网关、隧道
·代理:客户端、服务器的中间人(缓存代理、透明代理、非透明代理)
·网关:转发其他服务器的通信数据(转化协议)
·隧道:客户端、服务器之间中转并保持连接的应用程序(SSL加密)
5.cookie & session
·Cookie的工作机制是用户识别、状态管理。Web网站为了管理用户的状态会通过web浏览器,把一些数据临时写入用户的计算机内。接着当用户访问改web网站时,可通过通信方式取回之前发放的Cookie。
·Set-Cookie: 开始状态管理所使用的Cookie信息 【NAME = VALUE、 expires=DATE、path=PATH、domiian=domain、secure、HttpOnly】
·Cookie: 服务器接收到的Cookie信息
·HTTP协议使用cookie管理的session 实现基于表单的认证:
【客户端POST(ID+PW) -> 服务器发放Session ID,验证ID+PW并绑定,写入set-cookie字段内向客户端响应 -> 收到包含session ID的cookie,保存在本地,再次请求时自动发送该cookie,
验证登陆信息。】
6.HTTPS、SPDY、WebSocket
·HTTP的加密(SLS、TLS):HTTP + 加密 + 认证 + 完整性保护 = HTTPS
·google在2010发布了消除HTTP瓶颈的SPDY,缩短了50%的页面加载时间。SPDY的功能:【多路复用流、赋予请求优先级、压缩HTTP首部、推送功能、服务器提示功能】。
·WebSocket也就是web浏览器与服务器之间全双工通信标准,主要解决AJAX、COMET中XMLHttpRequest附带的缺陷。一旦该通信建立,两端可以传输JSON、XML、HTML、图片等任意格式的数据。
功能:【推送功能、减少通信量、握手请求、握手响应】
《图解HTTP》阅读总结的更多相关文章
- 图解HTTP阅读笔记(1)-网络基础TCP/IP
1.TCP/IP协议族 TCP/IP这个概念对大家来说很熟悉,之前我的了解它只是一个协议.今天阅读才知道TCP/IP实际上是一个协议族,其中HTTP协议属于该协议族的一个子集.图1是TCP/IP协议族 ...
- [计算机网络]图解HTTP阅读笔记
总述 书的定位:一本十分浅显的HTTP书籍,主要介绍了HTTP与HTTPS.适合入门了解,很多地方都是蜻蜓点水,但稍微深入的地方能让人了解重点在哪,后面应该有针对性地阅读深入书籍. 主要内容:介绍了T ...
- 图解HTTP——阅读笔记
基础部分 第1章 了解Web及网络基础 重点了解HTTP协议在网络中的作用,扮演了什么角色,以及网络传输中相关的一些角色. 3项重要的web构建技术:HTML,URL,HTTP HTTP协议位于应用层 ...
- 图解Http阅读笔记(二)
简单的HTTP协议 HTTP是一种不保存状态,即无状态(stateless)协议.HTTP 协议自身不对请求和响应之间的通信状态进行保存.也就是说在 HTTP 这个级别,协议对于发送过的请求或响应都不 ...
- 图解Http阅读笔记(一)
1.网络基础 TCP/IP 1.1TCP /IP 协议族 计算机与网络设备要相互通信,双方就必须基于相同的方法.比如,如何探测到通信目标.由哪一边先发起通信.使用哪种语言进行通信.怎样结束通信等规 ...
- 图解HTTP阅读笔记2
TCP协议:三次握手,C端——>SYN——>S端: S端——>SYN/ACK——>C端: C端——>ACK——>S端. 特点:字节流服务,把大块数据分割成以报文段为 ...
- 《图解HTTP》阅读笔记--第十一章针对web的攻击技术
第十一章.针对WEB的攻击技术 ----<图解HTTP>阅读笔记攻击目标---Web简单的HTTP协议本身并不存在安全性 问题,协议本身并不会成为被攻击的对象,应用HTTP的服务器和客户端 ...
- 阅读手札 | 手把手带你探索『图解 HTTP』
前言 本文已经收录到我的 Github 个人博客,欢迎大佬们光临寒舍: 我的 Github 博客 学习清单: 一.网络基础 TCP/IP 通常使用的网络(包括互联网)是在 TCP/IP 协议族的基础上 ...
- 《图解HTTP》阅读笔记
HTTP基础的简单理解 在了解HTTP协议之前,我们先了解下TCP/IP的参考模型,TCP/IP参考模型分为四层:应用层.传输层.网络层.链路层(数据链路层). 应用层:为不同的网络应用提供所需的服务 ...
- 阅读 图解HTTP ,读书笔记
阅读它的目的只有一个:就是想了解客户端与服务端的通信是怎么实现的? 数据的存储是怎么实现的? 数据流通过程中遇到什么问题.返回什么状态.该怎么解决? 网络基础 TCP / IP 通常使用 ...
随机推荐
- 关于VMware 15搭建MacOS 10.14后无法播放在线视频和客户端视频的问题
最近在自己的电脑上搭建了MacOS10.14系统,搭建是成功了,但是发现一个很坑的事,看视频发现黑屏.就是那种只有声音,没有视频的问题,在多个浏览器上和客户端都是一样的.百度了下,总结有2种可能,一是 ...
- [CSP-S模拟测试]:big(Trie树+贪心)
题目描述 你需要在$[0,2^n)$中选一个整数$x$,接着把$x$依次异或$m$个整数$a_1~a_m$.在你选出$x$后,你的对手需要选择恰好一个时刻(刚选完数时.异或一些数后或是最后),将$x$ ...
- 在阿里云虚拟主机上部署Laravel
拿laravel5.1来说: 在根目录下创建一个local文件夹,把网站根目录下除了public文件夹以外所有文件及文件夹剪切到local文件夹中 然后把public文件夹下的所有文件剪切到网站根目录 ...
- 手把手教你做echarts图表系列之组织结构图
在实际项目中使用echarts越来越多了,今天从一个组织结构图开始,手把手教大家开发echarts图表. 公司里的组织结构图如下: 可以参考echarts入门教程:http://echarts.bai ...
- 深入理解JVM虚拟机11:Java内存异常原理与实践
本文转自互联网,侵删 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutori ...
- sed的一些应用
1. sed 使用变量进行替换,注意使用参数 r 时,需要放在参数 i 的前面 下面这个例子是用2.txt中的版本号替换docker-compose.yml中的版本号,其中变量UPGRADE_NAME ...
- grep的用法,小技巧,模板中含有\t时:grep -P "^\t" file
linux中grep和find的用法区别 本文章详细的介绍了关于在linux中的grep和find两个命令的用法介绍,以及后面总结了它们两年用法区别哦. 先我们来介绍一下关于grep用法和一些小注意事 ...
- 查看jQuery file upload的image preview如何工作的
查看readme中的说明, JavaScript Load Image library v. 1.13.0+: Required for the image previews and resizing ...
- React Native商城项目实战12 - 首页头部内容
1.HomeTopView为首页头部内容,HomeTopListView为HomeTopView子视图. 2.HomeTopView.js /** * 首页头部内容 */ import React, ...
- 织梦dedecms发布视频文章前台变成一张图片的解决方法
在发布文章的时候,有时需要插入视频的代码,如优酷.腾讯等视频,这样更能让文章变的丰富,但是在发布视频的时候,前台并不能播放视频,而是一张图片 解决这个方法其实很简单,在发布视频文章的时候,将附加选项的 ...