图解HTTP 客户端女友小花与服务器女友小明的故事
通过女朋友小花(客户端)和男朋友小明(服务器)的对话,简单了解HTTP通信机制
一、小花与小明(客户端与服务器)
故事主角:女友小花(客户端),男友小明(服务器)
相处模式:随传随到 有求必应(发送请求 响应请求模式)
沟通方式:协议(超文本传输协议 HTTP协议)

像小花这种通过发送请求获取服务器资源的,称为客户端Client。如果你在手机微信上看我的这篇文章,客户端就是微信。像小明这种通过响应服务请求、承担服务、保障服务的计算机,称为服务器Server。
二、小花与小明的沟通协议(HTTP协议)
小花与小明要和平相处,双方就必须遵守相同的规则,这些规则叫做协议,例如同居协议、婚前协议等。同样的,计算机与网络设备要互相通信,双方也需要遵守共同的规则,这些规则叫做也叫做协议Protocol,例如文件传输协议FTP,域名系统DNS和超文本传输协议HTTP等,而所有协议的总称叫做TCP/IP协议族。

三、小花与小明的三次握手 (TCP协议)

为了确保双方之间的视频通话是正常的,小花和小明之间进行了三次对话确认。在网络传输数据过程之中,客户端与服务器之间为了准确无误地将数据送到对方,也需要进行三次确认,这种三次确认的策略称为三次握手three-way handshaking,由TCP协议负责。

四、健忘症的情侣 (HTTP是不保存状态的协议)
同理,HTTP协议不保存状态,会导致客户端和服务器都没有办法记得对方,从而造成安全隐患:客户端有可能不是真正发送请求的那个客户端;服务器有可能不是接收请求的那个服务器;通信过程可能被窃听;传输的数据可能不是原来的那些数据。

对于小花和小明的健忘症,有一种食疗,就是饼干Cookie。Cookie就像《恋恋笔记本》电影中的那本记录了男女主角共同回忆的笔记本,能让他们记起对方是谁。
同理,“HTTP/1.1虽然是无状态协议,但为了实现期望但保持状态功能,于是引入了Cookie技术。有了Cookie再用HTTP协议通信,就可以管理状态了。”

五、小花用来告诉小明自己心里想什么的方法 (HTTP方法)
Get:获取资源(小花:小明,把你的手机拿过来)
POST:传输实体主体(小花:小明,我要用你的手机发条微信)
PUT:传输文件(小花:小明,我要发一张我的图片给你)
DELETE:删除文件(小花:小明,把那个女的联系方式删了)

六、小明用来告诉小花自己如何处理她的要求 (HTTP状态码)
1XX:接收的请求正在处理(小明:我现在给你把手机拿过来)
2XX:请求正常处理完毕(小明:我给你拿来了你要的手机)

3XX:需要进行附加操作以完成请求(小明:你给我你的手机,我才会给你我的手机)
4XX:服务器无法处理请求(小明:我没办法按你的意思把我的女闺蜜删了)

5XX:服务器处理请求出错(小明:我刚才在删那个女的联系方式的时候手机通讯录出故障了,删除不了)
人会言不由衷,机器也会。小明回复小花的话不一定是真的,服务器返回给客户端的状态码也经常不一致...
感情的事错综复杂,小花和小明的故事今天暂且聊到这里吧。感兴趣的童鞋可以关注我微信公众号婷婷读书哦,里面有更多UI设计、UX用户体验及技术知识故事分享。😴























































































