为什么看此书

  如果你想了解网络知识如HTTP协议、TCP/IP协议,但是又不是专业的网络工程师,不会花大笔时间研究《TCP/IP详解》这本圣经,那么看《图解HTTP》就对了。
这篇博客可以说是我在看书时做的笔记吧。

第一章 了解Web及网络基础

Web和HTTP的诞生

  在20世纪80年代末时,为了知识共享为规划的Web,随着Web的诞生,HTTP协议也就诞生了,只是那时候还不成熟,并且在这之后的很久都不成熟,直到1996年才HTTP才正式作为标准被推出,版本为HTTP/1.0

TCP/IP协议族

TCP/IP协议族,包括HTTP,DNS,FTP,UDP,PPPoE协议等;
TCP/IP协议族的分4层:应用层(FTP,DNS,HTTP)、传输层(TCP,UDP)、网络层(IP)、数据链路层(NIC(Network Interface Card)网卡,光纤等物理设备)。
TCP/IP数据传输流:数据是在客户端从上层往下层,再从下层往上层传递到服务端。
TCP/IP的三次握手四次挥手
URI和URLUniform Resource IdentifierUniform Resource Locator

第二章 简单HTTP协议

这章介绍的是HTTP/1.1版本,也是目前用的版本。

用于客户端和服务端通信

1.客户端发送request请求,服务端回应respons;
2.请求报文和响应报文的格式构成;
3.http不保存状态,即,上一次请求和这一次请求是相互独立的,可以通过传递相同的cookie来确认是否是相同的客户端发送;
4.HTTP客户端的请求方法,包括:GET,POST,PUT,HEAD,DELETE以及不常用的OPTIONS,TRACE,CONNECT,
5.持久连接指的是,为了解决TCP的三次握手和四次挥手耗时问题,即在第一次建立好连接后,在没有断开参数的情况下,HTTP请求仍在第一次创建的连接里面发送消息;

第三章 HTTP报文内的HTTP信息

第三章主要讲的是,客户端发送的请求和服务端响应的请求分别长什么样子。

  1. 报文的结构:报文首部 + 空行(CR+LF) + 报文主体,需要注意的是,请求报文和响应报文虽然结构相同,但具体内容不同。
  2. 报文首部分为以下部分组成:请求行 + 状态行 + 首部字段 + 其他
  3. 编码能够提高传输速率;
    除此之外,还可以把数据包分为多个部分传输,在报文首部中加以区分,以及不同浏览器,相应不同的返回报文;

第四章 返回结果的HTTP状态码

状态 类别 原因短语
1XX Informational(信息性状态码) 接收的请求正在处理
2XX Success(成功状态码) 请求正常处理完毕
3XX Redirection(重定向状态码) 需要进行附加操作已完成请求
4XX Client Error(客户端错误状态码) 服务器无法处理请求
5XX Server Error(服务端错误状态码) 服务器处理请求错误

第五章 与HTTP协作的Web服务器

本章主要介绍Web服务器,包括搭建Web网站,或者做提高效率的中转服务器
其中,Web服务器就是搭建常见的,某个网站所部署的机器就是了。
中转服务器种类比较多,包括代理,网关,隧道,缓存。

第六章 HTTP首部

在第三章简单介绍了HTTP的报文信息,也简单介绍了HTTP首部,第六章再详细讲HTTP首部结构,以及各种字段的用法。
这章可以当做手册使用,当遇到需要的时具体查询吧。

第七章 确保Web安全的HTTPS

HTTP为什么不安全

通过前面几章学习,知道了HTTP的优势,第七章说说HTTP的缺点以及如何解决这些缺点。

  1. 通信使用明文(不加密),内容可能会被窃听;
  2. 不验证通信方的身份,因此有可能遭遇伪装;
  3. 无法证明报文的完整性,所以有可能已遭篡改;

HTTPS是什么

HTTPS = HTTP + 加密 + 认证 + 完整性保护

HTTPS如何保证安全

  1. 服务端在数字证书认证机构把自己的公钥通过认证机构的私钥加密获得服务器自己的公钥证书;
  2. 客户端拿到第1步服务器的公钥证书后,使用认证机构提供的公钥,向认证机构验证公钥证书上的数字签名,以确认服务器的公开密钥的真实性;
  3. 客户端使用服务端的公开密钥对报文加密发送;
  4. 服务端用私有密钥对报文解密;

