在Linux系統中,如果在下載東西的話瀏覽網頁就會變得非常卡,這時就需要對下載網速進行一定的限制,而Trickle就是一款很好的寬帶控制工具,下面小編就給大家介紹下Linux安裝使用Trickle的方法。
Linux如何安裝和使用Trickle
Trickle 是什么?
Trickle是一款帶寬控制供給,用來限制如Firefox, FTP , SSH以及其他使用網絡帶寬的程序的帶寬。你希望你的Youtube音樂體驗影響到你的ftp下載么?如果不想,請繼續閱讀這篇文章,學習如何在你的機器上安裝和使用trickle。
怎樣在Linux上安裝Trickle
trickle工具有一些依賴包,安裝和使用trickle之前必須安裝“libevent 庫”,不過這個庫在大多數現在的Linux機器上已經默認安裝。
在 Debian/Ubuntu/Linux Mint 上
在Debian/Ubuntu/Mint 機器上運行 apt-get install trickle進行安裝。請確保源列表已經更新,接著安裝你想要的應用。
$ sudo apt-get update
$ sudo apt-get install trickle
在 RHEL/CentOS/Fedora 上
首先你需要更新系統,然后使用下面的命令安裝trickle。
# yum update
# yum install trickle
Trickle如何工作?
Trickle通過控制socket數據讀寫量來控制和限制應用的上傳/下載速度。它使用另一個版本的BSD套接字API,但是區別是trickle還管理socket調用。
要注意的是trickle使用動態鏈接和加載,所以它只對于使用“Glibc庫”的程序有用。由于trickle可以設置數據在socket上的傳輸延遲,所以它可以用來限制一個應用的網絡帶寬。
Trickle不能做什么?
Trickle不能用于限制使用UDP協議的應用的帶寬,它只可用于TCP連接,但是你要知道它也并不是對所有的TCP連接有效。如果你一直仔細地看這篇文章,你可以猜到原因是什么。你還記得trickle只對使用Glibc庫應用有效吧?
還要說一下,trickle無法工作在使用靜態鏈接的可執行程序上。
確定Trickle是否可運行在某個特定應用上
既然trickle無法限制每個應用的上傳/下載速度,就應該有個方法找出trickle可以工作的應用。
ldd工具可以幫我們找出某個特定的程序是否使用了libc.so庫。如果程序使用了這個庫,就可以使用trickle來限制它的網絡帶寬使用。
# man ldd
Filezilla是一款使用ftp協議傳輸文件的程序,trickle可以用來限制它的下載或者上傳速度么?在你考慮的時候,我使用以下的命令來找出trickle是否可用于filezilla。
# ldd filezilla | grep libc.so
就我而言,它輸出了如下:
oltjano@oltjano-X55CR:/usr/bin$ ldd filezilla | grep libc.so
libc.so.6 =》 /lib/i386-linux-gnu/libc.so.6 (0xb6bc4000)
既然filezilla使用了“libc.so”庫,那么trickle可以用來限制它的網絡帶寬。這個方法可以用在任何你感興趣的程序上。
學習如何使用Trickle
使用下面的命令輸出trickle工具的版本。
root@oltjano-X55CR:~# trickle -V
trickle: version 1.07
Linux有很多命令行工具使測試(實驗)變得有趣和美麗。下面的命令使用wget 工具來下載最新的Pear OS鏡像。
時隔 3 年,重新接觸了移動端 h5 頁面開發,上一次還是大四實習。這一次是 hybrid 開發,涉及到 h5 頁面與原生 app 的交互,h5 頁面需要與原生打通登錄態,以及調用原生app 的接口,比如調用原生相機進行二維碼掃描。跟買粉絲小程序開發不同,本地開發時買粉絲有提供買粉絲開發者工具,可以本地模擬調用而我這邊需要每次都打包靜態文件,上傳服務器才能調試,非常麻煩。
能不能在原生 app 加載線上 h5 時,跑本地的代碼呢?答案是可以的,通過抓包工具比如 whistle 就可以做到攔截線上頁面請求數據,再響應本地代碼,本文主要講述抓包的原理和抓包工具 whistle 使用。
1. 抓包的原理
1.1 什么是抓包?
抓包就是將網絡傳輸發送與接收的數據包進行截獲、重發、編輯、轉存等操作,通過抓包可以:
分析網絡問題
業務分析
分析網絡信息流通量
網絡大數據金融風險控制
探測企圖入侵網絡的攻擊
探測由內部和外部的用戶濫用網絡資源
探測網絡入侵后的影響
監測鏈接互聯網寬頻流量
監測網絡使用流量(包括內部用戶,外部用戶和系統)
監測互聯網和用戶電腦的安全狀態
滲透與欺騙
...
回顧下計算機網絡知識,數據在網絡上是以很小的幀的單位傳輸的,幀通過特定的稱為網絡驅動程序的程序進行成型,然后通過網卡發送到網線上,通過網線到達目的機器,在目的機器的一端執行相反的過程。接收端機器的以太網捕獲到這些幀,并告訴操作系統幀已到達,然后對其進行存儲。在這個傳輸和接收的過程,就可以使用抓包工具(Sniffers)進行抓包,作為前端開發者,通常是抓取應用層的 HTTP/HTTPS 的包。

