【图解Http 学习摘要】一、http介绍、TCP/IP 协议族
前言
翻阅【图解http】这本书,学习http,记录摘要。
学习目的就不用多说了,作为测试人员接触最多的就是web、http,多写了解,只有好处没有坏处。
此外,这一项是面试高频问题,比如:输入URL看到网页,背后经历什么、三次握手、四次挥手介绍一下?
如果你现在说不上来,那么还是建议花点时间去学习了解一下。
另外,很多大厂的jd里对此也有着明确的要求。
图里还圈了一下 leetcode,如果要面大厂,在线做题是必考项了。对于测试人员来说,可以刷刷 LeetCode 上简单难度即可。
一、HTTP 介绍
HTTP (全称 HyperText Transfer Protocol),是一种协议,叫超文本传输协议。
我们在使用浏览器访问web的时候,正是基于了这种协议,完成了从客户端到服务器端的一系列运作流程,也就是说,web是建立在http协议上通信的。
1. http的诞生
起初,互联网还只属于少数人,这时候互联网处于黎明期,1989年3月,HTTP 诞生。
先驱者们最初的设想是:借助多文档之间相互关联形成的超文本(HyperText),连成可以互相参阅的WWW(World Wide Web),即万维网。
关于WWW,有3项构建技术:
- HTML:把 SGML(Standard Generalized Markup Language,标准通用标记语言)作为页面的文本标记语言。
- HTTP:作为文档传递协议。
- URL:统一资源定位符(Uniform Resource Locator)。
WWW 这个名称,是web浏览器当年用来浏览超文本的客户端应用程序时的名称。现在,则用来表示这一系列的集合,也可以简称为 Web。
2. http的成长
- HTTP/0.9:http于1990年问世,那时候还没有作为正式的标准,所以就代表 HTTP/1.0 以前的版本。
- HTTP/1.0:1996年5月,http正式作为标准,版本命名为 HTTP/1.0。
- HTTP/1.1:1997年1月公布,是目前主流的http协议版本。
新一代的 HTTP/2.0 正在制定中,但是要达到较高的使用覆盖率,还需要一定的时间。
二、TCP/IP 协议族
在进一步了解http之前,还有必要先了解下 TCP/IP 协议族。因为我们通常使用的网络是在 TCP/IP 协议族的基础上运作的。
1. 什么是 TCP/IP 协议族
计算机与网络设备相互通信,双方就要基于相同的方法,遵循一种规则,这种规则就可以称为 协议(protocol)。
但是在协议中内容有很多,从电缆规格到 IP地址 选定方法、寻找异地用户的方法、双方建立通信的顺序等等。
于是,把这些与互联网相关联的协议集合起来,总称为 TCP/IP。
2. TCP/IP 通信传送过程
TCP/IP 协议族里重要的一点就是分层。把各层之间的接口部分规划好之后,每个层次内部的设计就能够自由改动,设计也变得相对简单了。
- 应用层:决定了向用户提供应用服务时通信活动。http 协议就处于该层。
- 传输层:提供处于网络连接中的两台计算机之间的数据传输。TCP 传输控制协议 就处于该层。
- 网络层:处理网络上流动的数据包。IP 就处于该层。
- 链路层:处理网络连接的硬件部分。比如:硬件的设备驱动、网络适配器、网卡、光纤等物理可见部分。
利用 TCP/IP 协议族进行网络通信时,会通过分层顺序与对方进行通信。
发送端从应用层往下走,接收端则往应用层往上走。比如,现在向一个地址发送请求,想看到web页面:
- 发送 http 请求。
- 为了传输方便,在传输层(TCP 协议)把从应用层处收到的数 据(HTTP 请求报文)进行分割,并在各个报文上打上标记序号及端口号后转发给网络层。
- 在网络层(IP 协议),增加作为通信目的地的 MAC 地址后转发给链 路层。
- 接收端的服务器在链路层接收到数据,按序往上层发送,一直到应用层。
每层打标
发送端在层与层之间传输数据时,每经过一层时必定会被打上一个该 层所属的首部信息。
反之,接收端在层与层传输数据时,每经过一层 时会把对应的首部消去。