HTTP

209 阅读3分钟

什么是HTTP协议

HTTP是HyperText Transfer Protocol的缩写,中文翻译为超文本传输协议。他是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。

说的简单点,其实HTTP协议主要就是用来进行客户端和服务器之间进行通信的标准协议。HTTP主要规定了客户端如何与服务器建立链接、客户端如何从服务器请求数据、服务器如何响应请求,以及最后连接如何关闭。

当我们在浏览器中输入一个url,如http://www.taobao.com ,然后按下回车,一直到页面显示淘宝网的首页的过程就是一次HTTP的网络通信。

这次通信过程中,我们查看淘宝使用的电脑就是客户端,而搭建淘宝网的那些计算机机器就是服务器

这个过程有点像老板通过电话给员工下达命令。当我们在浏览器输入网址并按下回车之后,共发生了以下四件事:

1、建立连接:老板拨通手下员工的电话

2、进行请求:老板提出自己的要求

3、响应:员工应答老板的请求

4、关闭连接:挂断电话

建立连接

老板找出自己公司的总机电话号并拨通,员工接听电话的过程就是建立连接

根据用户输入的URL地址,通过DNS、负载均衡等技术找到一台服务器,客户端与服务器的80端口建立一个TCP链接。

进行请求

电话被接通之后,老板可能要求某个具体员工来进行接听,并且会对该员工下达一些命令,比如帮他取个快递,帮他预订个酒店,帮他收购一家公司等。这个过程就进行请求(request)

客户端向服务器发送消息,请求URL中指定的页面,要求执行指定的操作。

老板对员工下达的命令中,可以分为很多种,比如有些命令只是简单的事情询问、而有些命令则要求员工执行某些决定,如收购公司等。

同样的,HTTP的请求方法也有很多种,主要的有GETPOSTHEAD等。

响应

员工在接收到老板下单的命令后,需要对该命令做出回应。比如直接告知老板他接下来的行程,帮老板预订好酒店后告诉他已经预订成功等。这个过程就是响应(response)

服务器向客户端发送响应。响应以状态码开头。常见的状态码有:200、302、404、500等。

HTTP状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用。HTTP状态码共分为5种类型:

分类分类描述
1**信息,服务器收到请求,需要请求者继续执行操作
2**成功,操作被成功接收并处理
3**重定向,需要进一步的操作以完成请求
4**客户端错误,请求包含语法错误或无法完成请求
5**服务器错误,服务器在处理请求的过程中发生了错误