2018/05/15

MQTT 的文件


https://swf.com.tw/?p=1002


幾個重點整理:

提供三種訊息傳送服務的QoS
QoS0:At most once 最多一次
QoS1:At least once 至少一次
QoS2:Exactly once 確保一次

減少封包傳送時的負擔,同時減少網路所需之頻寬

Last Will and Testament(最後遺囑) 機制
主題萬用字元(Topic Wildcard Characters)
 

CONNECT
當Client(客戶端)對Broker建立起TCP/IP socket連線時,需傳送Message Type為CONNECT的訊息,Broker端會回傳Message Type為CONNACK的確認訊息。
 
DISCONNECT
DISCONNECT訊息被傳送至Broker,表示需要關閉TCP/IP連線,若在連線時設置Clean Session,Broker清除此Client連線時所有的設定,包括訂閱的主題。

PUBLISH
Publish訊息會因為所使用的QoS有不同的工作流程。若QoS設置為0,訊息會透過底層的TCP/IP連線傳輸訊息,並不預期有任何的回應,也不會重新傳送,故訊息可能傳送至Broker 一次,或是沒有傳送成功。

PING
在TCP/IP的連線中會在一固定時間傳送一心跳值確保其連線的暢通,MQTT通訊協議中以PINGREQ訊息傳送至Broker確保連線狀態,Broker回傳PINGRESP訊息回覆Client此連線是否正常。



ref:
https://zh.wikipedia.org/wiki/MQTT
https://swf.com.tw/?p=1002
http://designer.mech.yzu.edu.tw/articlesystem/article/compressedfile/(2016-07-15)%20%E7%AC%AC%E4%B8%89%E7%AB%A0%20MQTT%E9%80%9A%E8%A8%8A%E5%8D%94%E8%AD%B0.aspx?ArchID=2621

2018/04/29

VPN 目前還可以用的翻牆技術及歷史技術手段



* VPN部份可用
AnyConnect
OpenVPN

* CDN方式 Lantern、FireFly、Tor Browser – Meek

* 新的主流
https://toutyrater.github.io/prep/install.html  V2Ray
Shadowsocks、V2Ray、ShadowsocksR、ShadowsocksRR

* 之前翻牆的歷史技術篇
https://blog.yandere.moe/moe/gfw-vs-proxy/97.html  墙与梯的较量——那些年我们一起用过的翻墙手段


2018/04/24

[案例]BUG經過時間的演化,它就成為了功能


講一個程序員在1970年左右犯的錯誤 ,
它把 Unix 的 system call 拼成 creat() 以至於
到現在只要用的 file 的 creat 都會用到這個函式
然後有人問它, 如果有機會重新系統你想要有哪些不一樣,它回答「I'd spell creat with an e.」
然後2009.11.10 的時候 Ken Thompson 在 go-lang 的上面, 修正了這個錯誤. 足足經過了約 40 年

#標準美東時間是UTC -05 夏令美東時間是UTC -04
#系統使用 UTC -04 那冬天的時候帳務就會出錯了呀!!!
#我其實是要講美東時間當算帳基準這個ISSUE,所以這個 ISSUE 就成為了功能的一環

ref:
https://en.wikiquote.org/wiki/Ken_Thompson wiki 有記載
http://www.di.uevora.pt/~lmr/syscalls.html unix system call
https://coolshell.cn/articles/1761.html  故事完整的始末
kevinwatt.net 參考來源(人還在,blog已消失因為老闆太忙沒更新)



2018/03/01

memcached UDP 放大攻擊之亂--Centos7 關閉UDP及只綁定127.0.0.1


昨晚機器流量異常....爆增流量




* 十小時前的新聞
https://www.ithome.com.tw/news/121543
"Majkowski建議不使用UDP的Memcached用戶應直接關閉該通訊埠,或確保自己的Memcached伺服器受到防火牆的保護,也提醒開發人員最好不要使用UDP,就算不得不用,也不應預設為啟用狀態,並應嚴格限制回應封包的大小,以免成為駭客執行DDoS攻擊的幫兇。"

* 七小時前的新聞
https://www.networkworld.com/article/3258772/security/memcached-servers-can-be-hijacked-for-massive-ddos-attacks.html

* memcached 伺服器參數 ConfiguringServer
https://github.com/memcached/memcached/wiki/ConfiguringServer#commandline-arguments

* 看一下啟動程序怎麼寫的
[root@dev ~]# more /usr/lib/systemd/system/memcached.service
...SKIP 略...
[Service]
Type=simple
EnvironmentFile=-/etc/sysconfig/memcached
ExecStart=/usr/bin/memcached -u $USER -p $PORT -m $CACHESIZE -c $MAXCONN $OPTIONS
...SKIP 略...

* 看來改一下 memcached 的 OPTIONS 就可以
* -l 參數可以指定接收的 interface
* -U 可以關閉 UDP port
[root@dev ~]# cat /etc/sysconfig/memcached
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS="-l 127.0.0.1 -U 0"

* 重新啟動
[root@dev ~]# systemctl restart memcached.service

* 檢查 netstat 看看是否只剩下 127.0.0.1:11211 的
[root@dev ~]# netstat -tnulp | grep mem
tcp        0      0 127.0.0.1:11211         0.0.0.0:*               LISTEN      12810/memcached