热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Android网络协议总结

Android网络协议总结Android开发中要掌握的协议,一般包括Http协议和TcpIp协议,如果开发蓝牙设备还要知道一些蓝牙BLE协议。还有一个就

Android网络协议总结

 

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",实质上,GETPOST只是发送机制不同,并不是一个取一个发,POST请求也是可以进行索取数据!

 

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

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

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

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

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

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

 

 

 

二.Tcp/Ip

(一)基础知识

TCP/IP字面上代表了两个协议:TCP(传输控制协议)和IP(网际协议)。但是TCP/IP协议不是TCPIP这两个协议的合称,而是指因特网整个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连接成功)状态,完成三次握手。

完成三次握手,客户端与服务器开始传送数据,在上述过程中,还有一些重要的概念:



(三)TCPUDP的区别

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

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

 

 

三.Socket编程

(一)基础知识

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

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

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

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

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

(二)工作过程

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

1. 创建Socket/SocketService;

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

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

4.关闭Socket/SocketService.

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

 

 

三.蓝牙BLE协议

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

(一)基础概念

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

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

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

 

(二)蓝牙2.03.04.0区别

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

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

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

1.超低功耗

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

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

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

 

(三)蓝牙相关的类

 BlueToothAdapter这个类是蓝牙设备的管理类。 
      BlueToothDevice蓝牙设备对象,里面包含蓝牙的数据。 
上面两个类蓝牙设备都会有用到,下面这两个类只有蓝牙4.0才能用到。 
      BlueToothGatt低耗能蓝牙设备的控制对象 
      BlueToothGattCharateristic低耗能蓝牙设备的特征值对象

 

(四)蓝牙Socket编程(蓝牙2.03.0都可以的)

1.UUID

在蓝牙中,每个服务和服务属性都唯一地由 全局唯一标识符 ,Universally Unique Identifier(UUID)来校验。正如它的名字所暗示的,每一个这样的标识符都要在时空上保证唯一。 UUID相当于Socket的端口,而蓝牙地址相当于SocketIP。两个蓝牙设备进行连接时需要使用同一个UUID,这是一个服务的唯一标识,而且这个UUID的值必须是 
00001101-0000-1000-8000-00805F9B34FB 

2.Socket编程

请看上面的描述。

 

蓝牙开发:http://blog.csdn.net/wenzhi20102321/article/details/53870789

蓝牙4.0开发示例:http://blog.csdn.net/wenzhi20102321/article/details/53893511

无线Wifi开发示例:http://blog.csdn.net/wenzhi20102321/article/details/53871216

Socket编程:http://blog.csdn.net/wenzhi20102321/article/details/52620323

Android网络编程:http://blog.csdn.net/wenzhi20102321/article/details/53182963

 

事实上,很多协议是不需要你去深入探究的,但是你要对它们的概念有一些理解。本文就是简单说了一些概念。

 

 

 

 


推荐阅读
  • 主从复制_mysql主从复制简介
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了mysql主从复制简介相关的知识,希望对你有一定的参考价值。  ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • 本文介绍了NetCore WebAPI开发的探索过程,包括新建项目、运行接口获取数据、跨平台部署等。同时还提供了客户端访问代码示例,包括Post函数、服务器post地址、api参数等。详细讲解了部署模式选择、框架依赖和独立部署的区别,以及在Windows和Linux平台上的部署方法。 ... [详细]
  • Python已成为全球最受欢迎的编程语言之一,然而Python程序的安全运行存在一定的风险。本文介绍了Python程序安全运行需要满足的三个条件,即系统路径上的每个条目都处于安全的位置、"主脚本"所在的目录始终位于系统路径中、若python命令使用-c和-m选项,调用程序的目录也必须是安全的。同时,文章还提出了一些预防措施,如避免将下载文件夹作为当前工作目录、使用pip所在路径而不是直接使用python命令等。对于初学Python的读者来说,这些内容将有所帮助。 ... [详细]
  • 网络编程:其实就是在学socketsocket是什么?翻译过来称为套接字是对底层的TCPIPUDP等网络协议进行封装使得上层的应用程序开发者,不用直接接触这对复杂,丑陋的协议在程序 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了作者在开发过程中遇到的问题,即播放框架内容安全策略设置不起作用的错误。作者通过使用编译时依赖注入的方式解决了这个问题,并分享了解决方案。文章详细描述了问题的出现情况、错误输出内容以及解决方案的具体步骤。如果你也遇到了类似的问题,本文可能对你有一定的参考价值。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • POCOCLibraies属于功能广泛、轻量级别的开源框架库,它拥有媲美Boost库的功能以及较小的体积广泛应用在物联网平台、工业自动化等领域。POCOCLibrai ... [详细]
  • 视图分区_组复制常规操作网络分区amp;混合使用IPV6与IPV4 | 全方位认识 MySQL 8.0 Group Replication...
    网络分区对于常规事务而言,每当组内有事务数据需要被复制时,组内的成员需要达成共识(要么都提交,要么都回滚)。对于组成员资格的变更也和保持组 ... [详细]
  • MybatisPlus入门系列(13) MybatisPlus之自定义ID生成器
    数据库ID生成策略在数据库表设计时,主键ID是必不可少的字段,如何优雅的设计数据库ID,适应当前业务场景,需要根据需求选取 ... [详细]
  • CryptSIPRetrieveSubjectGuid
    简介CryptSIPRetrieveSubjectGuid根据文件类型检索SubjectGUID,用于CryptSIPLoad。提示如果检索失败可以使用通用的CRYPT_SUBJT ... [详细]
  • python网络编程 day27 网络编程初识 ——socket
    一、内容回顾1、两个内置函数(装饰器)及类中的魔术方法 ... [详细]
author-avatar
美好心灵66
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有