第八章 确认访问用户身份的认证

当网页需要特定人浏览时,就需要加入权限认证功能。本章介绍了4种认证方法。

BASIC认证

  1. 客户端请求;
  2. 服务端返回401状态码;
  3. 客户端用Base64编码发送用户ID和密码;
  4. 服务端认证成功返回200;

DIGEST认证

  1. 客户端请求;
  2. 服务端返回401+质询码(通常为随机数,实际依赖服务端实现)
  3. 客户端在请求首部Authorization信息中加入用户名密码等信息,以及通过质询码计算出的响应码(计算方法比较复杂,具体详见RFC2617)
  4. 服务端认证成功返回200;

SSL客户端认证

结合第七章HTTPS的安全性来讲,SSL需要购买证书。
SSL的认证是保证通讯过程的安全,防止通过form表单提交的密码等信息被监听。

基于表单认证

这是我们最常用的,就是用户名密码登录认证;

  1. 客户端发送用户名密码;
  2. 服务端验证通过,在服务端保存的sessionID,用于表示是哪个客户端,并将sessionID发送给客户端;
  3. 客户端收到sessionID保存到cookie中,下次请求直接发送cookie中的sessionID,而不用在输入密码了。(如果别人知道你的sessionID,也就可以通过该sessionID获取你的信息了,所以,sessionID大多都有过期时间)。

第九章 基于HTTP的功能追加协议

HTTP协议自HTTP/1.1之后,这么多年一直都在用1.1版本,第九章主要讲在HTTP协议基础之上的改进。

SPDY

Google在2010年发布,旨在解决HTTP的性能问题,缩短Web页面的加载时间(50%)。

HTTP的瓶颈在于每次请求,页面都要整体刷新一遍,有时仅仅在于只改动一点点。基于此,有了Ajax技术。
Ajax(Asynchronous JavaScript and XML,异步JS和XML),本质值客户端局部请求服务端,从而局部刷新页面,提高使用体验。
Comet,与Ajax相反,Comet是服务端向客户端发送变化的数据。
SPDY是在会话层的网络协议,HTTP是在应用层。具体对协议做了一些改动从而提高性能。

使用浏览器进行全双工通信的WebSocket

WebSocket主要能够实现Web浏览器和Web服务器之间的全双通通信,支持推送功能减少通信量

HTTP/2.0

HTTP/2.0的目标改善用户在使用Web时的速度体验。
在HTTP/1.1的基础上,新添加或修改了一些网络协议。

第十章 构建Web内容的技术

HTML,CSS,JavaScript渲染页面,Java Servlet或者PHP做Web后台应用。

第十一章 Web的攻击技术

第十一章简单介绍了攻击Web服务器的技术手段,以及攻击造成的影响。

  1. 攻击服务器,通过SQL注入,或者OS命令注入,获取服务器数据。
  2. 攻击客户端,给用户发送诱导陷阱的邮件或者网页,从而获取用户的cookie(结合第八章,基于表单的验证,就知道cookie被别人知道有多可怕)。

具体的攻击方法查看书吧。

