HTTP基础知识汇总

HTTP 是什么

HTTP是一种超文本传输协议,用于完成客户端和服务器端等等一系列的运作流程。而协议指的是规则的约定。可以说,Web 是建立在 HTTP 协议上进行通信的。

HTTP的诞生

我相信大家也是这样,在学一门技术之前都会去了解一下它的历史,下面来看看 HTTP 的发展史。

HTTP 诞生于 1989 年 3 月。是一个名叫蒂姆伯纳斯-李的哥们儿提出的,最初设想的基本理念是:借助多文档之间相互关联形成的超文本,连成可相互参阅的 WWW(World Wide Web,万维网)。简称 Web。

HTTP 0.9 在 1990 年问世。那时候的 HTTP 还没有作为正式的标准被建立。

HTTP 1.0 在 1996 年 5 月 正式作为标准。该协议标准现在仍然被广泛使用在服务器端。

HTTP 1.1 在 1997 年 1 月公布为当前主流的 HTTP 协议版本。

HTTP 2.0 在 2012 年 3 月 征集建议。

HTTP 2.0 在 同年的 9 月份 发布了第一个草案。

HTTP 2.0 在 2014 年 11 月实现了标准化。

了解 TCP/IP

在理解 HTTP 之前,我们先简单的来了解一下 TCP/IP 协议族。一般使用的网络都是在 TCP/IP 协议的基础上运作的,而 HTTP 属于它内部的一个子集。

TCP/IP 协议族

在计算机和网络设备进行互相通信时,双方都必须基于相同的方法。比如,如何探测到通信目标,是哪边先发起通信、用什么语言进行通信、怎样结束通信等等一些规则都是先要确定好的。不同的硬件、操作系统之间的通信,所有的这一切都需要一种规则。而这种规则称为协议

协议中包括:从电缆的规格到 IP 地址的选定方法、寻找异地用户的方法、双方建立通信的顺序,以及 Web 页面显示要处理的步骤,等等。将这些相关联的协议集合起来总称为 TCP/IP。

TCP/IP 模型各层作用

TCP/IP 重要的点就是分层。有以下4层:应用层、传输层、网络层和数据链路层

 

下面来介绍各层的作用。

  • 应用层:应用层决定了向用户提供应用服务时通信的活动。比如,FTP(文件传输协议)和 DNS(域名解析系统)。HTTP 协议也在该层。

  • 传输层:传输层对上层应用层,提供处于网络连接中的两台计算机之间的数据传送。该层有两个不同的协议:TCP 传输控制协议和 UDP 用户数据协议。

  • 网络层:网络层用来处理在网络上的数据包。数据包是网络传输的最小数据单位。网络层的作用就是在多条路线中选出一条传输路线进行数据传输。

  • 链路层:用来处理连接网络的硬件部分。包括什么操作系统、硬件的设备、什么路由器啊之类的等等,都属于该层。

TCP/IP 层次化的好处是:如果互联网由一个协议统一规划,某个地方需要改变设计时,就必须将所有部分整体替换掉。而分层之后只需要把变动的层替换掉。把各层之间的接口部分规划好之后,每层内部的设计就可以自由改动。比如,处于应用层上的应用可以只考虑分配给自己的任务,不用去考虑其他的问题。

TCP/IP 通信传输流

TCP/IP 协议进行通信时,会通过分层顺序和对方进行通信。客户端从应用层往下走,服务器端则从链路层往上走。看下面的图。

 

  1. 首先客户端在应用层发出一个 HTTP 请求。

  2. 接着,在传输层接收到应用层的数据后进行分割,给每个报文打上标记序号以及端口号转发给网络层。

  3. 在网络层,添加通信目的地的 MAC 地址后转发给链路层。

  4. 接收端(也叫服务器端)的服务器在链路层接收到数据,按次序向上层发送,一直到应用层。传输到应用层才算真正接收到客户端发过来的 HTTP 请求。

和HTTP相关的协议

在HTTP客户端向服务器端发送报文之前,需要用到 IP、TCP、DNS 这三个和 HTTP 密不可分的协议。

IP 网络协议

IP(Internet Protocol)网络协议处于网络层。IP协议的作用是把各种数据包传送给对方。但要保证正确的传送给对方,其中两个重要的条件是 IP 地址和 MAC 地址。可以把它想象成你家的地址,或者说你的电话号码。

IP 地址指的是节点被分配到的地址,MAC 地址指的是网卡所属的固定地址。IP 地址可以跟 MAC 地址进行配对。IP 地址是可变的,MAC 地址是不可变的。

