一、了解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中,所有的默认连接都是持久连接。

Connection:keep-alive

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>>(一)的更多相关文章

  1. 《html5 从入门到精通》读书笔记(一)

    今天看了<html5 从入门到精通>这本书,感觉阅读下来很舒心,不像阅读其他书籍很揪心.html增加的知识点,我觉得非常有价值,看完几章记录了一些内容,不但能巩固,也为下次遗忘知识点做好准 ...

  2. HTML5从入门到精通(明日科技) 中文pdf扫描版

    HTML5从入门到精通(明日科技) 中文pdf扫描版

  3. HTML5从入门到精通(千锋教育)免费电子版+PDF下载

    本书是HTML5初学者极好的入门教材之一,内容通俗易懂.由浅入深.循序渐进.本书内容覆盖全面.讲解详细,其中包括标签语义化.标签使用规范.选择器类型.盒模型.标签分类.样式重置.CSS优化.Photo ...

  4. Unity Shader入门精要读书笔记(一)序章

    本系列的博文是笔者读<Unity Shader入门精要>的读书笔记,这本书的章节框架是: 第一章:着手准备. 第二章:GPU流水线. 第三章:Shader基本语法. 第四章:Shader数 ...

  5. Oracle从入门到精通----学习笔记

    书名:<Oracle从入门到精通:视频实战版>秦靖.刘存勇等编著 第4章 SQL基础 1.SQL语言分类 数据定义语言 --- DDL,Data Definition Language 数 ...

  6. MySQL数据库应用 从入门到精通 学习笔记

    以下内容是学习<MySQL数据库应用 从入门到精通>过程中总结的一些内容提要,供以后自己复现使用. 一:数据库查看所有数据库: SHOW DATABASES创建数据库: CREATE DA ...

  7. Unity Shader入门精要读书笔记(二)UnityShader概述

    第三章<UnityShader概述>的读书笔记: 1.Unity Shader模板提供了几种选择: 标准光照模型(新添加的基于物理的渲染方法) 不含光照的基本的顶点.片元着色器 屏幕后处理 ...

  8. 《html5 从入门到精通》读书笔记(二)

    接着上面继续记录笔记,这次要记的知识点比较多...记录下我认为比较重要的东西. 一.表单属性 1.autocomplete属性 该属性规定form或input域应该拥有自动完成功能. <form ...

  9. 《html5 从入门到精通》读书笔记(三)

    二.标签详解 标签 描述 4 5 <form> 定义表单. 4 5 <h1> to <h6> 定义标题1到标题6. 4 5 <head> 定义关于文档的 ...

  10. 《HTML5 CANVAS基础教程》读书笔记

    一.HTML5简介 1.HTML5新特性 1)结构元素:section,header,hgroup,footer,nav,article,aside, 2)内容元素:figure,figcaption ...

随机推荐

  1. 网络编程第六讲Select模型

    网络模型第六讲Select模型 一丶Select模型是什么 以前我们讲过一个迭代模型.就是只服务一个客户端连接.但是实际网络编程中.复杂的很多. 比如一个 C/S架构程序 (客户端/服务端) 客户端很 ...

  2. 附实例!图解React的生命周期及执行顺序

    本文由云+社区发表 作者:前端林子 1.七个可选的生命周期 可以结合下图来看: (1) componentWillMount() 仅在render()方法前被调用一次,如果在该方法中调用了setSta ...

  3. Orchard学习资料,适合入门上手

    名词解释: http://www.cnblogs.com/esshs/archive/2011/06/01/2067501.html   Orchard如何工作: http://www.cnblogs ...

  4. JavaScript 基础结构

    注释      代码注释可以使用//或者/* */ // 这是一个单行注释 /* * 这是 * 一个 * 多行 * 注释 */ 变量      变量用于存储数据,在同一作用域内变量不得重名,定义语法: ...

  5. Java开发笔记(三十七)利用正则串分割字符串

    前面介绍了处理字符串的常用方法,还有一种分割字符串的场景也很常见,也就是按照某个规则将字符串切割为若干子串.分割规则通常是指定某个分隔符,根据字符串内部的分隔符将字符串进行分割,例如逗号.空格等等都可 ...

  6. (11)Microsoft office Word 2013版本操作入门_word中表格操作

    制作一个如下表格: 1. 插入一个4x4的表格或者手动绘制一个4x4表格. 1.1插入一个4x4表格或者绘制表格的按钮如下图所示 绘制表格,自己手动画比较复杂的表格 1.2对插入的表格:  点击表格的 ...

  7. JavaScript(转载自 计科学院 慕课网)

    什么是脚本语言? ①脚本语言介于HTML和C,C++,Java,C#等编程语言之间 ②脚本语言与编程语言有相似地方,其函数与编程语言类似,也有变量.与编程语言之间最大的区别是编程语言的语法和规则更为严 ...

  8. java.lang.NoSuchFieldError异常

    原因就是主项目的xml文件和库项目中的xml文件 命名一样,导致库项目中的xml文件被主项目覆盖,所以库项目就找不到xml中的相关id,就报异常了.   解决方法:修改主项目中的xml文件命名,不要和 ...

  9. 记录CentOS 7.4 上安装MySQL&MariaDB&Redis&Mongodb

    记录CentOS 7.4 上安装MySQL&MariaDB&Redis&Mongodb 前段时间我个人Google服务器意外不能用,并且我犯了一件很低级的错误,直接在gcp讲服 ...

  10. Docker 创建 Confluence6.12.2 中文版

    目录 目录 1.介绍 1.1.什么是Confluence? 2.Confluence的官网在哪里? 3.如何下载安装? 4.对 Confluence 进行配置 4.1.设置 Confluence 4. ...