目的
本文依據參考文獻中的資料,來利用chromium源碼編譯出quic_server和quic_client, 并依靠它們來發送QUIC協定請求,了解QUIC互動的細節。
前提
必須能夠流暢地翻牆下載下傳chromium等項目代碼
下面是實操記錄
項目目錄存放在
cd ~/program_develop/quic_dev
最後的目錄結構在這裡提前說明一下
下載下傳chromium項目源碼
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
在~/.bashrc中添加
export PATH="$PATH:這裡為depot_tools的路徑"
更新配置
source ~/.bashrc
mkdir chromium && cd chromium
fetch --nohooks chromium
chromium項目源碼大約9.91G,這一步根據網速快慢可能需要花費較長時間,我這裡大約40分鐘左右吧
編譯出quic_server和quic_client
cd src
sudo build/install-build-deps.sh
或者
sudo build/install-build-deps.sh --no-chromeos-fonts
這兩個指令都下載下傳失敗,但是都沒有啥影響
gclient runhooks
gn gen out/Default
ninja -C out/Default quic_server quic_client
此時我們已經得到quic_server和quic_client
準備測試網頁及證書
mkdir -p ~/program_develop/quic_dev/quic-data
cd ~/program_develop/quic_dev/quic-data
wget -p --save-headers https://www.example.org
cd www.example.org
vim index.html
在header裡加上X-Original-Url: https://www.example.org/
行末的^M使用Ctrl+V,Ctrl+M實作
cd ~/program_develop/quic_dev/chromium/src
cd net/tools/quic/certs
./generate-certs.sh
cd -
生成的證書在下面的目錄
在浏覽器中添加證書
然後打開chrome浏覽器(我在Ubuntu 16.04上安裝的版本是63),在位址欄裡輸入chrome://settings/search#ssl 然後選擇 授權中心,點選導入 ,将net/tools/quic/certs/out/2048-sha256-root.pem導入 ,最後勾選第一項,确定即可
開啟QUIC的server和client,請求準備好的網址
下一步就是跑server,開啟指定端口監聽
./out/Default/quic_server \
--quic_response_cache_dir=/home/taoyx/program_develop/quic_dev/quic-data/www.example.org \
--certificate_file=net/tools/quic/certs/out/leaf_cert.pem \
--key_file=net/tools/quic/certs/out/leaf_cert.pkcs8 \
--port=6121 \
--v=1
這裡明确指定端口号6121,使用--v=1開啟更多的調試資訊
然後是啟動Client,采用QUIC協定來發送請求和接收響應
./out/Default/quic_client --host=127.0.0.1 --port=6121 https://www.example.org/
然後,根據互動細節來了解QUIC協定,并閱讀QUIC實作的相關代碼。
參考文獻
[1].http://blog.csdn.net/Claranc/article/details/79062260
[2].http://blog.csdn.net/dxpqxb/article/details/76819992