1. 程式人生 > >在Ubuntu 16.04.3 LTS上搭建QUIC互動demo

在Ubuntu 16.04.3 LTS上搭建QUIC互動demo

目的
本文依據參考文獻中的資料,來利用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