博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android之网络协议篇
阅读量:2145 次
发布时间:2019-04-30

本文共 2747 字,大约阅读时间需要 9 分钟。

Android开发中要掌握的协议,一般包括Http协议和Tcp/Ip协议,如果开发蓝牙设备还要知道一些蓝牙BLE协议。还有一个就是Socket编程,也是以Tcp/Ip协议为基础的,并且和无线设备比较相关。

一.Http协议

(一)Http基础知识

超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。

(二)Http协议发送请求信息包括的四个内容

1.请求行

2.请求头,又叫消息头

3.空行

4.请求体(可选),又叫消息主体

(三)常用请求方式:Get请求和Post请求

1.Get请求和Post请求定义

GET - 向特定的资源发出请求。注意:GET方法不应当被用于产生"副作用"的操作中,例如在web app.中。其中一个原因是GET可能会被网络蜘蛛等随意访问。

POST - 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。

2.Get请求和Post请求区别

(1)最直观的区别就是GET把参数包含在(请求行)URL中,POST通过(请求行+【请求头+请求体】)request body传递参数。

(2)POST的安全性要比GET的安全性高。

(3)GET方式提交的数据最多只能是1024字节,理论上POST没有限制

(4)Get是向服务器发索取数据的一种请求,而Post是向服务器提交数据的一种请求,在FORM(表单)中,Method默认为"GET",实质上,GET和POST只是发送机制不同,并不是一个取一个发,POST请求也是可以进行索取数据!

3.Get请求和Post请求没有区别(这也是一个论述的观点)

HTTP只是个行为准则,而TCP才是GET和POST怎么实现的基本。

GET和POST本质上就是TCP链接,并无差别。但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。

GET产生一个TCP数据包;POST产生两个TCP数据包。

对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);

而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。

二.Tcp/Ip

(一)基础知识

TCP/IP字面上代表了两个协议:TCP(传输控制协议)和IP(网际协议)。但是TCP/IP协议不是TCP和IP这两个协议的合称,而是指因特网整个TCP/IP协议族。

从协议分层模型方面来讲,TCP/IP由四个层次组成:网络接口层(又称数据链路层)、网络层、传输层、应用层。

也就是说Tcp/Ip协议族不仅仅是字面上的网络层和传输层,它还包含数据链路层和应用层!

TCP是面向连接的通信协议,通过三次握手建立连接,通讯完成时要拆除连接。

三次握手必须要会简单的描述出来!

(二)三次握手

三次握手的简单描述:

第一次握手:建立连接时,客户端发送a包到服务器,等待服务器确认;

第二次握手:服务器收到a包,同时自己也发送一个b包,即a+b包;

第三次握手:客户端收到服务器的a+b包,向服务器发送确认包,此包发送完毕,客户端和服务器进入(TCP连接成功)状态,完成三次握手。

完成三次握手,客户端与服务器开始传送数据。

网上详细答案:

第一次
第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。

第二次

第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。完成三次握手,客户端与服务器开始传送数据,在上述过程中,还有一些重要的概念:
(三)TCP和UDP的区别

1.TCP:面向连接、传输可靠(保证数据正确性,保证数据顺序)、用于传输大量数据(流模式)、速度慢,建立连接需要开销较多(时间,系统资源)。

2.UDP:面向非连接、传输不可靠、用于传输少量数据(数据包模式)、速度快。

三.Socket编程

(一)基础知识

网络上的两个程序通过一个双向的通讯连接实现数据的交换,这个双向链路的一端称为一个Socket。

Socket所支持的协议种类也不光TCP/IP一种,在Java环境下,Socket编程主要是指基于TCP/IP协议的网络编程。

一个Socket由一个IP地址(客户端决定)和一个端口号(服务器决定)唯一确定。

如果是蓝牙设置的Socket ,UUID相当于Socket的端口,而蓝牙地址相当于Socket的IP。

其实Socket编程程序包含一个Socket端和SocketService端。

(二)工作过程

其工作过程包含以下四个基本的步骤:

1. 创建Socket/SocketService;

2. 打开连接到Socket/SocketService的输入/出流;

3. 按照一定的协议对Socket/SocketService进行读/写操作;

4.关闭Socket/SocketService.

上面拿到Socket的输入流就可以进行数据的读取(如接收文件或文字),拿到输出流就可以进行数据的写入(如发送文件或文字)。

三.蓝牙BLE协议

这个知识我也是不知道怎么详细说,网上也没有很相关的简介。看那些电路图,我也没看懂是什么鬼!

(一)基础概念

蓝牙协议包括核心协议层、替代电缆协议层、电话控制协议层和选用蓝牙协议层。 

蓝牙的核心协议由基带,链路管理,逻辑链路控制与适应协议和服务搜索协议等4部分组成。

蓝牙BLE协议是蓝牙4.0的协议,BLE代表的是低耗能设备。

(二)蓝牙2.0、3.0、4.0区别

蓝牙2.0可以支持立体声,而蓝牙1.2版只支持单声道!

蓝牙3.0比蓝牙2.0的传输速度有了质的提升,其他功能没什么变化。

蓝牙4.0比之前的2.0和3.0有了很大的区别,主要特点有下面三个:

1.超低功耗

2.免配对密码(一般通过NFC直连)

3.可以多连(一个耳机连2个收手机)

4.超长传输距离(理论100米,蓝牙2.0、3.0理论上是10米)

转载地址:http://izrgf.baihongyu.com/

你可能感兴趣的文章
学习网站汇总
查看>>
【Python】用Python打开csv和xml文件
查看>>
【Loadrunner】性能测试报告实战
查看>>
【自动化测试】自动化测试需要了解的的一些事情。
查看>>
【selenium】selenium ide的安装过程
查看>>
【手机自动化测试】monkey测试
查看>>
【英语】软件开发常用英语词汇
查看>>
Fiddler 抓包工具总结
查看>>
【雅思】雅思需要购买和准备的学习资料
查看>>
【雅思】雅思写作作业(1)
查看>>
【雅思】【大作文】【审题作业】关于同不同意的审题作业(重点)
查看>>
【Loadrunner】通过loadrunner录制时候有事件但是白页无法出来登录页怎么办?
查看>>
【English】【托业】【四六级】写译高频词汇
查看>>
【托业】【新东方全真模拟】01~02-----P5~6
查看>>
【托业】【新东方全真模拟】03~04-----P5~6
查看>>
【托业】【新东方托业全真模拟】TEST05~06-----P5~6
查看>>
【托业】【新东方托业全真模拟】TEST09~10-----P5~6
查看>>
【托业】【新东方托业全真模拟】TEST07~08-----P5~6
查看>>
solver及其配置
查看>>
JAVA多线程之volatile 与 synchronized 的比较
查看>>