读书笔记---<<图解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 ...
随机推荐
- [ Java面试题 ]并发篇
1.Java内存模型是什么? Java内存模型规定和指引Java程序在不同的内存架构.CPU和操作系统间有确定性地行为.它在多线程的情况下尤其重要.Java内存模型对一个线程所做的变动能被其它线程可见 ...
- k8s运行容器之Job(四)--技术流ken
Job 容器按照持续运行的时间可分为两类:服务类容器和工作类容器. 服务类容器通常持续提供服务,需要一直运行,比如 http server,daemon 等.工作类容器则是一次性任务,比如批处理程序, ...
- C# 跨进程 设置窗口owner
窗口间跨进程通信 1. 发送方 public const int WM_InsertChart_Completed = 0x00AA; //查找窗口 [DllImport("User32.d ...
- [PHP] curl访问https与CA证书问题
CA证书,用来在调用HTTPS资源的时候,验证对方网站是否是CA颁布的证书,而不是自己随便生成的 curl命令1.需要下载CA证书 文件地址是 http://curl.haxx.se/ca/cacer ...
- php设计模式--面向对象编程规范PSR
php业界提出大家要遵循的面向对象编码规范,下面一一列出. PSR-0: 1.命名空间必须与绝对路径一致 2.类的首字母必须大写 3.出入口文件外,其他‘.php’必须只有一个类 PSR-1:基础编码 ...
- Maven项目POM文件错误,提示“Plugin execution not covered by lifecycle configuration”的解决方案
一. 问题 Plugin execution not covered by lifecycle configuration: org.apache.maven.plugins:maven-depend ...
- Python中文词频统计
以下是关于小说的中文词频统计 这里有三个文件,分别为novel.txt.punctuation.txt.meaningless.txt. 这三个是小说文本.特殊符号和无意义词 Python代码统计词频 ...
- Microsoft Dynamics CRM 2015 and Microsoft Dynamics CRM 2016 Performance and Scalability Documentation
摘要: 本人微信公众号:微软动态CRM专家罗勇 ,回复285或者20181126可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me ...
- C++客户端访问WebService VS2008
VS2008及之后的版本已经不支持使用C++开发WEBService服务了,如果要在VS上开发WEBService,需要使用C#开发语言. 一.gSOAP简介 gSOAP编译工具提供了一个基于SOAP ...
- Spark资源调度和任务调度
一.资源调度&任务调度 1.启动集群后,Worker节点会周期性的[心跳]向Master节点汇报资源情况,Master掌握集群资源情况. 2.当Spark提交一个Application后,根据 ...