APP连接服务器,所需要知道的一切事情

APP连接服务器,所需要知道的一切事情

APP连接服务器,所需要知道的一切事情

一、2017年,人们如何连接服务器与客户端?

1.答:使用HTTP协议去连接服务器与客户端

我们把资源放在服务器里(也就是你电脑中的一个文件夹),此时这个文件就会有一个它自己的名字(比如:192.168.199.3:80/fuck.txt,"192.168.199.3"是你主机的ip地址————当然一般不会是内网地址)

客户端,通过程序,比如安卓使用HttpUrlConnection类,用该资源的名字(192.168.199.3:80/fuck.txt)作为输入参数,发起HTTP请求,然后再用HttpUrlConnection类的接收HTTP响应的方法把服务器返回的资源接收,就可以实现前端与后端的互联了。

2.什么叫客户端,什么叫服务器端?

请求资源的一端称为客户端,提供资源的一端称为服务器端。

3.HTTP可以传什么?

答:HTTP什么都可以传。(别以为HTTP只能传输HTML)

4.举例

(1)客户端是浏览器,则传的是HTML。(及其他资源,如CSS、JavaScript、图片、音频、视频、其他一切格式的文件)

(2)客户端是APP,则传的是JSON或XML。(及其他资源,如图片、音频、视频、其他一切格式的文件)

二、了解HTTP

1.整体流程

(1)客户端想浏览http://www.fuck.com/

(2)客户端将http://www.fuck.com/发送给DNS服务器

(3)DNS服务器告诉客户端http://www.fuck.com/对应的IP是:201.96.114.112

(4)客户端的HTTP协议:生成针对目标Web服务器的“HTTP请求报文”

(5)客户端的TCP协议:将“HTTP请求报文”分割成“报文段”并表上序号,把每个“报文段”准确无误的传给服务器(实现准确的方式:三次握手)

(6)客户端的IP协议:搜索对方的地址,一边路由一边传送“报文段”

(7)服务器端的TCP协议:根据序号重组“报文段”,组成“HTTP请求报文”

(8)服务器端的HTTP协议:处理“HTTP请求报文”,将其中请求的资源,生成“HTTP响应报文”传回去

2.请求报文和响应报文

(1)请求报文由五个部分构成:

请求方法:如GET、POST、DELETE

请求URI :如http://127.0.0.1/fuck.txt

协议版本:如HTTP/1.1或HTTP/2.0

首部字段:(还请自行查询,我不了解首部字段)

内容实体:如登陆时提交的用户名、密码

APP连接服务器,所需要知道的一切事情

(2)响应报文由五个部分组成:

协议版本:如HTTP/1.1或HTTP/2.0

状态码:如404

原因段语:如OK

首部字段:(请自行查询,我不了解首部字段)

实体主体:如一个HTML文件或一个图片文件

(有的水友要问了,枫哥枫哥,图片怎么用字符串表示呢?我说你们真是too young,二进制呀兄弟)

3.Cookie是什么?

(1)首先,先看个例子:

例:HTTP无法让用户保持登陆,因为HTTP是一个不保存状态的协议。

(2)解决方案:使用Cookie帮助HTTP。

(3)具体过程:

①客户端第一次向服务器发送请求,服务器会为该客户端生成一个新的Cookie存好。

②之后服务器会通过set-Cookie指令把Cookie发给客户端保存。

③当客户端第二次请求时,将保存好的Cookie也一并发给服务器。

④服务器接到请求后,一查这Cookie对应的客户端信息,就知道这个客户端是谁了。

4.HTTP方法

(1)GET:请求已被URI识别的资源。指定的资源通过服务器端解析之后返回响应内容。也就是说,如果请求的是文本,那就保持原样返回。如果请求的是程序,则返回经过执行后的输出结果。

(2)POST:传一些数据到服务器端(如用户名和密码),让服务器端对这些数据进行解析并返回结果。

(3)PUT:传输文件。在请求报文的主体中包含文件内容,然后保存到请求URI指定的位置。

(4)HEAD:获得报文首部。HEAD和GET一样,只是不反回报文主体部分。用于确认资源更新时间及URI的有效性等。

(5)DELETE:删除文件。DELETE方法按照请求URI删除指定的资源。

(6)OPTIONS:询问支持的方法。服务器端返回的是:GET,POST,HEAD(返回服务器支持的方法)

(7)TRACE:追踪路径。

(8)CONNECT:用隧道协议连接代理。使用SSL协议和TLS协议把通信内容加密后经网络隧道传输。

(注意:方法名区分大小写,需要都用大写字母。)

5.传输前要先压缩——内容编码

服务器对要发送的内容进行内容编码(也就是压缩),之后进行传输,客户端则负责解码。

常见的内容编码有以下几种:

gzip

compress

deflate

identity