注:HTTP于1990年问世,但是那时候没有作为标准被建立,统称为HTTP0.9。
计算机与网络设备相互通信,双方必须基于相同的方法,比如如何探测通信目标、哪一方先发起、使用哪种语言进行通信、怎样结束通信、也包括不同硬件、操作系统之间的通信这些都需要一定的规则。我们把这种规则统称为协议。
我们通常使用的网络是在TCP/IP 协议族的基础上运作的,而HTTP属于它们内部的一个子集。
TCP/IP 协议族是分层的,按照层次从上而下分别为:应用层、传输层、网络层、数据链路层。
应用层
应用层决定了向用户提供应用服务时通信的活动。预存了各类通用的应用服务如:FTP(文本传输协议)和DNS(域名系统)服务等,HTTP协议也处于该层。
传输层
传输层对上层应用层提供处于网络连接中的两台计算机之间的数据 传输。(有两个性质不同的协议: TCP传输控制协议 和 UDP 用户数据报协议)。
网络层
网络层用来处理在网络上流动的数据包(数据包是网络传输最小的数据单位)。该层规定了通过怎样的传输路线到达对方计 算机,并把数据包传送给对方。
数据链路层
用来处理连接网络的硬件部分(包括控制操作系统、硬件的设备驱 动、NIC网卡及光纤等 物理可见部分)。

当web发起请求时,应用层会把客户端HTTP的请求数据收到一起给到传输层,这时传输层(TCP)会将收到的HTTP请求报文进行分割,并在各个报文上打上标记序号和端口号后转发给网络层。 在网络层(IP协议)增加作为通信地址的mac地址后转发给链路层。

利用TCP/IP 协议族进行通信时,发送端会从应用层从上往下走,每经过一层时会被打上一个该层的首部信息。而接受端会从数据链路层从下往上走,每经过一层时就会吧对应的首部去掉。
对在 TCP/IP 协议族中与 HTTP 密不可分的 3 个协议 IP、TCP 和 DNS。
IP协议
IP协议位于网络层,主要负责传输。
IP协议指明了节点被分配到的地址,而要保证传送到达还需要IP地址和MAC地址(IP地址可变,MAC地址基本不变),有了这两个必要条件通常也不能直接传输送达,还需要经过多台计算机和网络设备进行中转才能到达,而在中转的过程中会利用下一站中转设备的 MAC 地址采用ARP 协议(是一种用以解析地址的协议,根据通信方 的 IP 地址就可以反查出对应的 MAC 地址)进行搜索下一个中转目标。

TCP 协议
TCP位于传输层,提供可靠的字节流服务(将大块数据分割为报文段为单位的数据包,并确保传送给对方)。
为了确保传输可靠TCP采用三次握手策略:

首先发送端发送一个带SYN 标志的数据包给对方,接收端收到后回传一个带有SYN/ACK 标志的数据包以示传达确认信息。最后发送端再回传一个带 ACK 标志的数据包,结束。
DNS 服务
DNS 服务位于应用层。提供域名到 IP 地址之间的解析服务。
用户通常使用主机域名或者域名访问对方的计算机,而计算机更擅长处理数字。为了解决这个问题DNS 服务应运而生。DNS 协议提供通过域名 查找 IP 地址,或逆向从 IP 地址反查域名的服务。

下面看下在使用HTTP协议通信过程中,IP 协议、TCP 协议和 DNS 服务各自发挥了哪些作用:
