APP连接服务器所涉及的网络知识

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

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)客户端想浏览

(2)客户端将发送给DNS服务器

(3)DNS服务器告诉客户端对应的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/1.1或HTTP/2.0

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

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

(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

6.缓存,隧道

(1)缓存

会将资源保存一份在代理服务器上(或者本地浏览器中),当代理服务器再次接到相同资源的请求(或本地浏览器检测到了又请求了同样的资源),就不向源服务器申请资源,而是直接传送回去代理服务器上的资源(或直接显示本地中的资源)。

(2)缓存的问题

问题:源服务器上的资源更新了,缓存服务器上的资源没及时的随着更新。这样用户就会得到过期的资源。

解决方法:设立缓存有效期,若有效期到期了则去源服务器那里下载最新的资源。客户端也可以主动请求不使用缓存,而是去源服务器那里下载最新的资源。

(3)隧道

使用SSL等加密手段进行通信,目的是安全

7.静态页面和动态页面

事先准备好的叫静态页面

现由程序生成的叫动态页面

8.CGI

CGI是指Web服务器在接收到客户端发送过来的请求后,转发给服务器端的程序的一组机制。

使用CGI的程序叫CGI程序,通常由PHP、Python、Java等编程语言编写。

三、APP连接服务器的“解决方案”大全

1.最基本的模型:直接用HTTP协议进行传输

服务器端针对不同的GET请求,POST请求等方法写一些程序。(即我们说的API)

客户端(比如Android端)找一个能发送HTTP请求、能接收HTTP响应的类。

用这个类发送HTTP请求给服务器。(调用API)

2.Web Service模型:2017年,基于HTTP协议的解决方案们

从大体上说,一共有三类,即:

(1)SOA模型 (面向消息)

(2)RPC模型 (面向方法)

(3)REST模型 (面向资源)

其中RPC模型,又分为三类:

①XML-RPC

②JSON-RPC

③SOAP+WSDL [SOAP本质上是XML-RPC的升级版]

3.一些常见问题

问:Android端通过什么向后端发数据呢?

答:

①HttpUrlConnection————HTTP协议传输的最靠谱选择,推荐:选HTTP协议的就用它吧

②HttpClient————不如HttpUrlConnection好用

③OkHttp————被HttpUrlConnection当做底层实现部分了,可以自动处理常见网络问题

④volley————适用于通信频繁的小数据网络操作,但不适合大数据的网络操作如下载文件

⑤Retrofit————基于REST模型的框架,其底层是OkHttp。推荐:选REST模型的就用它吧

⑥AsyncHttpClient————底层是HttpClient写的,没有OkHttp的自动错误处理常见网络问题的能力

4.个人Android技术选型

前端:Retrofit

中间:HTTP+JSON+REST

后端:Flask+Python+MySQL

posted @   xiaobingch  阅读(442)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示