Android开发需要了解的网络协议
TCP/IP 分层网络
1. 应用层
应用层决定了向用户提供应用服务时通信的活动。
TCP/IP 协议族内预存了各类通用的应用服务。例如:HTTP、SSH、FTP 等。
2. 传输层
应用层的下一层就是传输层,提供处于网络连接中的两台计算机之间的数据传输
常见的传输层协议有 TCP、UDP 等。
3. 网络层
网络层又称网络互连层。
网络层用来处理在网络上流动的数据包,数据包是网络传输的最小数据单位。该层规定了通过怎样的路径到达对方的计算机,并把数据包传送给对方。
网络层的作用就是在众多选项内选择一条合适的传输路径。
4. 链路层
链路层又称数据链路层,网络接口层
用来处理连接网络的硬件部分,控制操作系统、硬件的设备驱动。
我们能够看到的交换机、网线、光纤等也属于物理层
TCP 是什么
TCP 的全称是传输控制协议(Transmission Control Protocol)位于传输层,它是一种有连接的协议,提供可靠的字节流服务[注1]。而可靠的传输服务是指,能够将数据准确可靠的传递给对方。数据为何能准确无误的送达目标处,就是因为 TCP 协议采用了三次握手策略,当然除了三次握手,TCP 协议还有其他手段来保证通信的可靠性
TCP 三次握手
- 发送端首先发送一个带 SYN 标志的数据包给对方
- 接收端收到标有 SYN 的数据包后回传一个带有 SYN/ACK 标志的数据包表示确认信息
- 发送端在发送一个带有 ACK 标志的数据包给接收端表示握手成功
如果握手成功后连接断开,再次连接还需要重新握手
TCP 四次挥手
由于TCP连接时全双工的,因此,每个方向都必须要单独进行关闭,这一原则是当一方完成数据发送任务后,发送一个FIN来终止这一方向的连接,收到一个FIN只是意味着这一方向上没有数据流动了,即不会再收到数据了,但是在这个TCP连接上仍然能够发送数据,直到这一方向也发送了FIN。首先进行关闭的一方将执行主动关闭,而另一方则执行被动关闭。
第一次挥手:
Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。
第二次挥手:
Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。
第三次挥手:
Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。
第四次挥手:
Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。
UDP 是什么
UDP 的全称是用户数据报协议(User Datagram Protocol)同样位于传输层,它是一种无连接的协议,提供面向事务的简单不可靠信息传送服务
TCP 与 UDP 的差异
- TCP 是有连接的而 UDP 是无连接的
- TCP 是可靠的连接而 UDP 是不可靠的
- UDP 不需要各种可靠性策略所以相比 TCP 性能要高不少
- 因为 UDP 的连接步骤少,报头内容少所以相比 TCP 更加的省流量
- TCP 只能一对一连接传递消息而 UDP 可以一对一、一对多、多对一和多对多
参考
参考资料 https://blog.csdn.net/huangxy10/article/details/8012180
抓包软件 Wireshark
注1:字节流服务是指,为了方便传输,将大块数据分割成报文段为单位的数据包进行管理的服务
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
WebApp与Native App的区别
WebApp与Native App的区别 Native App: 1、开发成本非常大。一般使用的开发语言为JAVA、C++、Objective-C。 2、更新体验较差、同时也比较麻烦。每一次发布新的版本,都需要做版本打包,且需要用户手动更新(有些应用程序即使不需要用户手动更新,但是也需要有一个恶心的提示)。 3、非常酷。因为native app可以调用IOS中的UI控件以UI方法,它可以实现WebApp无法实现的一些非常酷的交互效果。 4、Native app是被Apple认可的。Native app可以被Apple认可为一款可信任的独立软件,可以放在Apple Stroe出售,但是Web app却不行。 Web App: 1、开发成本较低。使用web开发技术就可以轻松的完成web app的开发。 2、升级较简单。升级不需要通知用户,在服务端更新文件即可,用户完全没有感觉。 3、维护比较轻松。和一般的web一样,维护比较简单,它其实就是一个站点。 Webapp说白了就是一个针对Iphone、Android优化后的web站点,它使用的技术无非就是HTML或HTML5、CSS3、JavaS...
- 下一篇
基于Netbeans的安卓Android开发环境配置 - CSDN博客
原文: 基于Netbeans的安卓Android开发环境配置 - CSDN博客 基于Netbeans的安卓Android开发环境配置 一、准备工作 NetBeans 勾选网页中的Accept…选择对应系统下载安装即可,我电脑是XP32位,下载了windows X86,具体安装步骤可以百度,比较简单。 Android SDK试用过,好使。 二、具体步骤 Netbeans->工具->插件->设置->添加->名称:NBAndroid URL:根据版本填写。 URL填写: 1 2 **Netbeans版本7.3 - 8.0填写: http://nbandroid.org/updates/updates.xml **Netbeans版本8.1及以上填写: http://nbandroid.org/release81/updates/updates.xml 如图: 2.点击确认之后切换到“可用插件”,如图勾选如下几个插件。Android为必选项。 3. 点击安装,之后应该会弹出警告。选择Continue,继续安装,完成安装。 4. 设置Netbeans的Android...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS8编译安装MySQL8.0.19
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Windows10,CentOS7,CentOS8安装Nodejs环境
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7