HTTP的诞生及发展
HTTP是为了知识共享而诞生,最初的设计理念是让远隔两地的研究者们共享知识,借助多文档之间相互关联形成的超文本,连成可相互参阅的 WWW(World Wide Web,万维网)
3项WWW 构建技术
- 作为页面的文本标记语言 HTML(超文本标记语言)
- 作为文档传递协议的 HTTP
- 指定文档所在地址的 URL(统一资源定位符)
现在我们都知道在网页浏览器的地址栏中输入URL可以呈现Web页面
当然Web页面不能凭空显示出来,它是根据浏览器输入的URl,浏览器从web服务器获取文件资源等信息,从而显示出web页面
像这种通过发送请求获取服务资源的web浏览器器等,都称为客户端(client)
从客户端到服务器端获取信息的一系列运作流程,需要双方规定一些规则,以此来告知双方自己需要什么消息,我们可以将这些规则理解为HTTP协议,即HTTP协议就是双方通信的规范。
TCP/IP协议
计算机与网络设备要相互通信,双方就必须基于相同的方法。
早期的计算机网络,都是由各厂商自己规定一套通信协议,互不兼容,带来不同协议之间无法通信的弊端
为了把世界所有不同类型的计算机连接起来,规定了一套全球通用的协议
因为互联网协议包括上百种协议标准,但是最重要的两个协议是TCP和IP协议,所以大家把互联网的协议简称TCP和IP协议
HTTP 属于TCP/IP协议内部的一个子集、一个协议标准
TCP/IP协议重要的一个概念是分层,我们称为TCP/IP模型
分层的好处是,如果某个地方有变动,只需改变某层内部,只需把各层的之间的接口部分规划好,每个层次的内部设计可以随意改动
TCP/IP模型
分层 | 内容 |
---|---|
应用层 | 向用户提供应用服务时通信的活动;FTP(文件传输协议)、DNS服务、HTTP协议等 |
传输层 | 提供处于网络连接中计算机之间的数据传输;TCP(传输控制协议)、UDP(用户数据报协议) |
网络层 | 规定传输路线,传输数据包(数据包是网络传输最小的数据单位) |
链路层 | 处理连接网络的硬件部分 |
TCP/IP通信传输流
TCP/IP协议会通过分层顺序与对方进行通信
- 客户端在应用层发出HTTP请求
- 传输层对从应用层收到的数据(HTTP请求报文)进行分割,在各个报文上打上标记序号、端口号后转发给网络层
- 网络层,增加作为通信目的地MAC地址转发给链路层
- 服务器在链路层收到消息,按层往上发送,直到应用层,最终收到客户端的HTTP请求
发送端在层与层之间传输数据时,每经过一层时必定会被打上一个该 层所属的首部信息。反之,接收端在层与层传输数据时,每经过一层 时会把对应的首部消去
IP、TCP 和 DNS
IP、TCP 和 DNS 是与HTTP密不可分的三个协议,接下来一一说明
负责传输的IP协议
IP协议位于网络层,它的作用是把各种数据包传送给对方
而要保证确实传送到对方那里,需要满足各类条件;其中两个重要的条件是IP地址和MAC地址
IP地址指明节点被分配的地址,MAC地址指网卡所属的固定地址
IP地址可以和MAC地址配对,IP地址可变换,MAC地址基本不会更改确保可靠性的TCP协议
TCP协议位于传输层,提供可靠的字节流服务
字节流服务
字节流服务是指,为了方便传输,将大块数据分割成报文段为单位的数据包进行管理,而TCP协议能够确认数据最终是否发送到对方为了保证通信的可靠性,TCP协议采用了三次握手策略建立连接,TCP协议发送数据包后,会向对方确认是否发送成功
TCP三次握手
我们将发送一次消息称为一次握手
TCP三次握手使用了TCP的标志:SYN 和 ACK
- 发送端首先发送一个带有SYN标志的数据包给对方,确认对方是否可以收到消息
- 对方收到后,返回带有SYN/ACK标志的数据包表示收到消息,你可以跟我通信啦
- 发送端最后发送带ACK标志的数据包,会话结束
若在握手的某个阶段莫名中断,TCP协议会以相同的顺序发送相同的数据包
负责域名解析的DNS服务
DNS服务和HTTP协议一样位于应用层,DNS提供域名到IP地址之间的解析服务
计算机被赋予IP地址,通过IP地址可以访问页面,与IP地址的一组数字相比,域名(字母数字的组合:比如www.baidu.com)更符合人们的记忆习惯,但是计算机擅长处理数字,为了解决这一问题,DNS 服务应运而生
TCP、IP和DNS在使用HTTP协议通信过程中各自发挥的作用