协议森林:先生,要点单吗?---HTTP协议概览(1)(2)
回复
服务器在接收到请求之后,会根据程序,生成对应于该请求的回复,比如:
HTTP/1.1 200 OK Content-type: text/plain Content-length: 12 Hello World!
回复的起始行同样包含三段信息
HTTP/1.1 协议版本
200 状态码(status code)。
OK 状态描述
OK是对状态码200的文字描述,它只是为了便于人类的阅读。电脑只关心三位的状态码(status code),即这里的200。200表示一切OK,资源正常返回。状态码代表了服务器回应动作的类型。
其它常见的状态码还有:
302,重新定向(redirect): 我这里没有你想要的资源,但我知道另一个地方xxx有,你可以去那里找。
404,无法找到(not found): 我找不到你想要的资源,无能为力。
(重新定向时,客户端可以根据302的建议前往xxx寻找资源,也可以忽略该建议。)
Content-type说明了主体所包含的资源的类型。根据类型的不同,客户端可以启动不同的处理程序(比如显示图像文件,播放声音文件等等)。下面是一些常见的资源
text/plain 普通文本
text/html HTML文本
image/jpeg jpeg图片
image/gif gif图片
Content-length说明了主体部分的长度,以字节(byte)为单位。
回应的主体部分为一段普通文本,即
Hello World!
无状态
根据早期的HTTP协议,每次request-reponse时,都要重新建立TCP连接。TCP连接每次都重新建立,所以服务器无法知道上次请求和本次请求是否来自于同一个客户端。因此,HTTP通信是无状态(stateless)的。服务器认为每次请求都是一个全新的请求,无论该请求是否来自同一地址。
想象高级餐厅和快餐店。高级餐厅会知道客人所在的位置,如果新增点单,那么服务员知道这和上一单同一桌。而在快餐店中,不好意思,服务员并不记录客人的特征。想再次点单?请重新排队……
随着HTTP协议的发展,HTTP协议允许TCP连接复用,以节省建立连接所耗费的时间。但HTTP协议依然保持无状态的特性。
总结
HTTP协议实现了万维网上的资源传输,采用request-response的工作方式。
GET, POST
无状态
评论暂时关闭