android MVP 架构

 

 

参考:

[1] http://huxian99.github.io/2015/12/07/Android-%E5%BA%94%E7%94%A8%E6%9E%B6%E6%9E%84/

[2]http://www.tianmaying.com/tutorial/AndroidMVC

[3]http://android.jobbole.com/81153/

[4]https://github.com/android10/Android-CleanArchitecture

[5]http://www.infoq.com/cn/articles/wechat-android-app-architecture  [微信的架构变化过程,写的太好了]

[6]https://github.com/wequick/Small

[7]http://www.devtf.cn/?p=1083

[8] http://kymjs.com/code/2015/11/09/01 [有例子]

[9]http://keeganlee.me/post/architecture/20160329

[10]http://gold.xitu.io/entry/5703ca7d71cfe4005cee01f3

 

 

 

 

前后端分离架构 [TODO]

  1. 比如:浏览器ajax request -> nodeJS( action api wrapper) -> Java (api)

2.

|        | 浏览器 UI层 |
| 大前端 |      ↑↓     |
|        |  node UI层  |
|        |      ↑↓     |
| ------ | ----------- |
| 后端   | 逻辑+数据    |
|        |             |

 

 

前端: web端   ios端  android端 

后端: java  , python,php ,c,golang 负责写api

前后端进行分离,后期对后端做负载均衡处理

 

 

参考:

[1]http://www.w3ctech.com/topic/1419

[2]https://www.v2ex.com/t/149090  [大神们在14年就可以讨论了]

https://gist.github.com/iahu/7a6d734ee0e6cdfd8509

linux : tcpdump 使用

1. 使用-D参数 ,查看网卡

tcpdump –D
1.eth0
2.eth1
3.any (Pseudo-device that captures on all interfaces)
4.lo

3. 分析三次握手 [TODO]

4. sudo tcpdump i eth0 w dump.pcap

  • -i 指定要抓取的网卡
  • -w 指定结果保存位置
    $ sudo tcpdump -i eth0 -w dump.pcap -v
    tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
    Got 15
    

    -v 主要是为了得到 Got 15 这个数,当想要停止的时候,按下 ctrl + c 就可以了:

    $ sudo tcpdump -i eth0 -w dump.pcap -v
    tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
    ^C71 packets captured
    71 packets received by filter
    0 packets dropped by kernel
    

然后用 sz 命令或其他方式把 dump.pcap 文件下载到本地:

  1. sz dump.pcap

5. 例子:  参考链接[1]

a)tcpdump –i eth0 –c 10
-c参数指定要监听的数据包数量

5. 在 wireshark 中打开

【file】—【open】选中 dump.pcap 文件就可以查看抓包结果了。

open.png

open2.png

顺便说一个查看 http 请求和响应的方法:

view-http.png

http.png

 

6. 混杂模式[TODO]

開啟混雜模式的命令是:ifconfig eth0 promisc

参考:

[1] http://blog.csdn.net/sjin_1314/article/details/8904791  [有例子]

[2] http://www.cnblogs.com/ggjucheng/archive/2012/01/14/2322659.html [很详细,没看完]

 

 

iptables : 命令分析

1. iptables 规则中各参数的含义

-P 代表协议(PROTOCOL)

  • 指明当前规则针对的传输协议(如 TCP、UDP、ICMP 等)
  • 可能的参数值有:tcp, udp, icmp, all
  • 使用 “all” 表示适用于所有协议。而如果在规则中不指定 -p 参数,则默认使用 “all” 参数。一般不使用 “all” 这个值,要么指定某个特定的协议,要么就指定 -p 参数。
  • -p 的参数值既可以用名称(如 tcp)也可以用协议对应的数值(如 6 代表 tcp 协议)
  • /etc/protocols 文件中包含了所有允许的协议名称和相应数值
  • 也可以用长的参数名 –protocol

-S 代表源地址(SOURCE)

  • 指定数据包的源地址
  • 可以是 ip 地址,或者网络地址,或者主机名(hostname)
  • 例如:-s 192.168.1.101 表示针对特定的 ip 地址
  • 对于网络掩码,使用 /mask。例如,“-s 192.168.1.0/24″ 表示网络掩码为 255.255.255.0 的所有 192.168.1.x 地址都匹配。
  • 如果不指定 -s 参数,默认匹配所有源地址
  • 也可以用长参数名 –src 或者 –source