IP 和 IP地址别搞混了,IP是一种协议。而IP地址是则是每台计算机的标识

ARP 协议

IP 间的通信依赖 MAC 地址。在网络上通信的双方很少会在同一个局域网,一般都是经过多台计算机或者网络设备中专才能连接到对方。而在中转的过程中,会利用下一站中转设备的 MAC 地址进行搜索下一个中转目标。而这时,会用到ARP协议ARP协议是一种用来解析地址的协议,通过通信方的 IP 地址就能反查出对应的 MAC 地址

在到达通信目标前的中转过程中,计算机和路由器只能获取粗略的传输路线,这种机制叫做路由选择。

就跟你在淘宝上买东西是一样的道理。比如,你在淘宝网买了件衣服,快递公司会根据你的地址进行送货,在送货这个过程中,并不是直接送到你手里。而是经过各种什么杭州中转站然后又到深圳中转站,之后才送到你手里。

TCP 协议

TCP 协议处于传输层,主要的作用是提供可靠的字节流服务。字节流服务指的是,为了方便传输,将大块的数据分割成以报文段为单位的数据包进行管理。而可靠性的传输服务指的是,能够把数据准确可靠的传给对方。

为了准确的将数据传送给对方,三次握手就出现了。下图展示这个过程。

 

  1. 第一次握手:客户端先发送一个带 SYN 标志的数据包给对方。

  2. 第二次握手:服务器端收到之后,回传一个带有 SYN/ACK 标志的数据包表示传达确认信息。

  3. 第三次握手:最后,客户端再传回一个带 ACK 标志的数据包,表示 “握手” 结束。

DNS 服务

DNS 服务和 HTTP协议一样,处于应用层。它主要的作用是,将域名解析成 IP 地址。DNS 协议可以通过域名查找 IP 地址,也可以通过 IP 地址反查域名的服务。

 

下面展示每个协议和HTTP协议的关系。

 

什么是URL和URI?

  • URL指的是统一资源定位符,是访问Web网站需要输入的网站地址。例如,http://www.tutu.com

  • URI指的是统一资源标识符,全称为Uniform Resource Identifier,它的作用是区分互联网中的不同资源。比如,HTML 文档、图像、视频片段、程序等等。而 URL 是 URI 的一个子集。

URI格式

下图展示了 URI 的格式。

 

  • 协议名http:https:表示协议名称。不区分字母大小写,最后加上//

  • 登录信息user:pass@ 表示获取服务器资源的用户和密码。但不推荐使用,因为不安全。

  • 服务器地址:服务器地址有三种:

    • 以域名的形式www.tutu.com;

    • 以 IPv4 192.168.0.1地址名;

    • [0:0:0:0:0:0:1]这种方括号括起来的 IPv6 地址;

  • 服务器端口号:8080表示端口号。

  • 文件路径/html/index.html表示服务器文件路径,资源的访问位置。

  • 查询字符串?userId=1表示文件路径中的参数。?后面以key=value的形式。如果后面还需要加参数,用&拼接。

  • 片段标识符#cn1表示文件中的某个位置。就是平时的网页锚点定位。

HTTP基础

HTTP 是一种无状态的协议,对发送过的请求/响应都不做持久化处理。

持久化连接

HTTP 1.1 中的所有连接都是默认开启的(keep-alive)。通过请求/响应头部的Connection字段可以查看是否开启持久化连接(后面会介绍该字段的值),而在 HTTP1.0中是默认关闭的(close)。

它的特点是,不管是客户端还是服务器端,只要其中的一端没有提出断开连接,那么就会保持 TCP 连接。好处是,减少 TCP 连接的重复建立和断开连接造成的额外开销,减轻服务器压力。这样使得 HTTP 请求和响应速度更快结束,也提高页面的显示速度。

管线化

管线化是不用等待响应就可以发送下一个请求,也就是并行处理。不用一个接一个的等待响应,管线化比持久化连接还要更快。

HTTP 报文

HTTP 一共有两种报文:请求报文、响应报文。报文又分为报文头部和报文主体,报文主体是可选的。报文包含了以下三个部分。

  • 起始行start line)有以下两种类型。

    • 请求行:请求的方法、请求的 URL、HTTP的版本

    • 响应行:HTTP 版本、状态码

  • 头部字段header):一些头部信息,以key: value的形式。

  • 主体body):被发送的数据。

 

这张图是以请求报文为例。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值