了解web及网络基础
从这里开始,接下来的都是关于HTTP的介绍。为了尽可能的理解HTTP协议,笔记将结合图解来描述讲解HTTP。关于web以及HTTP的历史有兴趣的可以自行百度。这里就略过了。
认识HTTP
HTTP是一种超文本传输协议(Hypertext Transfer Protocol),从字面上还可以这样理解:超文本(Hypertext),传输(Transfer),协议(Protocol)。
关系如下:
网络基础TCP/IP
在深入了解HTTP之前,先来了解一下TCP/IP协议族。
通常使用的网络(包括互联网)是在TCP/IP协议族的基础上运作的。而HTTP属于它内部的一个子集。
计算机与网络设备想要互相通信,则双方要基于相同的方法、规则。不同硬件、操作系统之间的通信,这所有的一切都需要一种规则,在这里我们统称为协议(Protocol)。
TCP/IP的分层管理
TCP/IP协议族按层次分别分为4层:应用层、传输层、网络层、数据链路层。
应用层:
决定了向用户提供应用服务是通信的活动.TCP/IP协议族内预存了通用的应用服务.比如,FTP和DNS服务就是其中的两类.HTTP协议也在其中.
传输层:
传输层对应上层应用层,提供处于网络连接中的两台计算机之间的数据传输.
在传输层有两个不同的协议:TCP(传输控制协议)和UDP(用户数据报协议).
网络层:
网络层用来处理在网络上流动的数据包.数据包是网络传输的最小单位.该层规定了通过怎样的路径(所谓的传输路线)到达对方计算机,并把数据包传给对方.
链路层(又名数据链路层,网络接口层):
用来处理链接网络的硬件部分.包括控制操作系统,硬件的设别驱动,NIC(网络适配器,即网卡),以及光纤等物理可见部分.
TCP/IP通信传输流
如上图,利用TCP/IP协议族进行网络通信时,会通过分层顺序与对方进行通信。
用HTTP距离说明,首先作为客户端在应用层发出一个想看某个web页面的请求。
接着为了传输方便,在传输层(TCP协议)把从应用层出收到的数据(HTTP请求报文)进行分割,并在各个报文上打上标记序号以及端口号后转发各网络层。
在网络层(IP协议),增加作为通信目的的MAC地址后转发给链路层。这样一来,发往网络的通信请求就准备齐全了。
接收端的服务器在链路层接收到数据,按顺序往上层发送,一直到应用层,此时服务端才算真正接收到客户端发送过来的请求。
发送端在层与层之间传输数据时,每经过一层时必定会被打上一个该层所属的首部信息。反之,接收端在层与层之间传输数据时,每经过一层时会将对应的首部消去。
这种把数据信息包装起来的做法称为封装。