-D 代表目的地址(DESTINATION)

  • 指定数据包的目的地址
  • 使用方式与上面的 “-s” 一样(不同之处仅在于 -s 指源,而 -d 表示目的地址)
  • 也可以用长参数名 –dst 或者 –destination

-J 代表跳转(TARGET)

  • j 的意思是 “jump”(跳转) 到目标
  • 指定当某个数据包满足该规则的时候的就跳转到的下一个处理规则,而不再顺序执行后面的规则判断
  • 可能的值有:ACCEPT, DROP, QUEUE, RETURN,分别表示接受、丢弃、进入队列,返回(跳出,通常是从某个 chain 中跳回到调用该 chain 的上层 chain)
  • 也可以跳转到某个自定义的 chain 中,使用该 chain 的名称做为跳转目标

-I 代表 IN INTERFACE(入站接口)

  • i 表示 “input interface”(输入接口,即,指定网络数据处理的网卡,一般 eth0 即表示第一块有线网卡的外网接口,lo 表示局域网接口)
  • 可以直接理解为 “-i” 表示接口。不过,-i 和 -o 都表示接口,-i 表示输入时的接口,而 -o 特指输出用的接口。
  • 指定数据包进入 INPUT、FORWARD 和 PREROUTING 链时经由的接口。
  • 例如:-i eth0 表示该规则应该针对从 eth0 接口进来的数据包。
  • 如果不指定 -i 参数,则经由系统中所有可用的接口进入的数据包都可以匹配该规则。
  • 也可以使用长参数 –in-interface

-O 代表 OUT INTERFACE(出站接口)

  • o 表示 “output interface”(出站经由接口)
  • 指定发送出去的数据包进入 INPUT、FORWARD 和 PREROUTING 链时经由的接口。
  • 如果不指定 -o 参数,则经由系统中所有可用的接口发出的数据包都可以匹配该规则。
  • 也可以使用长参数 –out-interface

 

2. 其它防火墙参数选项

上面某些防火墙参数还有属于它自己的参数选项,可以与其配合使用。下面是一些常用的选项。

要使用这些参数选项,需要指定相应的参数,例如,要使用 “–sport” 选项,应该在规则中指定 “-p tcp” (或者 “-p udp”)等参数。

注意:所有这些选项前面都是 –(2个短横线 – )。

–SPORT 表示 SOURCE PORT (源端口,用于 -P TCP, 或者 -P UDP)

  • 默认匹配所有端口(未特别指定时)
  • 可以指定端口号(数字),也可以指定端口名称。例如,默认的 SSH 端口号码为 22,名称为 ssh,可以表示为 “–sport 22″ 或者 “–sport ssh”。
  • /etc/services 文件包含了所有允许的端口名称和对应的端口号码。
  • 在规则中使用号码比使用名称要好(效率高些)
  • 要匹配一个端口范围,使用英文半角冒号(:),如 22:100 匹配从 22 到 100 的所有端口号。
  • 也可以使用长名称 –source-port

–DPORT 表示 DESTINATION PORT (目的端口,-P TCP, 或者 -P UDP)

  • 与 –sport 的用法相同,区别仅在于对象是目的端口
  • 也可以使用长名称 –destination-port

–TCP-FLAGS 表示 TCP FLAGS (用于 -P TCP)

  • 可以使用英文半角逗号(,)来指定多个 TCP 状态标识
  • 可能值有:SYN, ACK, FIN, RST, URG, PSH。可以全用,也可以不用。

–ICMP-TYPE 表示 ICMP TYPE (ICMP 类型,用于 -P ICMP)

  • 当使用 icmp 协议 “-p icmp” 的时候,可以使用 “–icmp-type” 特别指定 ICMP 类型
  • 例如,使用 “–icmp-type 0″ 表示 “Echo Reply”,“–icmp-type 8″ 表示 “Echo”。

 

 

参考:

[1]http://blog.csdn.net/reyleon/article/details/12976341  [详细]

[2]https://cnzhx.net/blog/common-iptables-cli/      [详细]

[3]http://man.linuxde.net/iptables