当前位置:  编程技术>移动开发
本页文章导读:
    ▪2013-十-31 TCP/IP 协议簇        2013-10-31 TCP/IP 协议簇一,TCP/IP TCP/IP(Transmission Control Protocol/Internet Protocol)已成为一个事实上的工业 标准。TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。TCP/IP协议簇分为.........
    ▪ 解决nfs 挂载文件系统的有关问题        解决nfs 挂载文件系统的问题问题描述:MINI2440开发板可以ping 通网关,可以ping 通win7,但是就是ping 不通虚拟机下的linux, 原因:可能开发板的IP和win7的可能不在同一个路由器下, 解决方法:.........
    ▪ 对SingleTask跟TaskAffinity的理解       对SingleTask和TaskAffinity的理解最近研究微信调起自己客户端的事情,对于SingleTask和TaskAffinity的理解又多了一些理解。 以前对于Android的四种LaunchMode有一些了解,其中比较有意思的就是SingleTask.........

[1]2013-十-31 TCP/IP 协议簇
    来源: 互联网  发布时间: 2014-02-18
2013-10-31 TCP/IP 协议簇
一,TCP/IP
TCP/IP(Transmission Control Protocol/Internet Protocol)已成为一个事实上的工业
标准。TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。TCP/IP协议簇分为四层,IP位于协议簇的第二层(对应OSI的第三层),TCP位于协议簇的第三层(对应OSI的第四层)。TCP和IP是TCP/IP协议簇的中间两层,是整个协议簇的核心,起到了承上启下的作用。
1、接口层
    TCP/IP的最低层是接口层,常见的接口层协议有:
    Ethernet 802.3、Token Ring 802.5、X.25、Frame reley、HDLC、PPP等。
2、网络层
    网络层包括:IP(Internet Protocol)协议、ICMP(Internet Control Message Protocol)
控制报文协议、ARP(Address Resolution Protocol)地址转换协议、RARP(Reverse ARP)反向
地址转换协议。
    IP是网络层的核心,通过路由选择将下一跳IP封装后交给接口层。IP数据报是无连接服务

    ICMP是网络层的补充,可以回送报文。用来检测网络是否通畅。
    Ping命令就是发送ICMP的echo包,通过回送的echo relay进行网络测试。
    ARP是正向地址解析协议,通过已知的IP,寻找对应主机的MAC地址。
    RARP是反向地址解析协议,通过MAC地址确定IP地址。比如无盘工作站和DHCP服务。
3、传输层
    传输层协议主要是:传输控制协议TCP(Transmission Control Protocol)和用户数据报协
议UDP(User Datagram rotocol)。
    TCP是面向连接的通信协议,通过三次握手建立连接,通讯时完成时要拆除连接,由于TCP
是面向连接的所以只能用于点对点的通讯。
    TCP提供的是一种可靠的数据流服务,采用“带重传的肯定确认”技术来实现传输的可靠
性。TCP还采用一种称为“滑动窗口”的方式进行流量控制,所谓窗口实际表示接收能力,用
以限制发送方的发送速度。   
    UDP是面向无连接的通讯协议,UDP数据包括目的端口号和源端口号信息,由于通讯不需要
连接,所以可以实现广播发送。
    UDP通讯时不需要接收方确认,属于不可靠的传输,可能会出丢包现象,实际应用中要求
在程序员编程验证。
4、应用层
    应用层一般是面向用户的服务。如FTP、TELNET、DNS、SMTP、POP3。
    FTP(File Transmision Protocol)是文件传输协议,一般上传下载用FTP服务,数据端口
是20H,控制端口是21H。
    Telnet服务是用户远程登录服务,使用23H端口,使用明码传送,保密性差、简单方便。
    DNS(Domain Name Service)是域名解析服务,提供域名到IP地址之间的转换。
    SMTP(Simple Mail Transfer Protocol)是简单邮件传输协议,用来控制信件的发送、中
转。  
    POP3(Post Office Protocol 3)是邮局协议第3版本,用于接收邮件。
    数据格式:
    数据帧:帧头+IP数据包+帧尾 (帧头包括源和目标主机MAC地址及类型,帧尾是校验字)
    IP数据包:IP头部+TCP数据信息 (IP头包括源和目标主机IP地址、类型、生存期等)
    IP数据信息:TCP头部+实际数据  (TCP头包括源和目标主机端口号、顺序号、确认号、校
验字等)   

二,TCP连接的建立 1、TCP连接通过三次握手完成。
    client首先请求连接,发一个SYN包;Server收到后回应SYN_ACK包;Client收到后再
发ACK包。即:
    Client     Server
     SYN  --->   收
          <--- SYN+ACK
     ACK  --->   收
   established表示建立状态,当某端发出数据包后收到了回应则进入established状态。
   在TCP/IP连接时,如果两端都是established状态,则握手成功,否则是无连接或半联接状
态。

2、套接字Socket
    套接字Socket由协议、IP地址和端口号组成,套接字表示一路通讯,一般是一个服务,如
www服务是TCP的80端口,Telnet是TCP的23端口。

三、IP地址划分 1、IP地址分类
    IP地址有四个段,包括网络标识和主机标识两部分:netid+hostid。
    IP地址应用分为A、B、C三类,D、E类是保留和专用的。
    Class A  0******* xxxxxxxx xxxxxxxx xxxxxxxx
    Class B  10****** ******** xxxxxxxx xxxxxxxx
    Class C  110***** ******** ******** xxxxxxxx
    Class D  1110**** ******** ******** ********
    Class E  1111**** ******** ******** ********