1.2 HTTP/HTTPS 抓包原理
HTTP/HTTPS 是應用層使用的通信協議,常見的應用層體系結構是客戶端-服務器體系。
對運行在不同端系統上的客戶端程序和服務端程序是如何互相通信的么?實際上,在操作系統上的術語中,進行通信的實際上是進程而不是程序,一個進程可以被認為是運行在端系統中的一個程序。
在 web 應用程序中,一個客戶瀏覽器進程與一臺服務器進程進行會話交換報文。
瀏覽器進程需要知道接收進程的主機地址,以及定義在目的主機中的接收進程的標識符,也就是目的端口。
多數應用程序由通信進程對組成,每對中的兩個進程互相發送報文。進程通過一個稱為套接字的軟件接口向網絡發送報文和從網絡接收報文。
進程可以類比一座房子,而它的套接字可以是它的門,套接字是應用層與運輸層之間的端口。

知道了兩個進程的通信流程,我們要怎么抓包呢?舉一個生活中的例子,小明暗戀小雯,于是他寫了一封情書,但他有點害羞,找了小雯的好朋友小花幫忙傳遞情書。這個時候,小花可以負責小雯與小明之間的情書傳遞,作為中間人,她可以偷偷查看他們的情書內容。
思路就是設置一個中間人進程負責抓包,每次目標進程之間的會話都先與中間人進程通信,再進行轉發。

1.2.1 HTTP 抓包原理
在 買粉絲 標準中,沒有對通信端身份驗證的標準。對于服務器來說,它接收的 HTTP 請求報文只要格式符合規范,就發送響應報文。
對于客戶端來說也是如此,它無法校驗服務器的身份,比如它連接的 買粉絲://買粉絲.jecyu.買粉絲 的主機,但由于中間節點的存在,最終連接的可能是 買粉絲://買粉絲.jerry.買粉絲 的主機。
因此,對于 HTTP 抓包,無需做過多的處理,只需要讓中間人負責轉發客戶端和服務端的數據包。
1.2.2 HTTPS 抓包原理
HTTP 是明文傳輸,容易受到中間人攻擊,不安全。
HTTPS 語義仍然是 HTTP,只不過是在 HTTP 協議棧中 買粉絲 與 tcp 之間插入安全層 SSL/TSL。
安全層采用對稱加密的方式加密傳輸數據和非對稱加密的方式來傳輸對稱密鑰,解決 買粉絲 數據沒有加密、無法驗證身份、數據容易纂改三個核心問題。
HTTP + 加密 + 認證 + 完整性保護 = HTTPS
其中驗證身份問題是通過驗證服務器的證書來實現的,證書是第三方組織(CA 證書簽發機構)使用數字簽名技術管理的,包括創建證書、存儲證書、更新證書、撤銷證書。

瀏覽器連接至一個 HTTPS 網站,服務器發送的不僅僅只是服務器實體證書,而是一個證書鏈,但不包含根證書,根證書會被內嵌在 Windows, Linux, macOS, Android, iOS 這些操作系統里。

其中校驗證書分為兩步,證書的簽發者校驗和服務器實體證書校驗
1、證書鏈校驗:
1.1 瀏覽器從服務器實體證書的上一級證書(比如 B 證書)獲取公鑰,用來校驗服務器實體證書的簽名(簽名是通過 CA 機構的私鑰簽名的),校驗成功則繼續,否則證書校驗失敗。
1.2 瀏覽器從 B 證書的上一級證書(比如 C 證書)獲取公鑰,用來校驗 B 證書的簽名,
校驗成功則繼續,否則證書校驗失敗。
1.3 瀏覽器迭代校驗每張證書的簽名,最后會找到自簽名的根證書(簽發者和使用者是同一個人),由于瀏覽器已經集成了根證書,可以充分信任根證書的公鑰,完成最后的簽名。
2、服務器實體證書校驗:訪問的域名信息是否與證書一致、日期、證書擴展校驗等。
了解完證書校驗后,我們來看看具體的 買粉絲s 通信流程:
首先是 tcp 的三次握手建立連接
接著是非對稱加密的握手過程
client 發送隨機數 random1 + 支持的加密算法集合
server 收到信息,返回選擇的一個加密算法+ 證書 (包含S_公鑰) + random2
client 驗證證書有效性,并用 random1 + random2 生成 pre-master-secure,通過服務端公鑰加密發送給 server
server 收到 pre-master-secure,根據約定的算法使用S_私鑰對 pre-master-secure 解密,
然后用加密算法生成 master-secure(對稱加密的密鑰),然后發送給 client
client 收到生成的 master-secure,對稱加密密鑰傳輸完畢
最后,就可以使用 master-secure 進行真正的數據對稱加密傳輸。
中間人想要抓包,需在 HTTPS 加密通信之前:
截取客戶端發送的包含證書的報文,偽裝成服務端,把自己的證書發給客戶端,然后拿到【客戶端返回的包含對稱加密通信密鑰的報文】,生成中間人與客戶端對稱加密的密鑰。<
2024-07-09 14:20
2024-07-09 13:43
2024-07-09 13:29
2024-07-09 12:30
2024-07-09 12:12
2024-07-09 12:09