文章目录

  • 通过 HTTP 协议访问 Web
  • HTTP 制定初衷
  • 网络基础 TCP/IP
  • IP、TCP 和 DNS
    • 负责传输的 IP 协议
    • 确保可靠性的 TCP 协议
    • 负责域名解析的 DNS 服务
    • 各种协议与 HTTP 的关系
    • URI 和 URL
      • URI 格式
  • HTPP/1.1 协议结构
    • HTTP 状态码
    • HTTP 的缺点
    • HTTP + 加密 + 认证 + 完整性保护 = HTTPS
    • HTTP 的瓶颈
      • Ajax 的解决办法

通过 HTTP 协议访问 Web

提问: 在 Web browser 地址栏输入 URL 时, Web 页面时如何呈现的?
回答: Web 浏览器从 Web 服务器中获取服务器相关资源(resorce)等信息,其中 Web使用 HTTP(超文本传输协议) 协议作为规范,来完成客户端到服务端的整个过程,因此 Web 是建立在 HTTP 协议上通信的。

HTTP 制定初衷

当年 HTTP 协议的出现主要是为了解决文本传输的难题 ,协议本身非常简单,但现在 HTTP 协议已经超出 Web 这个框架的局限。

网络基础 TCP/IP

TCP/IP 是互联网相关的各类协议族的总称。

通常我们使用的网络(包括互联网)是在 TCP/IP 协议族的基础上运作,而 HTTP 属于它内部的一个子集。

TCP/IP 协议族的层次:应用层、传输层、网络层和数据链路层。层次化的优点:如果互联网只由一个协议统筹,当某个地方需要更改时,需要整个替换;分层后只需要替换掉响应的层。

TCP/IP 协议族各层的作用如下:

  • 应用层:应用层决定向用户提供给服务是通信的活动,如 FTP(文本传输协议)、DNS(域名系统)服务以及 HTTP 协议。
  • 传输层:对应用层,提供处于网络连接中的两台服务器之间的数据传输,传输层协议有 TCP(传输控制协议)、UDP(用户数据报协议)。
  • 网络层:用来处理在网络上流动的数据包。数据包是网络传输的最小数据单位。该层规定了通过怎样的路径到达对方的计算机,并把数据包传送给对方。
  • 数据链路层:用来连接网络的硬件部分。

TCP/IP 通信传输过程:
发送端层与层之间传输数据时,经过一层就打上该层首部信息
接收端通过一层删除对应层的首部信息,这种数据信息包装称为封装。

IP、TCP 和 DNS

负责传输的 IP 协议

IP 网际协议位于网络层,其作用是把各种数据包传送给对方。而要保证确实传送到对方那儿需要满足各类条件,其中最重要的两个条件是 IP 地址和 MAC 地址。

IP地址指明了节点被分配的地址,MAC 地址是指网卡所属的固定地址。 IP 地址可与 MAC 地址配对。IP 地址可变换,但 MAC 地址基本不变。

IP 间的通信依赖于 MAC 地址,而 ARP 协议是用以解析地址的协议,可以根据通信方的 IP 地址反查出对应的 MAC 地址。

确保可靠性的 TCP 协议

TCP 位于传输层,提供可靠的字节流服务。

字节流服务是指为了方便传输,将大块数据分割成以报文段为单位的数据包进行管理。

可靠的传输服务是指能够把数据准确地传给对方。

TCP 协议为了更容易传送大数据才将数据分割,而 TCP 协议能够确认数据最终是否送达到对方。

为确保准确无误将数据传到目标处, TCP 协议采用了三次握手策略。握手过程使用了 TCP 的标志—— SYN 和 ACK。若某个阶段莫名中断,TCP 协议会再次以相同的顺序发送相同的数据包。

负责域名解析的 DNS 服务

DNS 服务和 HTTP 协议一样位于应用层。它提供域名到 IP 地址之间的解析服务。

计算机既可以被赋予 IP 地址,也可以被赋予主机名和域名。用户通常使用主机名或域名来访问对方的计算机。与 IP 地址相比,字母配合数字的主机名更符合人类记忆习惯。

但计算机去理解主机名相对困难,因此 DNS 服务提供通过域名查找 IP 地址,或者逆向从 IP 地址反查域名的服务。

各种协议与 HTTP 的关系

URI 和 URL

URI (统一资源标识符) : 由某个协议方案表示的资源的定位标识符。协议方案是指访问资源资源是所使用的协议类型名称(如:http、ftp、file 等)

URL(统一资源定位符) : 使用 Web 浏览器等访问 Web 页面时需要输入的网页地址。

URI 格式

HTPP/1.1 协议结构

  • HTTP 协议用于客户端和服务器端之间的通信

  • 通过请求和响应达成通信

  • HTTP 是不保存状态的协议,意思是 HTTP 协议自身不具备保存之前发送过的请求或相应的功能

  • HTTP 协议使用 URI 定位互联网上的资源

  • 告知服务器意图的 HTTP 方法, GET:获取资源; POST:传输实体主体

  • Cookie 的状态管理,解决 HTTP 不保留状态的问题,通过在请求和响应报文中写入 Cookie 信息来控制客户端的状态。

HTTP 状态码

HTTP 的缺点

  • 通信使用明文,内容可被窃听
  • 不验证通信方身份,有可能遇到伪装
  • 无法证明报文的完整性,因此有可能被篡改

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

  • HTTP 加上加密处理和认证以及完整性保护之后即时 HTTPS
  • HTTPS 是身披 SSL 外壳的 HTTP

那么为什么不一直用 HTTPS,因为加密通信会消耗更多的 CPU 及内存资源,非敏感信息采用 HTTP,包含个人信息时使用 HTTPS 加密通信