《图解HTTP》学习笔记相关推荐

  1. 第二行代码学习笔记——第六章:数据储存全方案——详解持久化技术

    本章要点 任何一个应用程序,总是不停的和数据打交道. 瞬时数据:指储存在内存当中,有可能因为程序关闭或其他原因导致内存被回收而丢失的数据. 数据持久化技术,为了解决关键性数据的丢失. 6.1 持久化技 ...

  2. 第一行代码学习笔记第二章——探究活动

    知识点目录 2.1 活动是什么 2.2 活动的基本用法 2.2.1 手动创建活动 2.2.2 创建和加载布局 2.2.3 在AndroidManifest文件中注册 2.2.4 在活动中使用Toast ...

  3. 第一行代码学习笔记第八章——运用手机多媒体

    知识点目录 8.1 将程序运行到手机上 8.2 使用通知 * 8.2.1 通知的基本使用 * 8.2.2 通知的进阶技巧 * 8.2.3 通知的高级功能 8.3 调用摄像头和相册 * 8.3.1 调用 ...

  4. 第一行代码学习笔记第六章——详解持久化技术

    知识点目录 6.1 持久化技术简介 6.2 文件存储 * 6.2.1 将数据存储到文件中 * 6.2.2 从文件中读取数据 6.3 SharedPreferences存储 * 6.3.1 将数据存储到 ...

  5. 第一行代码学习笔记第三章——UI开发的点点滴滴

    知识点目录 3.1 如何编写程序界面 3.2 常用控件的使用方法 * 3.2.1 TextView * 3.2.2 Button * 3.2.3 EditText * 3.2.4 ImageView ...

  6. 第一行代码学习笔记第十章——探究服务

    知识点目录 10.1 服务是什么 10.2 Android多线程编程 * 10.2.1 线程的基本用法 * 10.2.2 在子线程中更新UI * 10.2.3 解析异步消息处理机制 * 10.2.4 ...

  7. 第一行代码学习笔记第七章——探究内容提供器

    知识点目录 7.1 内容提供器简介 7.2 运行权限 * 7.2.1 Android权限机制详解 * 7.2.2 在程序运行时申请权限 7.3 访问其他程序中的数据 * 7.3.1 ContentRe ...

  8. 第一行代码学习笔记第五章——详解广播机制

    知识点目录 5.1 广播机制 5.2 接收系统广播 * 5.2.1 动态注册监听网络变化 * 5.2.2 静态注册实现开机广播 5.3 发送自定义广播 * 5.3.1 发送标准广播 * 5.3.2 发 ...

  9. 第一行代码学习笔记第九章——使用网络技术

    知识点目录 9.1 WebView的用法 9.2 使用HTTP协议访问网络 * 9.2.1 使用HttpURLConnection * 9.2.2 使用OkHttp 9.3 解析XML格式数据 * 9 ...

  10. 安卓教程----第一行代码学习笔记

    安卓概述 系统架构 Linux内核层,还包括各种底层驱动,如相机驱动.电源驱动等 系统运行库层,包含一些c/c++的库,如浏览器内核webkit.SQLlite.3D绘图openGL.用于java运行 ...

最新文章

  1. 利用套接字实现进程通信一例
  2. 斯坦德机器人收购_斯坦德机器人合伙人兼CMO王茂林:人是公司发展根本,多数企业都死于合伙人...
  3. 在 IntelliJ IDEA 中与小姐姐连麦写代码是什么体验?
  4. 装了VS2005再装IIS的小问题
  5. python基础教程教材-Python3零基础教材电子书合集
  6. 【踩坑】遇到 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) 报错...
  7. spring order_Spring @Order批注
  8. laravel 分词搜索匹配度_【地名地址】面向智慧城市的高精度地名地址匹配方法...
  9. 【渝粤教育】 国家开放大学2020年春季 1107传感器与测试技术 参考试题
  10. 【转】首次敏捷项目开发实践
  11. #ifndef、#def、#endif等宏是什么意思
  12. 安装cleanmymac软件提示已损坏无法打开,如何解决?
  13. java多线程编程(三)- 线程的创建
  14. Bailian4100 进程检测【排序】
  15. 反激变换器的变压器设计
  16. win7 注册表禁 com服务器,win7系统注册表清理后导致不能上网如何解决
  17. 动环监控系统的服务器配置,动环监控系统服务器维护
  18. java 批量重命名_Java实现文件批量重命名
  19. vue3语法糖父子组件的通信
  20. DDR4两根4G组的双通道跟1根8G单通道有什么区别?

热门文章

  1. Java007-面向对象(多态)
  2. 第一:Postman安装及使用(超详细)
  3. python接口自动化(二)--什么是接口测试、为什么要做接口测试(详解)
  4. python列表和数组区别java_Python列表与Java数组效率
  5. sift计算描述子代码详解_浅谈SIFT特征描述子
  6. 阿里云块存储、对象存储(OSS)、文件存储(NAS)的区别?
  7. cmd输入pip报错_安装虚拟环境+pip安装XXX包的常见操作与报错解决
  8. Spring Boot Lombok配置
  9. beats耳机用安卓手机影响音效么_500元以下的头戴式耳机超高性价比推荐
  10. linux mkdir 参数,Linux基础命令之 mkdir