2、地址区间
    址址类        地址区间                网络数                主机数
    A 类 1.0.0.1~126.255.255.254        27-2=126        224-2=16777214
    B 类 128.0.0.1~191.255.255.254        214-2=16382        216-2=65534
    C 类 192.0.0.1~223.255.255.254        221-2=2097150        28-2=254
    D 类 224.0.0.1~239.255.255.255        228=268435456        0
    E 类 240.0.0.1~255.255.255.255        228=268435456        0
3、特殊地址
    主机地址全0表示为一个网络地址。
    主机地址全1表示为对应网络的广播地址。
    全0的IP地址:0.0.0.0,表示本机地址,只在启动过程时有效。
    全1的IP地址255.255.255.255,表示本地广播(有的软件不支持)。
    私有地址:
    10.0.0.0 - 10.255.255.255
    172.16.0.0 - 172.31.255.255
    192.168.0.0 - 192.168.255.255
    127.0.0.0网络是回环网络loopback,用于本机测试。例如:
    ping 127.0.0.1 是测试本机网卡是否工作正常。

4、子网掩码
    子网掩码用来区分网络地址和主机地址,标准的子网掩码为:
    A 类: 1.0.0.1~126.255.255.254   netmask:255.0.0.0
    B 类:128.0.0.1~191.255.255.254  netmask:255.255.0.0
    C 类:192.0.0.1~223.255.255.254  netmask:255.255.255.0
    子网掩码和IP地址的“与”运算得出对应的网络地址。
    如果将子网掩码“1”的位数增加则网络地址数增加,形成子网。相当于网络的分隔。
    如果将子网掩码“1”的位数减小则网络地址数减少,形成超网。相当于网络的聚合

    
[2] 解决nfs 挂载文件系统的有关问题
    来源: 互联网  发布时间: 2014-02-18
解决nfs 挂载文件系统的问题

问题描述:MINI2440开发板可以ping 通网关,可以ping 通win7,但是就是ping 不通虚拟机下的linux,

原因:可能开发板的IP和win7的可能不在同一个路由器下,

解决方法:只需要网线接在同一个路由器下,就可以极大提高挂在的成功率。


    
[3] 对SingleTask跟TaskAffinity的理解
    来源: 互联网  发布时间: 2014-02-18
对SingleTask和TaskAffinity的理解

最近研究微信调起自己客户端的事情,对于SingleTask和TaskAffinity的理解又多了一些理解。

以前对于Android的四种LaunchMode有一些了解,其中比较有意思的就是SingleTask和SingleInstance 。(四种LaunchMode的了解可以参见这篇文章,对于Activity栈的讲述很详细)。这两种LaunchMode的理解都跟Task有很大关系。

        一个Task可以理解成一个Activtiy栈,可以装载一个或者多个Activity,回退和打开的顺序逻辑和基本的数据结构栈是一致的。下面的这段话非常关键:那就是,一个Application如果有N个Activity,这些Activity分布在M个Task中,那么Application的回退栈会遵循这样的原则,首先从当前Acitivty在的Task回退,直到这个Task中再无记录;那么会寻找下一个Task再次回退直到没有Activity(这个Task是怎么寻找的呢,其实Task在Appliction的总栈中也是有记载的,总是TasK中最近使用的Activity相关)。

       下面是我对这两种比较难的LaunchMode的理解。

       一 . SingleTask这个LaunchMode建议和TaskAffinity一起使用,这样才能发挥这种加载模式的特殊逻辑效果。当一个应用程序加载一个singleTask模式的Activity时,首先该Activity会检查是否存在与它的taskAffinity相同的Task。 
    1、如果存在,那么检查是否实例化,如果已经实例化,那么销毁在该Activity以上的Activity并调用onNewIntent。如果没有实例化,那么该Activity实例化并入栈。 
    2、如果不存在,那么就重新创建Task,并入栈。 


   二. 1、当一个应用程序加载一个singleInstance模式的Activity时,如果该Activity没有被实例化,那么就重新创建一个Task,并入栈,如果已经被实例化,那么就调用该Activity的onNewIntent; 
    2、singleInstance的Activity所在的Task不允许存在其他Activity,任何从该Activity加载的其它Actiivty(假设为Activity2)都会被放入其它的Task中,如果存在与Activity2相同affinity的Task,则在该Task内创建Activity2。如果不存在,则重新生成新的Task并入栈。

         以上这些学习都是因为最近在做一个微信调起客户端的事情。如果自己的客户端处于运行状态,按下Home键后台挂起。此时如果使用微信调起自己的客户端某个页面,不做任何处理的情况下,按下回退或者当前Activity.finish(),页面都会停留在自己的客户端(因为自己的Application回退栈不为空),这明显不符合逻辑的。产品的要求是,回退必须回到微信客户端,而且要保证不杀死自己的Application.我的处理方案就是,设置当前被调起Activity的属性为:

LaunchMode=""SingleTask"  taskAffinity="com.tencent.mm"(com.tencent.mm是借助于工具找到的微信包名),就是把自己的Activity放到微信默认的Task栈里面,这样回退时就会遵循“Task只要有Activity一定从本Task剩余Activity回退"的原则,不会回到自己的客户端;而且也不会影响自己客户端本来的Activity和Task逻辑。


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3