HTTP 的瓶颈

  • 一条连接一个请求
  • 请求只可起于客户端
  • 请求 / 响应未经压缩就发送
  • 首部冗长
  • 可任意选择数据压缩格式,非强制压缩

Ajax 的解决办法

和以前的同步通信相比,由于它只更新一部分页面,响应中传输的数据量会因此而减少

未完待续…

【图解 HTTP】 读书笔记相关推荐

  1. 图解HTTP读书笔记(十)

    图解HTTP读书笔记(十) Web的攻击技术 HTTP协议本身并不存在安全性问题,因此协议本身几乎不会成为攻击对象.应用HTTP协议的服务器和客户端,以及运行在服务器上的Web应用资源才是攻击目标. ...

  2. 《算法图解》读书笔记

    这是一本很入门的算法书,介绍的东西还算简单明了,大体补充了一些自己没理解的东西. 粗略地看了一下,感觉还是"纸上得来终觉浅,绝知此事要躬行!" <<算法图解>&g ...

  3. 《算法图解》读书笔记—像小说一样有趣的算法入门书

    前言 学习算法课程的时候,老师推荐了两本算法和数据结构入门书,一本是<算法图解>.一本是<大话数据结构>,<算法图解>这本书最近读完了,读完的最大感受就是对算法不再 ...

  4. 《TCP/IP图解》读书笔记

    看这本书的目的: 了解计算机之间是怎么通信的 熟悉TCP/IP协议 后面就这两个目的进行展开,要达到这两个目的,读这本书,学到了哪些知识. 一.计算机之间是怎么通信的 先来了解下面几个概念,中继器,二 ...

  5. 图解机器学习读书笔记-CH6

    鲁棒学习 最小二乘法易受异常值影响 异常值处理: 提前剔除异常值再训练 提高异常值的鲁棒性--鲁棒学习算法 1. \(L_1\)损失最小化 第\(r_i\)个样本的残差: L2损失随残差呈平方级增长: ...

  6. C#图解教程读书笔记(第3章 类型、存储及变量)

    1.C#的中的数值不具有bool特性. 2.dynamic在使用动态语言编写的程序集时使用,这个不太明白,看到后面需要补充!! 动态化的静态类型 3.对于引用类型,引用是存放在栈中,而数据是存放在堆里 ...

  7. C#图解教程读书笔记(结构)

    结构是值类型 分别声明一个类和一个结构,实例化后,结构直接保存在堆中. 所以当用一个对象给另一个对象赋值时会有不同: 在赋值后类类型是指向堆里同样的部分,所以cs2和cs1本质上是一样的.而结构类型则 ...

  8. C#图解教程读书笔记(数组)

    数组的类型 交错数组每个子数组的长度可以不同 数组是对象 数组是引用类型,因而数组的内容存储在堆上. 一维数组或矩形数组声明及其实例化 int[] arr2 = new int[4]; MyClass ...

  9. C#图解教程读书笔记(深入理解类)

    类的实例化 类的静态成员 静态成员可以从类的外部访问:D.Mem2,D为类名.而且静态成员即使实例销毁依然存在且可访问. 静态函数成员 不能访问实例成员,但能访问静态成员. 成员常量 成员常量类似与静 ...

  10. 图解设计模式读书笔记(十三)——Mediator(仲裁者)模式

    使用场景: Mediator模式适用于多组件之间存在制约关系的情景.例如Gui开发中,各种组件是独立的,但开发的界面中各个组件存在制约关系.书中提到的登陆框的例子,便是这种情景. 类关系图: 仲裁者M ...

最新文章

  1. mysql联表查询多记录显示_数据库:MySQL(多表的表记录的查询)(三)
  2. curl下载失败返回0_curl返回常见错误码
  3. 非常好用的卸载软件——Geek Uninstaller【官网、介绍、使用演示(卸载“格式工厂”)、软件包下载地址(百度网盘)】
  4. mysql-connector-java.jar乱码_jdbc连接数据库,中文出现乱码的问题
  5. 解答网友提问:如何构建动态表达式实现高级查询服务
  6. 【渝粤教育】电大中专建设工程法规 (2)作业 题库
  7. opensplice dds v6.3.2_DDS生态社区带你解读|Filecoin创始人胡安:数据存储需求未来会增长3倍...
  8. POJ 3172 (认真读题的题)
  9. php滚动图代码,JS上下、左右滚动代码(支持图片滚动)
  10. yum mysql my.ini_Centos7 yum安装mysql
  11. 基于SSH框架社区智能化管理系统答辩PPT模板
  12. High Availability手册(3): 配置
  13. 液晶接口系列——MIPI之DSI协议讲解
  14. Vue 的最大的优势是什么?
  15. 单元格中添加自适应斜线
  16. jy-12-SPRINGMYBATIS02——云笔记06-刘苍松
  17. 浅谈手机系统——iOS
  18. 函数原型中int *arr和int arr[]
  19. 如何“看懂”图片?谈出海企业的视觉识别体系搭建
  20. 初级中级高级测试工程师的区别

热门文章

  1. 英文paper常见同义词转换总结
  2. AJAX框架眼镜盒可爱,亲爱的顾客,这是一套框架眼镜日常护理的方法,请您收好!​...
  3. 青蛙与蚊子——C++练习题
  4. 对PostgreSQL源代码中的is_pushed_down的理解
  5. gks的定义计算机图形学,计算机图形学(概念)
  6. 智能车的“耳朵”电磁检测传感器
  7. 阿里首推“数据安全合作伙伴计划” 构建数据安全生态
  8. 关于docker报错:No connection could be made because the target machine actively refused it.
  9. 使用Java故意消耗Cpu和内存的代码
  10. 如何使用HTTP代理促进业务