读书笔记---<<图解HTTP>>(一)
一、了解Web及网络基础
1. 网络基础TCP/IP
通常使用的网络包括互联网都是在TCP/IP协议族的基础上运作的,而HTTP属于它内部的一个子集。
1.1 TCP/IP协议族
像这样吧与互联网关联的协议集合起来的总称为TCP/IP,这只是一种说法,还有其他的几种说法,比如TCP/IP指TCP和IP协议等等,这里就不深究了。
1.2 TCP/IP分层管理
记得大学的时候学的是OSI七层模型,在这本书上讲的是TCP/IP四层模型:应用层、传输层、网络层和数据链路层。
应用层
应用层决定了向用户提供应用服务时通信的活动。
FTP和DNS服务就是其中的两类,HTTP也属于该层。
传输层
传输层对上层应用层,提供网络连接中两台计算机之间的数据传输。
传输层有两个性质不同的协议:TCP和UDP
网络层
网络层用来处理网络上流动的数据包,数据包是网络传输的最小数据单位,该层规定了通过怎样的路径(传输路线)到达对方计算机,并把数据包传递给对方。
链路层
用来处理连接网络的硬件部分。
1.3 TCP/IP通信传输流
发送端从应用层往下走,接收端则往应用层往上走。
流程:发送端的客户端在应用层(HTTP协议)发出一个想看某个Web页面的请求。
为了传输方便,传输层(TCP协议)把从应用层处收到的数据(HTTP请求报文)进行分割,并在每个报文上打上标记序号及端口号后转发给网络层。
网络层(IP协议)增加作为通信目的地的MAC地址后转发给链路层。
接收端的服务器在链路层接受到数据,按序往上层发送,一直到应用层。
2. 与HTTP关系密切的协议:IP,TCP和DNS
2.1 负责传输的IP协议
IP协议的作用是把各种数据包传送给对方。为保证正确送达,其中两个正确的条件就是IP地址和MAC地址。
IP地址指明了节点被分配的地址,MAC是网卡的固定地址。IP地址会和MAC地址进行配对。
IP间通信依赖MAC地址。毕竟通信双方在同一局域网内的情况很少,通常需要多台计算机和网络设备转换才能连接到对方,而进行中转时,会利用下一站中转设备的MAC地址来搜索下一个中转目标,此时采用ARP协议。ARP协议是一种用解析地址的协议,通过IP地址反查出对应的MAC地址。
有点像送快递,寄快递---集散中心---中转站---集散中心---收快递
2.2 确保可靠性的 TCP 协议
TCP提供可靠的字节流服务,字节流服务是指,为了方便传输,将大块数据分割成以报文段为单位的数据包进行管理。
可靠性--->三次握手
发送端首先发送一个带 SYN 标志的数据包给对方。接收端收到后, 回传一个带有 SYN/ACK 标志的数据包以示传达确认信息。最后,发送端再回传一个带 ACK 标志的数据包,代表“握手”结束。
2.3 负责域名解析的 DNS 服务
为了方便用户记忆,DNS协议提供通过域名查找IP或逆向查找。
3 URI和URL
URI 统一资源标识符
URL 统一资源定位符
URN 统一资源名称
URL是URI的一种实现,是URI的一个子集。举个例子,假如大家名字都不能重复的话,根据名字就能标识出唯一的一个人,那么名字就是URI的一个实例,但是现实生活中名字肯定会重复,所以身份证号才是URI,通过身份证号就能标识出唯一的一个人。而URL是通过描述人位置的的方式来确定一个人,比如某某协议://地球/中国/上海/浦东新区/xx小区/xxx,另一种方式就是通过身份证号来确定这个人了,两种方式都属于URI。
二、简单的HTTP协议
1. HTTP协议用于客户端和服务端之间的通信
客户端包括请求行、请求头、请求体。
服务端包括想响应行、响应头、响应体。
其中,①②③是请求行,分别是请求方法,资源名称,HTTP版本号,④是请求头,⑤是请求体。
2. HTTP是不保存状态的协议
协议本身不保留任何请求和发送的信息,这是为了处理大量事务,确保协议的可伸缩性,而特意把HTTP设计的如此简单。
但是为了实现保持状态的功能,便引入了Cookie机制。
3. 告知服务器意图的HTTP方法
GET:获取资源
POST:传输实体主体
PUT:传输文件,像FTP协议的文件上传一样
HEAD:获得报文首部,和GET方法一样,只是不返回报文主体部分。用于确认URI的有效性及资源更新日期等。
DELETE:删除文件,与PUT相反的方法。
OPTIONS:询问支持的方法,查询针对URI指定的资源支持的方法。
TRACE:追踪路径,让Web服务端将之前的请求通信环回给客户端的方法。容易引发XST攻击,通常不会用到。
CPMMECT:要求用隧道协议连接代理。要求与代理服务器使用隧道协议进行TCP通信,通常使用SSL和TLS协议把通信内容加密后经过网络隧道传输。
目前大部分用的HTTP协议都是1.1版本。
4. 持久连接节省通信量
HTTP协议初始版本中,每进行一次HTTP通信就要断开一次TCP连接。
随着HTTP普及,文档中包含大量图片的情况多了起来,通信量大幅度增加。
4.1 持久连接
在HTTP/1.1中,所有的默认连接都是持久连接。
Keep-Alive: timeout=20 表示时间为20s的持久连接。
4.2 管线化
从前发送请求后需要等待并收到响应才能发送下一个请求。管线化技术出现后,不用等待响应亦可直接发送下一个请求。
4.3 使用Cookie的状态管理
Cookie 会根据从服务器端发送的响应报文内的一个叫做 Set-Cookie 的 首部字段信息,通知客户端保存 Cookie。当下次客户端再往该服务器 发送请求时,客户端会自动在请求报文中加入 Cookie 值后发送出 去。
服务器端发现客户端发送过来的 Cookie 后,会去检查究竟是从哪一 个客户端发来的连接请求,然后对比服务器上的记录,最后得到之前 的状态信息。
IP(Internet Protocol)
FTP(File Transfer Protocol,文件传输协议)
DNS(Domain Name System,域名系统)
TCP(Transmission Control Protocol,传输控制协议)
UDP(User Data Protocol,用户数据报协议)
MAC 地址(Media Access Control Address)
字节流服务(Byte Stream Service)
SSL(Secure Sockets Layer,安全套接层)
TLS(Transport Layer Security,传输层安全)
SYN(synchronize)
ACK(acknowledgement)
URL(Uniform Resource Locator)
URN ( Universal Resource Name)
读书笔记---<<图解HTTP>>(一)的更多相关文章
- 《html5 从入门到精通》读书笔记(一)
今天看了<html5 从入门到精通>这本书,感觉阅读下来很舒心,不像阅读其他书籍很揪心.html增加的知识点,我觉得非常有价值,看完几章记录了一些内容,不但能巩固,也为下次遗忘知识点做好准 ...
- HTML5从入门到精通(明日科技) 中文pdf扫描版
HTML5从入门到精通(明日科技) 中文pdf扫描版
- HTML5从入门到精通(千锋教育)免费电子版+PDF下载
本书是HTML5初学者极好的入门教材之一,内容通俗易懂.由浅入深.循序渐进.本书内容覆盖全面.讲解详细,其中包括标签语义化.标签使用规范.选择器类型.盒模型.标签分类.样式重置.CSS优化.Photo ...
- Unity Shader入门精要读书笔记(一)序章
本系列的博文是笔者读<Unity Shader入门精要>的读书笔记,这本书的章节框架是: 第一章:着手准备. 第二章:GPU流水线. 第三章:Shader基本语法. 第四章:Shader数 ...
- Oracle从入门到精通----学习笔记
书名:<Oracle从入门到精通:视频实战版>秦靖.刘存勇等编著 第4章 SQL基础 1.SQL语言分类 数据定义语言 --- DDL,Data Definition Language 数 ...
- MySQL数据库应用 从入门到精通 学习笔记
以下内容是学习<MySQL数据库应用 从入门到精通>过程中总结的一些内容提要,供以后自己复现使用. 一:数据库查看所有数据库: SHOW DATABASES创建数据库: CREATE DA ...
- Unity Shader入门精要读书笔记(二)UnityShader概述
第三章<UnityShader概述>的读书笔记: 1.Unity Shader模板提供了几种选择: 标准光照模型(新添加的基于物理的渲染方法) 不含光照的基本的顶点.片元着色器 屏幕后处理 ...
- 《html5 从入门到精通》读书笔记(二)
接着上面继续记录笔记,这次要记的知识点比较多...记录下我认为比较重要的东西. 一.表单属性 1.autocomplete属性 该属性规定form或input域应该拥有自动完成功能. <form ...
- 《html5 从入门到精通》读书笔记(三)
二.标签详解 标签 描述 4 5 <form> 定义表单. 4 5 <h1> to <h6> 定义标题1到标题6. 4 5 <head> 定义关于文档的 ...
- 《HTML5 CANVAS基础教程》读书笔记
一.HTML5简介 1.HTML5新特性 1)结构元素:section,header,hgroup,footer,nav,article,aside, 2)内容元素:figure,figcaption ...
随机推荐
- leetcode — palindrome-partitioning-ii
import java.util.Arrays; /** * * Source : https://oj.leetcode.com/problems/palindrome-partitioning-i ...
- Docker Compose 引用环境变量
在项目中,往往需要在 docker-compose.yml 文件中使用环境变量来控制不同的条件和使用场景.本文集中介绍 docker compose 引用环境变量的方式.说明:本文的演示环境为 ubu ...
- [一]class 文件浅析 .class文件格式详解 字段方法属性常量池字段 class文件属性表 数据类型 数据结构
前言概述 本文旨在讲解class文件的整体结构信息,阅读本文后应该可以完整的了解class文件的格式以及各个部分的逻辑组成含义 class文件包含了java虚拟机指令集 和 符号表 以及若 ...
- 巨杉数据库加入CNCF云原生应用计算基金会,共建开源技术生态
近日,巨杉数据库正式加入全球顶级开源社区,云原生应用计算基金会 (Cloud Native Computing Foundation,以下简称CNCF),成为CNCF基金会会员,是中国最早加入的开源云 ...
- Node.js 应用:Koa2 使用 JWT 进行鉴权
前言 在前后端分离的开发中,通过 Restful API 进行数据交互时,如果没有对 API 进行保护,那么别人就可以很容易地获取并调用这些 API 进行操作.那么服务器端要如何进行鉴权呢? Json ...
- 第一册:lesson109.
原文: A goof idea question:What does Jane have with her coffee? Shall I make some coffe, Jane? That's ...
- Java开发笔记(七十三)常见的程序异常
一个程序开发出来之后,无论是用户还是程序员,都希望它稳定地运行,然而程序毕竟是人写的,人无完人哪能不犯点错误呢?就算事先考虑得天衣无缝,揣着一笔巨款跑去岛国买了栋抗震性能良好的海边别墅,谁料人算不如天 ...
- Android项目刮刮奖详解(三)
Android项目刮刮奖详解(二) 前言 上一期我们已经实现了一个简易的刮刮卡功能,这一期我们来将其完善一下 目标 将刮刮奖的宽高改为合适高度 将刮刮奖位置居中 将信息层的图片换成文字(重点) 实现 ...
- 【Spring】Autowired原理及与Resource注解区别
Autowired注解 Autowired顾名思义,表示自动注入,如下是Autowired注解的源代码: @Target({ElementType.CONSTRUCTOR, ElementType.M ...
- python爬虫项目(scrapy-redis分布式爬取房天下租房信息)
python爬虫scrapy项目(二) 爬取目标:房天下全国租房信息网站(起始url:http://zu.fang.com/cities.aspx) 爬取内容:城市:名字:出租方式:价格:户型:面积: ...