ss go 分析總結(1)

2021-08-18 18:15:38 字數 1401 閱讀 6542

ss 有很多版本,我目前接觸了python,c語言版,最後因為研究需要選擇go版本進行分析總結,go語言是乙個非常現代化的語言,精小卻很強大。ss 是基於sock5協議。

人們想到了利用境外伺服器**的方法來繞過 gfw 的過濾,通過**來進行傳輸資料報。其中包含了各種http**服務、socks服務、vpn服務… 其中以 ssh tunnel 的方法比較有代表性

1)    首先使用者和境外伺服器基於 ssh 建立起一條加密的通道

2-3) 使用者通過建立起的隧道進行**,通過 ssh server 向真實的服務發起請求

4-5) 服務通過 ssh server,再通過建立好的隧道返回給使用者

shadowsocks 是將原來 ssh 建立的 socks5 協議拆開成 server 端和 client 端,所以原理基本上和利用 ssh tunnel 大致類似。shadowsocks的優點在於它解決了gfw通過分析流量特徵從而干擾的問題,這是它優於ssh和vpn翻牆的地方。

shadowsocks包含local和server兩個程式, local執行在當前登入想要訪問google的機器上, server執行在牆外的伺服器上。

local監控本地1080埠, 提供socks v5協議介面, 瀏覽器請求和local的1080埠建立tcp連線, 首先進行local端對本機程序進行心跳檢測, 然後與server端建立請求發出實際請求包(目標的位址和埠)。

連線傳輸的資料通過加密,最新的是xchacha  加密。

server端解密收到的資料, 然後與實際請求的目標ip和埠建立tcp連線, 將獲取的資料寫回到local端, local端最終寫回到瀏覽器程序.

總結一下上邊說的過程:

shadowsocks 包括 local 和 server 兩個程式。local 執行在使用者自己的機器上,server 執行在牆外的伺服器上。正常工作模式下,local 通常會監聽本地 1080 埠,提供 socks v5 協議介面。

1.在使用者本機程序和 local 的 1080 埠建立 tcp 連線之後,首先會傳送乙個 hello 包,或者叫 handshake 握手包。

2.local 程式接收到這個包之後,進行簡單的包資料檢查之後就返回乙個確認包。

3.本機程序收到確認的包之後,會再傳送乙個請求包,包的主要內容就是目標服務的位址和埠號。

4.local 程式接收到請求包之後,會和 server 程式建立乙個 tcp 連線,連線建立之後會把上面的目標服務的位址和埠號傳給 server。這個連線是穿牆的關鍵,連線裡面傳輸的資料都是經過加密的。

5.local 程式會對請求包返回乙個確認的包。

6.然後本機程序就開始向 local 傳輸實際的資料,local 接收到之後加密繼續傳給 server。server 接收到之後把資料解密出來,然後和目標服務建立 tcp 連線,並把解密後的資料傳送出去。然後接收資料就是上述的反過來。

電路分析總結1

toc電路分析基礎總結 明確乙個概念 集總引數電路由兩類約束約束,乙個是元件約束,乙個是拓撲約束,約束 電流和電壓間的關係。1.電流 單位時間內通過導體的電荷量 dq dt 2.電壓 單位電荷移動所需或失去的能量 dw dq 單位時間內磁通的變化量 注1關聯 電流從元件的電壓正流向電壓負 注2電流和...

演算法分析(1) 增長數量級分類總結

3 綜述 實現演算法一般使用以下幾種結構性原語 常數級別 對數級別 線性級別 線性對數級別 平方級別 立方級別 指數級別 常見的增長數量級是基礎,與之對應的演算法在演算法分析設計中往往是基礎性的數學模型,讀者可以收藏一下下 感激!常見數量級 與之對應的模型及演算法 常數級別 普通語句,例如普通的加減...

需求分析 1

dfd erd和use case。這是3種常用的需求建模,它們各有其側重點 它們的共同點是 使用圖形化的手段進行描述。圖形化的好處就是元素之間的關係一目了然,避免自然語言描述上的混沌和零散。不要用專業詞彙限制使用者的思維。在座談調研時,乙個很容易發生的情況是 需求調研人員在努力地向客戶解釋 比劃乙個...