HTTP (一)
当你在使用浏览器浏览网页,输入一个 url 的时候其实你就开始在接触 http,但是我们并不会去考虑一个 url 经历了怎样的过程才会出现网页,因为网页就在哪里,始终都会出来(哈哈哈哈)
一.什么是 HTTP
HTTP ,全称 HyperText Transfer Protocol,超文本传输协议
在了解 HTTP 之前,我们还需要知道 TCP/IP,我们通常使用的网络其实是在 TCP/IP 协议族的基础上运作的,而 HTTP 只是属于它内部的一个子集
二.TCP/IP
TCP/IP 其实是互联网相关各类协议族的总称
计算机设备要怎么和网络设备相连接,自然要规定好以何种方式进行相互通信,谁发起通信,使用什么标准,什么语言等,这一切都需要协议
TCP/IP协议族按层次分为四层:应用层、传输层、网络层、数据链路层
接下来来说明一下各层的作用:
应用层
HTTP就处于该层,应用层主要是决定向用户提供应用服务时通信的活动,比如 FTP 和 DNS
传输层
传输层是相对上层应用层,提供处于网络连接的两台计算机之间的数据传输
有着两个性质不同的协议:TCP 和 UDP
网络层
主要是处理网络上流动的数据包,规定了传输路线
数据链路层
主要是处理网络的硬件部分,包括操作系统,硬件驱动等关于硬件范畴的都属于其范围内
在数据传输中,发送端在层与层之前传输数据时,每经过一层必然被打上一个属于一个该层的首部信息,反之接收端传输回去时,每经过一层都会把首部消去。
我们研究 HTTP 的话,他必然离不开 IP,TCP, DNS 3个协议,下面我们就来介绍一下
IP 负责传输,IP位于网络层,IP 不同于 IP 地址,是一种协议,基本上所有的网络系统都要用到,其作用就是把各种数据包传送给对方,为了确保传送成功,有两个重要的条件,那就是 IP 地址和 MAC 地址,其中 IP 地址就是节点被分配到的地址,MAC 为网卡所属的固定地址,MAC 地址一般不会更改,IP 地址可能会变化,IP 地址和 MAC 地址之前可以配对,而在互联网的连接中我们会使用一种协议,那就是 ARP 协议来根据 IP 地址来反查出对于的 MAC 地址
TCP 协议确保可靠, TCP 协议位于传输层,提供可靠的字节流服务,那什么是字节流服务,是指为了方便传输,把大块数据分解成报文为单位进行传输,而TCP 最主要的功能是确保数据能安全送达,这就是有名的三次握手
三次握手使用了 TCP的标志 SYN 和 ACK,用文字来说如下:
第一次握手:发送端发送一个带 SYN 标志的数据包给对方
第二次握手:接收端收到后回传一个 SYN/ACK 标志的数据包传达确认信息
第三次握手:发送端再回传一个带 ACK 标志的数据包
握手结束
DNS 服务负责解析域名,和 HTTP 一样,DNS 也是再应用层,DNS 是为了解析域名的,我们知道 IP 地址只是一串数字,用百度举例,百度的 IP 地址是 220.181.57.216,我们更习惯记的是他的域名 www.baidu.com, 所以 DNS 的作用是负责把域名解析成 IP 地址或者 IP 地址解析成域名
综上所述,我们简单了解了 TCP/IP 和 HTTP 之间的联系后,我们可以知道,当我们再网页输入一个 URL 后
首先 DNS 会解析域名为 IP 地址
然后 HTTP 生成针对 WEB 服务器的请求报文
TCP 分割报文成多个序号报文段,确保传输到接收端
IP 协议开始搜索对方地址,通过中转传送
TCP 继续接收到从接收端返回的报文段,按序号重组继续请求
HTTP 对 WEB 服务器请求内容进行处理
请求的处理结果同样经过 TCP/IP 进行回传